|
Subject: Re: [xsl] Multi-level grouping across multiple input files question. From: "G. Ken Holman" <gkholman@xxxxxxxxxxxxxxxxxxxx> Date: Wed, 13 Oct 2004 20:36:58 -0400 |
First of all I want to know if this can be done.
below is a sample of over 3000 claim nodes in each of 6 documents. Thats over 18000 nodes to process.
I want to group by <vendorname>, then by the month of <actual>, then by <loadnum>.
Is this possible using the document() function???
t:\ftemp>type april.xml <claims> <claim claimable="no"> <vendorcode>P0110</vendorcode> <vendorname>PINEAE GREEN HOUSE</vendorname> <vendorRollontime> 100 </vendorRollontime> <vendorontime> 100 </vendorontime> <cons> 105 </cons> <carrier>PINEAE GREENHOUSE</carrier> <carrierontime> 97 </carrierontime> <loadnum>215560</loadnum> <po>1653730</po> <due>5/7/2004 </due> <original>5/7/2004 8:45:00 AM </original> <scheduled>5/7/2004 8:45:00 AM </scheduled> <actual>5/7/2004 8:34:00 AM </actual> <vendstat>On Time</vendstat> <carrierstat>On Time</carrierstat> <buyer>???</buyer> </claim> </claims> t:\ftemp>type may.xml <claims> <claim claimable="no"> <vendorcode>P0110</vendorcode> <vendorname>PINEAE GREEN HOUSE</vendorname> <vendorRollontime> 100 </vendorRollontime> <vendorontime> 100 </vendorontime> <cons> 105 </cons> <carrier>PINEAE GREENHOUSE</carrier> <carrierontime> 97 </carrierontime> <loadnum>215560</loadnum> <po>1653730</po> <due>5/7/2004 </due> <original>5/7/2004 8:45:00 AM </original> <scheduled>5/7/2004 8:45:00 AM </scheduled> <actual>6/7/2004 8:34:00 AM </actual> <vendstat>On Time</vendstat> <carrierstat>On Time</carrierstat> <buyer>???</buyer> </claim> </claims> t:\ftemp>type june.xml <claims> <claim claimable="no"> <vendorcode>P0110</vendorcode> <vendorname>PINEAE GREEN HOUSE</vendorname> <vendorRollontime> 100 </vendorRollontime> <vendorontime> 100 </vendorontime> <cons> 105 </cons> <carrier>PINEAE GREENHOUSE</carrier> <carrierontime> 97 </carrierontime> <loadnum>215561</loadnum> <po>1653731</po> <due>5/7/2004 </due> <original>5/7/2004 8:45:00 AM </original> <scheduled>5/7/2004 8:45:00 AM </scheduled> <actual>6/7/2004 8:34:00 AM </actual> <vendstat>On Time</vendstat> <carrierstat>On Time</carrierstat> <buyer>???</buyer> </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:variable name="claims" select="document('april.xml')//claim|
document('may.xml')//claim|
document('june.xml')//claim"/><xsl:template match="/">
<xsl:for-each select="$claims">
<xsl:if test="generate-id(.)=
generate-id($claims[vendorname=current()/vendorname])">
<xsl:text>Vendor name </xsl:text>
<xsl:value-of select="vendorname"/>:
<xsl:text/>
<xsl:variable name="vendors"
select="$claims[vendorname=current()/vendorname]"/>
<xsl:for-each select="$vendors">
<!--assuming MM/DD/YYYY-->
<xsl:if test="generate-id(.)=
generate-id($vendors[substring-before(actual,'/')=
substring-before(current()/actual,'/')])">
<xsl:text> Month </xsl:text>
<xsl:value-of select="substring-before(actual,'/')"/>
<xsl:text>:
</xsl:text>
<xsl:variable name="actuals"
select="$vendors[substring-before(actual,'/')=
substring-before(current()/actual,'/')]"/>
<xsl:for-each select="$actuals">
<xsl:if test="generate-id(.)=
generate-id($actuals[loadnum=current()/loadnum])">
<xsl:text> Load num </xsl:text>
<xsl:value-of select="loadnum"/>:
<xsl:text/>
<xsl:for-each select="$actuals[loadnum=current()/loadnum]">
<xsl:text> po </xsl:text>
<xsl:value-of select="po"/>
<xsl:text>
</xsl:text>
</xsl:for-each>
</xsl:if>
</xsl:for-each>
</xsl:if>
</xsl:for-each>
</xsl:if>
</xsl:for-each>
</xsl:template></xsl:stylesheet>
t:\ftemp>saxon kent.xsl kent.xsl
Vendor name PINEAE GREEN HOUSE:
Month 5:
Load num 215560:
po 1653730
Month 6:
Load num 215560:
po 1653730
Load num 215561:
po 1653731-- Upcoming publicly-subscribed XSL delivery: Helsinki Oct 18-20,2004 World-wide on-site corporate, govt. & user group XML/XSL 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 Legal business disclaimers: http://www.CraneSoftwrights.com/legal
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] Multi-level grouping acro, David Carlisle | Thread | RE: [xsl] Multi-level grouping acro, Jarno.Elovirta |
| Re: [xsl] how to handle structured , Robert Koberg | Date | RE: [xsl] Problem using Position() , Animesh Sharma |
| Month |