[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] Add numbers


Subject: Re: [xsl] Add numbers
From: Steve <subsume@xxxxxxxxx>
Date: Tue, 9 Oct 2007 11:10:49 -0400

<xsl:template match="first/second[1]">
    <xsl:param name="sum">0</xsl:param>
    <xsl:apply-templates select="following-sibling::first/second">
        <xsl:with-param name="sum" select="sum(a/@val)" />
    </xsl:apply-templates>
    <xsl:if test="not(following-sibling::first/second)">
        <xsl:value-of select="$sum + sum(a/@val)" />
   </xsl:if>
</xsl:template>

On 10/9/07, Chaudhary, Harsh <HCHAUDHA@xxxxxxxxx> wrote:
> Hi,
>
> I have an XML:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <first>
>     <second>
>         <a val="4" key="one">b</a>
>         <a val="2" key="two">b</a>
>     </second>
>     <second>
>         <a val="3" key="one">c</a>
>     </second>
> </first>
>
> I need to group together the nodes which have the same key and then I
> need to add the attribute "val" in all such cases.
>
> So, The output I need is:
>
> <op>
>         <one>
>                 <val>7</val>
>         </one>
>         <two>
>                 <val>2</val>
>         </two>
> </op>
>
> How do I go about doing this? I am using Xalan and XSLT 1.0.
>
> I have used the Meunichian method to group the nodes with same keys
> together. But I don't know how to proceed from there. I tried using the
> sum() function but it won't work for me on account that even if I run a
> for-each loop over the set of nodes with the same key, it just prints
> out the value of "val" for each a element. I think I need to be in the
> parent element for this to work.
>
> Thanks,
> Harsh.


Current Thread
Keywords