[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

3 level Muenchian Grouping ?

Subject: 3 level Muenchian Grouping ?
From: "Manish Rambabu" <manishrb@xxxxxxxxxxx>
Date: Tue, 20 Jan 2004 19:45:34 +0000
sarosota
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(.)]),'#.##')"/>


<tr> <td colspan="9" align="right"><b> <font face="Verdana" size="2" color="#0000FF"><xsl:value-of select="CATEGORY"/> <xsl:text> </xsl:text></font><u><xsl:value-of select="TYPE"/></u> Totals: </b></td> <td class="total"><xsl:value-of select="$subTotal"/></td> </tr>



  </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



Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.