xsl-list
[Top] [All Lists]

Re: sum partial of the text

2005-10-05 08:36:10
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(_dot_)kuo(_at_)worldspan(_dot_)com 
<piming(_dot_)kuo(_at_)worldspan(_dot_)com> 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


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



<Prev in Thread] Current Thread [Next in Thread>