[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Add numbers
If you follow this link, http://www.biglist.com/lists/xsl-list/archives/200005/msg00270.html (which Steve Muench posted to this list in yr 2000 introducing the Muenchian method), where it's suggested we should use [1]. Though as you say, the stylesheet will work without [1] also. I prefer using something, which has become a kind of pattern. On 10/9/07, Scott Trenda <Scott.Trenda@xxxxxxxx> wrote: > Quick comment, Harsh himself pointed this out recently. > > In your Muenchian grouping condition: > generate-id() = generate-id(key('x', @key)[1]) > The [1] is actually redundant, as generate-id() will only take the first > node returned. So you can use this: > generate-id() = generate-id(key('x', @key)) > > ~ Scott > > > -----Original Message----- > From: Mukul Gandhi [mailto:gandhi.mukul@xxxxxxxxx] > Sent: Tuesday, October 09, 2007 11:25 AM > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: Re: Add numbers > > 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 -- Regards, Mukul Gandhi
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|