home *** CD-ROM | disk | FTP | other *** search
/ Programmer Plus 2007 / Programmer-Plus-2007.iso / Programming / XML Utilities / Professional Programmer XSL IDE / Xselerator25.msi / Data.Cab / F45868_xsGroupTotal.xsl < prev    next >
Encoding:
Extensible Markup Language  |  2001-07-12  |  1020 b   |  34 lines

  1. <xsl:stylesheet version="1.0"
  2. xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  3. <xsl:output omit-xml-declaration="yes" indent="yes"/>
  4.  
  5.  <xsl:key name="kCode" match="code" use="."/>
  6.  <xsl:key name="kNr" match="nr" use="../code"/>
  7.  <xsl:key name="kCodeNr" match="nr" use="concat(../code, '|', .)"/>
  8.  
  9.  <xsl:template match="node()"/>
  10.   <xsl:template match="/">
  11.    <total>
  12.     <xsl:apply-templates select="/xml/row/code"/>
  13.     <xsl:text> </xsl:text>
  14.    </total>
  15.   </xsl:template>
  16.  
  17.   <xsl:template match="code[count(.|key('kCode',.)[1])=1]">
  18.     <xsl:text> </xsl:text>
  19.     <code c="{.}">
  20.       <subtotal><xsl:value-of select="sum(key('kCode',.)/../weight)"/></subtotal>
  21.  
  22.     <xsl:for-each
  23.        select="key('kNr', .)[count(. | key('kCodeNr', concat(../code, '|', .))[1])=1]">
  24.       <nr n="{.}"><xsl:value-of select="sum(key('kCodeNr', concat(../code, '|', .))/../weight)"/></nr>
  25.       <xsl:text> </xsl:text>
  26.     </xsl:for-each>
  27.     </code>
  28.   </xsl:template>
  29.  
  30.  
  31. </xsl:stylesheet>
  32.  
  33.  
  34.