Mon xml ressemble à ceci :
<units>
<unit>
<unitnum></unitnum>
<Year></Year>
<Qty></Qty>
</unit>
</units>
Je crée une clé pour capturer toutes les années possibles. Comme ceci :
<xsl:key name="yr" match="//Year/text()" use="." />
Ensuite, j'effectue une boucle "for-each" à travers les clés pour obtenir des années uniques. Mon objectif final est d'additionner les quantités comme suit :
<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>
Pour une raison quelconque, mon résultat ressemble à ceci :
2010 - sum - 0
2011 - sum - 0
2012 - sum - 0
Mais ce que je veux, c'est que ces 0 soient la somme réelle des quantités pour chaque année.
Je pense qu'il y a un problème avec le prédicat [Year=$varjobyear], mais je n'arrive pas à trouver ce que c'est. J'ai également essayé [Year=string($varjobyear)] et [Year=number($varjobyear)].
Qu'est-ce que je fais de travers ? Merci de votre compréhension.