xml - How to calculate sum of nodes, with different number format in xsl? -
i have following xml structure:
<example> <data> <numberger>3,40</numberger> </data> <data> <numberger>7,40</numberger> </data> <data> <numberger>17,40</numberger> </data> </example>
i need sum of "numberger" nodes. formatting of number problem. because of use of "," function "sum" produces error. sum(//numberger) not work. can use xslt 2.0 functions.
i think need write recursive template, takes computed value , list of nodes.
something like:
<xsl:template name="addgernumbers"> <xsl:param name="number"/> <xsl:param name="nodes"/> <xsl:choose> <xsl:when test="$nodes"> <xsl:variable name="recursive_result"> ... <xsl:call-template name="addgernumbers"> ... </xsl:call-template> </xsl:variable> <xsl:value-of select="$number + $recursive_result"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="0"/> </xsl:otherwise> </xsl:choose> </xsl:template>
at end need single value result.
how xpath sum() previous nodes in xsl for-each loop? not work me, because need single number @ end.
a single xpath 2.0 expression enough:
<xsl:value-of select="sum( $i in //numberger return number(translate( $i, ',','.') ) )"/>
the for
loop translate each value replace commas dots, convert them numbers. returns sequence of numbers can sum normally.
Comments
Post a Comment