This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: sum function


You said already the solution. Numbers may not be written with ',' in XSLT. 
If you definitely want the ',', you must wrote a stylesheet with recursive 
templates, which removes the ',' while adding this value to temporary sum.

This problem we had a few days ago on the XSLTalk-list. I gave following 
solution:

<xsl:template match="amounts">
<xsl:variable name="sum">
<xsl:apply-templates select="amount[1]"/>
</xsl:variable>
<xsl:value-of select="$sum"/>
</xsl:template>

<xsl:template match="amount">
<xsl:param name="sum" select="0"/>
<xsl:apply-templates select="following-sibling::amount[1]">
<xsl:with-param name="sum" select="$sum + number(substring-after(.,'&#xA3;'))"/>
</xsl:apply-templates>
<xsl:if test="not(following-sibling::amount[1])">
<xsl:value-of select="$sum + number(substring-after(.,'&#xA3;'))"/>
</xsl:if>
</xsl:template>

You must only replace the 'amount' by 'Amount' and the 
'substring-after(.,'&#xA3;')' by 'translate(.,',','')'.

Hope this helps,

Joerg

Hesselberth, Jan wrote:

> How do I use the sum function on xml such as:
> 
> <Amount>12,345.12</Amount>
> <Amount>132,345.12</Amount>
> <Amount>2,345.12</Amount>
> 
> If I use Total Price = <xsl:value-of select="sum(//Amount)"/> I get the
> result NaN. However, if the data does not contain ',' the sum works
> correctly.
> Any help appreciated.
> Regards
> 	Jan

-- 

System Development
VIRBUS AG
Fon +49(0)341-979-7435
Fax +49(0)341-979-7409
joerg.heinicke@virbus.de
www.virbus.de


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]