|
Subject: Re: [xsl] Multi level grouping question From: "G. Ken Holman" <gkholman@xxxxxxxxxxxxxxxxxxxx> Date: Wed, 25 Feb 2004 09:51:16 -0500 |
I want to group 3-4 levels down. I get the 1-2 levels working from reading Jeni's postings but I can't get the 3rd level and so on to work. ... I am trying to group by vendor name then vendor code and finally load number. The first 2 levels work out but the third doesn't. Any help please.
T:\ftemp>type kent.xml <?xml version="1.0" encoding="iso-8859-1"?> <claims> <claim claimable="no"> <vendorcode>01H0012</vendorcode> <vendorname>TYCO PLASTICS</vendorname> <vendorontime> 50 </vendorontime> <cons> 101 </cons> <carrier>GODFREY TRUCKING</carrier> <carrierontime> 100 </carrierontime> <loadnum>163678</loadnum> <po>1</po> <due>1/27/03 </due> <original>1/28/03 8:30:00 AM </original> <scheduled>1/28/03 8:30:00 AM </scheduled> <actual>1/28/03 9:27:00 AM </actual> <vendstat>On Time</vendstat> <carrierstat>On Time</carrierstat> </claim> <claim claimable="no"> <vendorcode>01H0011</vendorcode> <vendorname>TYCO PLASTICS</vendorname> <vendorontime> 50 </vendorontime> <cons> 101 </cons> <carrier>GODFREY TRUCKING</carrier> <carrierontime> 100 </carrierontime> <loadnum>163678</loadnum> <po>2</po> <due>1/27/03 </due> <original>1/28/03 8:30:00 AM </original> <scheduled>1/28/03 8:30:00 AM </scheduled> <actual>1/28/03 9:27:00 AM </actual> <vendstat>On Time</vendstat> <carrierstat>On Time</carrierstat> </claim> <claim claimable="no"> <vendorcode>01H0011</vendorcode> <vendorname>XYZ PLASTICS</vendorname> <vendorontime> 50 </vendorontime> <cons> 101 </cons> <carrier>GODFREY TRUCKING</carrier> <carrierontime> 100 </carrierontime> <loadnum>163678</loadnum> <po>3</po> <due>1/27/03 </due> <original>1/28/03 8:30:00 AM </original> <scheduled>1/28/03 8:30:00 AM </scheduled> <actual>1/28/03 9:27:00 AM </actual> <vendstat>On Time</vendstat> <carrierstat>On Time</carrierstat> </claim> <claim claimable="no"> <vendorcode>01H0011</vendorcode> <vendorname>TYCO PLASTICS</vendorname> <vendorontime> 50 </vendorontime> <cons> 101 </cons> <carrier>GODFREY TRUCKING</carrier> <carrierontime> 100 </carrierontime> <loadnum>163678</loadnum> <po>4</po> <due>1/27/03 </due> <original>1/28/03 8:30:00 AM </original> <scheduled>1/28/03 8:30:00 AM </scheduled> <actual>1/28/03 9:27:00 AM </actual> <vendstat>On Time</vendstat> <carrierstat>On Time</carrierstat> </claim> <claim claimable="no"> <vendorcode>01H0011</vendorcode> <vendorname>TYCO PLASTICS</vendorname> <vendorontime> 50 </vendorontime> <cons> 101 </cons> <carrier>GODFREY TRUCKING</carrier> <carrierontime> 100 </carrierontime> <loadnum>1234567</loadnum> <po>5</po> <due>1/27/03 </due> <original>1/28/03 8:30:00 AM </original> <scheduled>1/28/03 8:30:00 AM </scheduled> <actual>1/28/03 9:27:00 AM </actual> <vendstat>On Time</vendstat> <carrierstat>On Time</carrierstat> </claim> </claims>
T:\ftemp>type kent.xsl <?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<xsl:variable name="claims" select="/claims/claim"/>
<xsl:for-each select="$claims">
<xsl:if test="generate-id(.)=
generate-id($claims[vendorname=current()/vendorname])">
<xsl:value-of select="vendorname"/><xsl:text>
</xsl:text>
<xsl:variable name="vendors"
select="$claims[vendorname=current()/vendorname]"/>
<xsl:for-each select="$vendors">
<xsl:if test="generate-id(.)=
generate-id($vendors[vendorcode=current()/vendorcode])">
<xsl:text> </xsl:text>
<xsl:value-of select="vendorcode"/><xsl:text>
</xsl:text>
<xsl:variable name="codes"
select="$vendors[vendorcode=current()/vendorcode]"/>
<xsl:for-each select="$codes">
<xsl:if test="generate-id(.)=
generate-id($codes[loadnum=current()/loadnum])">
<xsl:text> </xsl:text>
<xsl:value-of select="loadnum"/><xsl:text>
</xsl:text>
<xsl:for-each select="$codes[loadnum=current()/loadnum]">
<xsl:text> </xsl:text>
<xsl:value-of select="po"/><xsl:text>
</xsl:text>
</xsl:for-each>
<xsl:text>
</xsl:text>
</xsl:if>
</xsl:for-each>
</xsl:if>
</xsl:for-each>
</xsl:if>
</xsl:for-each>
</xsl:template></xsl:stylesheet> T:\ftemp>saxon kent.xml kent.xsl TYCO PLASTICS 01H0012 163678 1
01H0011 163678 2 4
1234567 5
XYZ PLASTICS 01H0011 163678 3
-- Public courses: Spring 2004 world tour of hands-on XSL instruction Each week: Monday-Wednesday: XSLT/XPath; Thursday-Friday: XSL-FO United States: Washington, DC March 15; San Francisco, CA March 22 Finland April 26; Hong Kong May 17; Germany May 24; London June 07 World-wide on-site corporate, government & user group XML training
G. Ken Holman mailto:gkholman@xxxxxxxxxxxxxxxxxxxx Crane Softwrights Ltd. http://www.CraneSoftwrights.com/s/ Box 266, Kars, Ontario CANADA K0A-2E0 +1(613)489-0999 (F:-0995) Male Breast Cancer Awareness http://www.CraneSoftwrights.com/s/bc
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| [xsl] Multi level grouping question, Kent Seegmiller | Thread | [xsl] Site Navigation - XML/XSL Men, Bjorn Aune |
| Re: [xsl] XPATH: get not repeated n, aaa bbb | Date | Re: [xsl] XPATH: get not repeated n, David Carlisle |
| Month |