如何在XSLT模板中增加变量?

时间:2011-08-27 15:01:40

标签: xslt

这里简要介绍我面临的问题:

我已经构建了一个自定义内容查询webpart,我用列表中的项填充了这个CQWP。我想做的是每3个项目都有一个特殊的分隔符。

如何告诉XSLT当前项目是第3项,第6项还是第9项,因此必须放置分隔符?

我想到的是在itemstyle.xsl中做类似的事情:

<xsl:variable name="increment" select="0"/>
<xsl:template>
<xsl:with-variable name="increment" select="$increment+1"/>
<xsl:if increment = multiple de 3>
-put a separator-
</xsl:if>
</xsl:template>

但似乎全局变量不能以这种方式使用。因此,我的第二个想法是得到相应项目的“行号”的排序,以获得相同的信息。

有人知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

XSLT不会进行破坏性更新。因此,您无法为变量赋值,然后稍后使用新值覆盖变量。

在您的情况下,您可以使用带模数算术的position()函数:

<xsl:for-each select="*">
  <!-- normal processing here -->
  <xsl:if test="position() mod 3 = 0">
    <!-- separator here -->
  </xsl:if>
</xsl:for-each>