[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: Merge Similar data nodes using XSL
Thanks Mike, I keep getting "Keyword xsl:for-each-group may not be used here" when executed via browser (IE 6.0) Since I am doing the transformation on the client side, I should be looking to use XSLT 1.0. Please correct me if I am imagining this. Regards Sunder --- On Mon, 16/2/09, Michael Kay <mike@xxxxxxxxxxxx> wrote: From: Michael Kay <mike@xxxxxxxxxxxx> Subject: RE: Merge Similar data nodes using XSL To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Received: Monday, 16 February, 2009, 8:07 PM You need to look at "grouping". In XSLT 2.0 there is an xsl:for-each-group construct which makes it quite easy; in XSLT 1.0 you need to learn about the Muenchian grouping technique, which is quite tricky especially for newcomers to the langauge. So first of all, find out whether you project has any constraints that prevent you from using XSLT 2.0. Using for-each-group, you could write something like this: <xsl:for-each-group select="Contribution" group-by="AccountIDPub"> <tr> <td><xsl:value-of select="AccountID"/></td> <td><xsl:value-of select="AccountIDPub"/></td> etc (these select values from the first item in the group) To get the Comp Emp contribution: <xsl:value-of select="current-group()[ContributionType='Comp Emp']/ContributionAmount"/> To get the total contribution: <xsl:value-of select="sum(current-group()/ContributionAmount)"/> Michael Kay http://www.saxonica.com/ > -----Original Message----- > From: Sunder Rajan [mailto:arun_9033@xxxxxxxxx] > Sent: 16 February 2009 07:03 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: Merge Similar data nodes using XSL > > Hi All, > > I have posted this after a bit of research and being new to XSLT. > > There were similar clarifications in the past(FAQ) that > helped me to move however I would appreciate if any one can > suggest me if I am heading in the right direction. > > 1. Here is the XML sampple > <Contribution> > <AccountID>100</AccountID> > <AccountIDPub>173</AccountIDPub> > <EmployeeSurname>XXXX</EmployeeSurname> > <EmployeeFirstName>Sharon</EmployeeFirstName> > <EmployeeDOB>07/12/1955</EmployeeDOB> > <DateLastPaidTo>02/01/2009</DateLastPaidTo> > <ContributionType>Comp Emp</ContributionType> > <ContributionAmount>400.0</ContributionAmount> > </Contribution> > <Contribution> > <AccountID>100</AccountID> > <AccountIDPub>173</AccountIDPub> > <EmployeeSurname>XXXX</EmployeeSurname> > <EmployeeFirstName>Sharon</EmployeeFirstName> > <EmployeeDOB>07/12/1955</EmployeeDOB> > <DateLastPaidTo>02/01/2009</DateLastPaidTo> > <ContributionType>Personal</ContributionType> > <ContributionAmount>200.0</ContributionAmount> > </Contribution> > > 2. Key is <AccountIDPub> in the above nodes > > 3. The <ContributionType> can have 5 variations value(1,2,3,4,5) > The XML shows only 2 <ContributionType> it can have uptil 5. > The other I set them 0 for display (please see below) > > The XSL I have written at the moment displays this as follows > > AcNo. Name DOB Comp Emp Volu Salary Personal > Spouse Total > -------------------------------------------------------------- > ---------- > 173 Sharon 07/12/1955 400.0 0 0 0 0 > 400.0 > 173 Sharon 07/12/1955 0 0 0 200.0 0 > 200.0 > > What would be the ideal way to get an output in a single row? > (Including adding the total) > > AcNo. Name DOB Comp Emp Volu Salary Personal > Spouse Total > -------------------------------------------------------------- > ----------- > 173 Sharon 07/12/1962 400.0 0 0 200.0 > 0 600.0 > > 1. Should this be merged into a single XML first and then > displayed in a loop I guess I might need to do this in 2 passes...? > > I understand that I can use a key (AcNo) and iterate, wasn't > sure if there were cleaner approach. > > Any pointers appreciated.... > > Regards > Sunder > > > Make Yahoo!7 your homepage and win a trip to the > Quiksilver Pro. Find out more > > --~------------------------------------------------------------------ > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list > To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/ > or e-mail: <mailto:xsl-list-unsubscribe@xxxxxxxxxxxxxxxxxxxxxx> > --~-- Make Yahoo!7 your homepage and win a trip to the Quiksilver Pro. Find out more
|
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
|