Reputation: 191
For each value of the node parent, I want to sum the related element values. In the below example, I am expecting to have 3 results : 30 for the first parent, 50 for the second and 0 for the 3rd parent as it has no parent value. can you help me getting this result please and rectify my code ? :
Example file :
<root>
<parent>
<parentValue>Val1</parentValue>
<element>
<elementname>A</elementname>
<elementvalue>10</elementvalue>
</element>
<element>
<elementname>A</elementname>
<elementvalue>20</elementvalue>
</element>
</parent>
<parent>
<parentValue>Val2</parentValue>
<element>
<elementname>B</elementname>
<elementvalue>50</elementvalue>
</element>
</parent>
<parent>
<element>
<elementname>C</elementname>
<elementvalue>60</elementvalue>
</element>
</parent>
</root>
Code :
<xsl:template match="/">
<xsl:for-each select="/root/parent/parentValue">
<xsl:variable name="result">
<xsl:value-of select="sum(elementvalue)" />
</xsl:variable>
</xsl:for-each>
Upvotes: 0
Views: 56
Reputation: 167696
Set up two templates
<xsl:template match="parent[parentValue]">
<xsl:value-of select="sum(element/elementvalue)"/>
</xsl:template>
<xsl:template match="parent[not(parentValue)]">0</xsl:template>
https://xsltfiddle.liberty-development.net/b4GWVn
Or a single one
<xsl:template match="parent">
<xsl:value-of select="sum(.[parentValue]/element/elementvalue)"/>
</xsl:template>
https://xsltfiddle.liberty-development.net/b4GWVn/1
Upvotes: 1