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

Popular posts from this blog

How do you change vbulletin's home page to the forums instead of the default (CMS or Activity Stream)? -

c++ - Troubles when compiling phash program -