Subject: Re: [xsl] Add numbers From: "Mukul Gandhi" <gandhi.mukul@xxxxxxxxx> Date: Tue, 9 Oct 2007 21:54:35 +0530 |
Hi Harsh, Though the question has already been answered, but here's my attempt: <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="xml" indent="yes" /> <xsl:key name="x" match="a" use="@key" /> <xsl:template match="/first"> <op> <xsl:for-each select="second/a[generate-id() = generate-id(key('x', @key)[1])]"> <xsl:element name="{@key}"> <val><xsl:value-of select="sum(key('x', @key)/@val)" /></val> </xsl:element> </xsl:for-each> </op> </xsl:template> </xsl:stylesheet> Ken's solution is quite generic, because it doesn't depend on element name, and can work with deep hierarchies. 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. -- Regards, Mukul Gandhi
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Add numbers, G. Ken Holman | Thread | RE: [xsl] Add numbers, Scott Trenda |
Re: [xsl] XML/XSLT for web templati, Wendell Piez | Date | RE: [xsl] Add numbers, Scott Trenda |
Month |