我试图在xsl中使用for each返回一个总数。例如,在一个实例中,有8次迭代或car_types,我想返回$car_types[0]+$car_types[1]+$car_types[2]+$car_types[3]的总数。。。等等。有人知道如何做到这一点吗?谢谢
<xsl:for-each select="$car_types">
<xsl:variable name="counter" select="position()"/>
<xsl:value-of select="count(/webpage/results/cars/*[type = $car_types[$counter]])" />
</xsl:for-each>
使用存储主文档
<xsl:variable name="main-doc" select="/"/>
在for-each
之外,则可以使用
<xsl:for-each select="$cart_types">
<xsl:value-of select="count($main-doc/webpage/results/car/*[type = current()])"/>
</xsl:for-each>
这假设$cart_types
包含不同于主输入文档的文档中的节点。它假设您的路径是正确的,如图所示,您必须显示一个输入样本才能告诉我们。
尝试:
<xsl:value-of select="count(/webpage/results/cars/*[type = $car_types])" />
只需使用:
count(/webpage/results/cars/*[type = $car_types])
以上表示:
给我所有/webpage/results/cars
的所有子元素的计数,其类型是$car_types
中包含的类型之一
阅读更多关于XPath通用相等运算符的语义此处和这里。