Re: [xsl] sum partial of the text

Subject: Re: [xsl] sum partial of the text
From: Mukul Gandhi <gandhi.mukul@xxxxxxxxx>
Date: Wed, 5 Oct 2005 21:06:10 +0530
Please try this XSLT 1.0 stylesheet. It uses a recursive named
template as suggested by Mike. Mike has given you all the options.

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
version="1.0">

<xsl:output method="text" />

<xsl:template match="/segment">
   <xsl:call-template name="sum">
     <xsl:with-param name="list" select="data" />
     <xsl:with-param name="result" select="0" />
   </xsl:call-template>
</xsl:template>

<xsl:template name="sum">
   <xsl:param name="list" />
   <xsl:param name="result" />

   <xsl:choose>
     <xsl:when test="$list">
       <xsl:call-template name="sum">
         <xsl:with-param name="list" select="$list[position() &gt; 1]" />
         <xsl:with-param name="result" select="$result +
substring($list[1],7,4)" />
       </xsl:call-template>
     </xsl:when>
     <xsl:otherwise>
       <xsl:value-of select="$result" />
     </xsl:otherwise>
   </xsl:choose>
</xsl:template>

</xsl:stylesheet>

Regards,
Mukul


On 10/5/05, piming.kuo@xxxxxxxxxxxxx <piming.kuo@xxxxxxxxxxxxx> wrote:
>
> Is there any wavy to sum partial of the text? For example, I want to sum
> all substring(data,7,4) from the following:
>
> <segment>
>      <data>XXXYYY1000</data>
>      <data>XXXZZZ 100</data>
>      <data>SSSYYY1200</data>
> </segment>
>
> The result will be:
> 1000 + 100 + 1200 = 2300
>
> Have a nice day!
>
> Piming Kuo

Current Thread