Subject: RE: [xsl] group data in XSL From: "Andrew Welch" <ajwelch@xxxxxxxxxxxxxxx> Date: Wed, 18 Aug 2004 17:03:17 +0100 |
> Hi all, > > I have the following data and I would like to group > them please help. > > <?xml version="1.0" standalone="yes"?> > <dsWMSRpt> > <WMSReport> > <AdministrationCode>ABC</AdministrationCode> > <ReportUnitTitle>Financial > Div/Headquarters</ReportUnitTitle> > <PositionNumber> 0934</PositionNumber> > </WMSReport> > <WMSReport> > <AdministrationCode>ABC</AdministrationCode> > <ReportUnitTitle>Part Div</ReportUnitTitle> > <PositionNumber> 4563</PositionNumber> > </WMSReport> > <WMSReport> > <AdministrationCode>ABC</AdministrationCode> > <ReportUnitTitle>Financial Div</ReportUnitTitle> > <PositionNumber> K948</PositionNumber> > </WMSReport> > <WMSReport> > <AdministrationCode>ABC</AdministrationCode> > <ReportUnitTitle>Human Resource > Div</ReportUnitTitle> > <PositionNumber> 6453</PositionNumber> > </WMSReport> > <WMSReport> > <AdministrationCode>ABC</AdministrationCode> > <ReportUnitTitle>HumanResource Div</ReportUnitTitle> > <PositionNumber> 9655</PositionNumber> > </WMSReport> > <WMSReport> > <AdministrationCode>ABC</AdministrationCode> > <ReportUnitTitle>Sale Div</ReportUnitTitle> > <PositionNumber> SDWE</PositionNumber> > </WMSReport> > <WMSReport> > <AdministrationCode>ABC</AdministrationCode> > <ReportUnitTitle>Sale Div</ReportUnitTitle> > <PositionNumber> 4577</PositionNumber> > </WMSReport> > </dsWMSRpt> > > Now I would like the output to group as following > > Administration Code: ABC > Report Title: Financial Div > Position Number: 0934 > Position Number: K948 > > Administration Code: ABC > Report Title: Part Div > Position Number: 4563 > > Administration Code: ABC > Report Title: Sale Div > Position Number: SDWE > Position Number: 4577 > > Administration Code: ABC > Report Title: Human Resource Div > Position Number: 6453 > Position Number: 9655 In XSLT 2.0 you can use: <xsl:for-each-group select="/dsWMSRpt/WMSReport" group-by="ReportUnitTitle"> Administration Code: <xsl:value-of select="AdministrationCode"/> Report Title: <xsl:value-of select="ReportUnitTitle"/> <xsl:for-each select="current-group()/PositionNumber"> Position Number: <xsl:value-of select="."/> </xsl:for-each> </xsl:for-each-group> You will have to sort out the whitespace issues, but you get the idea. It's worth noting that your output doesn't match your input, because "Financial Div/Headquarters" and "Financial Div" are different, as are "Human Resource Div" and "HumanResource Div" when you've grouped using them. Cheers andrew
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] group data in XSL, Tham Tinh | Thread | RE: [xsl] group data in XSL, Tham Tinh |
Re: [xsl] groupi-by statements?, David Carlisle | Date | [xsl] Logical in Count function, Tham Tinh |
Month |