This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: sum function
- From: Jörg Heinicke <joerg dot heinicke at gmx dot de>
- To: xsl-list at lists dot mulberrytech dot com
- Date: Fri, 16 Nov 2001 18:51:53 +0100
- Subject: Re: [xsl] sum function
- References: <4F213CE9D4A5D411B45D00508B6D701E0276D7E6@sv_nt_gos41>
- Reply-to: xsl-list at lists dot mulberrytech dot com
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(.,'£'))"/>
</xsl:apply-templates>
<xsl:if test="not(following-sibling::amount[1])">
<xsl:value-of select="$sum + number(substring-after(.,'£'))"/>
</xsl:if>
</xsl:template>
You must only replace the 'amount' by 'Amount' and the
'substring-after(.,'£')' 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