[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: Add numbers

Subject: Re: Add numbers
From: "Mukul Gandhi" <gandhi.mukul@xxxxxxxxx>
Date: Tue, 9 Oct 2007 22:48:22 +0530
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

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.