Переменная, передаваемая в шаблон, изменяется - PullRequest
0 голосов
/ 15 февраля 2012
<xsl:param name="currentPage"/>

<xsl:param name="group-size" select="'2'" />

<xsl:template match="/">

<xsl:variable name="userBlogSource" select="umbraco.library:GetXmlNodeById(umbraco.library:GetDictionaryItem('WeblogNode'))/node [string(data [@alias='umbracoNaviHide']) != '1' and data[@alias='author'] = $currentPage/@id]" />
<xsl:for-each select="$userBlogSource">
  <xsl:sort select="data[@alias='dato']" order="descending" />
</xsl:for-each>

<xsl:if test="count($userBlogSource) &gt; 0">

  <h3><xsl:value-of select="umbraco.library:GetDictionaryItem('BlogpostsWrittenBy')"/>&nbsp;<xsl:value-of select="$currentPage/@nodeName" />:</h3>

  <xsl:apply-templates select="$userBlogSource[(position() mod $group-size) = 1]" />

  <ul>
    <xsl:for-each select="$userBlogSource">
      <li>
        <a rel="bookmark" href="{umbraco.library:NiceUrl(@id)}" title="{@nodeName}">
          <xsl:value-of select="@nodeName" />
        </a>
      </li>
    </xsl:for-each>
  </ul>

</xsl:if>

</xsl:template>

<xsl:template match="node">
  <xsl:variable name="postnum" select="position()" />
  <div class="weblog-posts-wrap">
    <ul>

      <xsl:for-each select=". | following-sibling::node[position() &lt; $group-size]">
        <li>
          <a rel="bookmark" href="{umbraco.library:NiceUrl(@id)}" title="{@nodeName}">
            <xsl:value-of select="@nodeName" />
          </a>
        </li>
      </xsl:for-each>

    </ul>
  </div>
</xsl:template>

Когда я проверяю счетчик $ userBlogSource, он содержит три элемента. Когда я пытаюсь напечатать в обычном цикле XSLT for, он печатает правильные элементы. Но когда переменная передается второму узлу, соответствующему шаблону, содержимое неожиданно меняется. Вместо трех узлов, которые он должен содержать, он содержит 4 узла совершенно разных авторов.

Есть идеи, что я могу делать не так?

...