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 / F45808_weights.xsl < prev    next >
Encoding:
Extensible Markup Language  |  2001-05-06  |  1.0 KB  |  35 lines

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