Subject: Re: Add numbers
From: Steve <subsume@xxxxxxxxx>
Date: Tue, 9 Oct 2007 11:11:23 -0400
|
Woops. haven't had my coffee today. Disregard.
On 10/9/07, Steve <subsume@xxxxxxxxx> wrote:
> <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.
|