在for循环中,XSLT获取总计数

时间:2016-03-09 20:55:39

标签: html xml xslt

我在我的for循环中

<xsl:for-each select="Alerts/AlertItem">

<xsl:value-of select="position()" />

获取当前位置,索引。所以每次给我1,2和3假设有3个项目。

在这个for循环中,我如何获得3的总数?而不是指数?

在for循环之前我可以得到它:

<xsl:value-of select="count(descendant::AlertItem[Code='2'])" />

但在循环内我尝试过:

<xsl:value-of select="count(parent::AlertItem[Code='2'])" />
<xsl:value-of select="count(ancestor::AlertItem[Code='2'])" />
<xsl:value-of select="count(AlertItem[Code='2'])" />

全部返回0

2 个答案:

答案 0 :(得分:1)

您可以计算前一个兄弟节点(或之前节点)。不知道为什么你需要这个,它效率不高。

另请注意,last()函数将返回当前处理的节点集的总计数(总体而言,不取决于当前处理的节点的位置)。

答案 1 :(得分:0)

for-each指令之前,使用所需信息定义变量:

<xsl:variable name="total-count" select="count(Alerts/AlertItem)"/>
<xsl:for-each select="Alerts/Alertitem">
  <xsl:message>Now processing item <xsl:value-of select="position()"/>
    of <xsl:value-of select="$total-count"/>
   ...       
</xsl:for-each>