【问题标题】:XSL For-each Total CountXSL For-each 总计数
【发布时间】:2016-09-15 04:10:35
【问题描述】:
我正在尝试在 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>
【问题讨论】:
标签:
xml
for-loop
xslt
web
xslt-1.0
【解决方案1】:
存储主文档
<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 包含来自不同于主要输入文档的文档的节点。它假设您的路径是正确的,如图所示,您必须显示一个输入样本以便我们判断。
【解决方案2】:
试试:
<xsl:value-of select="count(/webpage/results/cars/*[type = $car_types])" />
【解决方案3】:
只需使用:
count(/webpage/results/cars/*[type = $car_types])
以上意思:
给我所有/webpage/results/cars的所有子元素的计数,其类型是$car_types中包含的类型之一
阅读更多关于 XPath 一般相等运算符 here 和 here 的语义。