|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] 3 level Muenchian Grouping ?
Hello All,
Below are the XML and XSL files where I am able to do a 2 level Muenchian grouping. Can someone please shed some light on how I can group further by ORDER_DATE and calculate a subTotal for each Order Date. I know I need to generate a 3rd concatenated key. Thanks Much M --------------------------------------------------------------------------------------- <?xml version="1.0" ?> <ORDER_DETAILS> <CUSTOMER> <NAME>John Smith</NAME> <SITE> <ADDRESS> <STREET>111 Freedom Drive</STREET> <CITY>Chicago</CITY> <STATE>IL</STATE> <ZIP>60111</ZIP> </ADDRESS> <ACCOUNT_NUMBER>12222</ACCOUNT_NUMBER> <CATEGORY>1</CATEGORY> <TYPE>AX</TYPE> <ORDER_DATE>01/01/03</ORDER_DATE> <PRICE>21.99</PRICE> </SITE> </CUSTOMER> <CUSTOMER> <NAME>Mary Jane</NAME> <SITE> <ADDRESS> <STREET>16 Penn Ave NW</STREET> <CITY>Washington DC</CITY> <STATE>DC</STATE> <ZIP>20333</ZIP> </ADDRESS> <ACCOUNT_NUMBER>67889</ACCOUNT_NUMBER> <CATEGORY>1</CATEGORY> <TYPE>AX</TYPE> <ORDER_DATE>02/01/03</ORDER_DATE> <PRICE>11.98</PRICE> </SITE> </CUSTOMER> <CUSTOMER> <NAME>Mark Anderson</NAME> <SITE> <ADDRESS> <STREET>175 Commerce Park</STREET> <CITY>San Francisco</CITY> <STATE>CA</STATE> <ZIP>93311</ZIP> </ADDRESS> <ACCOUNT_NUMBER>66145</ACCOUNT_NUMBER> <CATEGORY>1</CATEGORY> <TYPE>BX</TYPE> <ORDER_DATE>01/31/03</ORDER_DATE> <PRICE>11.98</PRICE> </SITE> </CUSTOMER> <CUSTOMER> <NAME>Chris Dewalt</NAME> <SITE> <ADDRESS> <STREET>1344 Washington Park</STREET> <CITY>San Francisco</CITY> <STATE>CA</STATE> <ZIP>93344</ZIP> </ADDRESS> <ACCOUNT_NUMBER>000234</ACCOUNT_NUMBER> <CATEGORY>1</CATEGORY> <TYPE>BX</TYPE> <ORDER_DATE>01/31/03</ORDER_DATE> <PRICE>41.00</PRICE> </SITE> </CUSTOMER> <CUSTOMER> <NAME>Sam Dewar</NAME> <SITE> <ADDRESS> <STREET>123 Hunington Way</STREET> <CITY>Mclean</CITY> <STATE>VA</STATE> <ZIP>20121</ZIP> </ADDRESS> <ACCOUNT_NUMBER>100988</ACCOUNT_NUMBER> <CATEGORY>2</CATEGORY> <TYPE>BX</TYPE> <ORDER_DATE>01/31/03</ORDER_DATE> <PRICE>11.00</PRICE> </SITE> </CUSTOMER> <CUSTOMER> <NAME>Peter Henderson</NAME> <SITE> <ADDRESS> <STREET>421 RidgeTop Place</STREET> <CITY>Sarosota</CITY> <STATE>MI</STATE> <ZIP>10121</ZIP> </ADDRESS> <ACCOUNT_NUMBER>800223</ACCOUNT_NUMBER> <CATEGORY>1</CATEGORY> <TYPE>AX</TYPE> <ORDER_DATE>01/01/03</ORDER_DATE> <PRICE>83.00</PRICE> </SITE> </CUSTOMER> </ORDER_DETAILS> ---------------------------------------------------------------------------- --------------------------------------- <?xml version="1.0" ?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:key name="CATgrp" match="SITE" use="CATEGORY" /> <xsl:key name="TYPgrp" match="SITE" use="concat(CATEGORY,'~',TYPE)" /> <xsl:template match="ORDER_DETAILS"> <table width="95%" border="1" cellpadding="1" cellspacing="0" border-color="#ffffff"> <tr> <th>Customer Name</th> <th>Site Address</th> <th>Site City</th> <th>Site State</th> <th>Site Zip</th> <th>Account Number</th> <th>Category</th> <th>Type</th> <th>Order Date</th> <th>Price</th> </tr> <xsl:apply-templates select="CUSTOMER"/> </table> </xsl:template> <xsl:template match="CUSTOMER"> <xsl:for-each select="SITE[count(. | key('CATgrp', CATEGORY)[1]) = 1]">
<xsl:for-each select="key('CATgrp',CATEGORY)[generate-id() =
generate-id(key('TYPgrp',concat(CATEGORY,'~',TYPE)))]">
<xsl:for-each select="key('TYPgrp',concat(CATEGORY,'~',TYPE))"><tr> <td><xsl:value-of select="../NAME"/></td>
<td><xsl:value-of select="ADDRESS/STREET"/></td>
<td><xsl:value-of select="ADDRESS/CITY"/></td>
<td><xsl:value-of select="ADDRESS/STATE"/></td>
<td><xsl:value-of select="ADDRESS/ZIP"/></td>
<td><xsl:value-of select="ACCOUNT_NUMBER"/></td>
<td><xsl:value-of select="CATEGORY"/></td>
<td><xsl:value-of select="TYPE"/></td>
<td><xsl:value-of select="ORDER_DATE"/></td>
<td><xsl:value-of select="PRICE"/></td>
</tr></xsl:for-each> <xsl:variable name="subTotal"
select="format-number(sum(key('TYPgrp',concat(CATEGORY,'~',TYPE))/PRICE[numb
er(.) = number(.)]),'#.##')"/>
</xsl:for-each> </xsl:for-each> </xsl:template> </xsl:stylesheet> ---------------------------------------------------------------------------- _________________________________________________________________ There are now three new levels of MSN Hotmail Extra Storage! Learn more. http://join.msn.com/?pgmarket=en-us&page=hotmail/es2&ST=1 XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|
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
|

Cart








