我的 xml 看起来像这样:
<units>
<unit>
<unitnum></unitnum>
<Year></Year>
<Qty></Qty>
</unit>
</units>
我创建了一把钥匙来捕捉所有可能的年份。像这样:
<xsl:key name="yr" match="//Year/text()" use="." />
然后我 for-each 循环遍历键以获得唯一的年份。我的最终目标是像这样总结数量:
<xsl:for-each select="//Year/text()[generate-id()=generate-id(key('yr',.)[1])]">
<li>
<xsl:variable name="varjobyear" select="."/>
<xsl:value-of select="$varjobyear"/> - sum -
<xsl:value-of select="sum(//unit[Year=$varjobyear]/Qty)"/>
</li>
</xsl:for-each>
出于某种原因,我的输出如下所示:
2010 - sum - 0
2011 - sum - 0
2012 - sum - 0
但我想要的是那些 0 是每年数量的实际总和。
我最好的猜测是谓词 [Year=$varjobyear] 有问题,但我不知道它是什么。我也试过 [Year=string($varjobyear)] 和 [Year=number($varjobyear)]。
我究竟做错了什么?谢谢!