| Subject: Re: [xsl] Sorting unique and sub-total problem From: roger.wyatt@xxxxxxxxxxxxx Date: Fri, 4 Jun 2004 10:54:33 +0100 | 
I have final got what I want... and learnt a hell of a lot in the
process...
A combination of syntax and typos held me back some what... but I crawled
forward ...
Although looking that the other postings it is clear that I am way out of
my league.  But  I still thought it was worth posting the end result....
Thanks to Wendel and Mukul for the help...
XSL IS....
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:key name="cards" match="ITEM" use="CARD/@number" />
<xsl:template match="/">
      <xsl:for-each select="/ITEMS" >
            <xsl:call-template name="create-body" />
      </xsl:for-each>
</xsl:template>
<xsl:template name="create-body" >
      <xsl:for-each select="./ITEM[CARD/@number and
            generate-id(.) = generate-id(key('cards', CARD/@number))]" >
                  <BR/> VALUES FOR CARD: <xsl:value-of select
="CARD/@number"/>
                  <BR/> NUMBER OF ITEMS: <xsl:value-of select="count(key
('cards', CARD/@number))" />
                  <xsl:for-each select="key('cards', CARD/@number)" >
                        <BR/> Values <xsl:value-of select="AMOUNT/@amt" />
                  </xsl:for-each>
                  <BR/> TOTAL: <xsl:value-of select=" sum( key('cards',
CARD/@number)/AMOUNT/@amt )  "/>
                  <BR/>
      </xsl:for-each>
      <BR/> GRAND TOTAL: <xsl:value-of select="sum(//AMOUNT/@amt)" />
</xsl:template>
</xsl:stylesheet>
AND THE XML IS...
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="test.xsl"?>
<ITEMS>
      <ITEM item_id='1'>  <CARD number='123456789' amt='1'/>  <AMOUNT amt
='100'/>   </ITEM>
      <ITEM item_id='2'>  <CARD number='123456789' amt='2'/>  <AMOUNT amt
='200'/>  </ITEM>
      <ITEM item_id='3'>  <CARD number='987654321' amt='3'/>  <AMOUNT amt
='30'/>  </ITEM>
      <ITEM item_id='4'>  <CARD number='123456789' amt='4'/>  <AMOUNT amt
='50'/>  </ITEM>
      <ITEM item_id='5'>  <CARD number='987654321' amt='5'/>  <AMOUNT amt
='150'/>  </ITEM>
      <ITEM item_id='6'>  <CARD number='123456789' amt='6'/>  <AMOUNT amt
='250'/>  </ITEM>
</ITEMS>
WHICH GIVES ME THIS....
VALUES FOR CARD: 123456789
NUMBER OF ITEMS: 4
Values 100
Values 200
Values 50
Values 250
TOTAL: 600
VALUES FOR CARD: 987654321
NUMBER OF ITEMS: 2
Values 30
Values 150
TOTAL: 180
GRAND TOTAL: 780
***************************************
Roger Wyatt
Principal Consultant
Nomad Software Ltd.
***************************************
This e-mail (including attachments) is confidential and is intended solely
for the addressee.  Unless authorised you may not read, copy, use or store
this e-mail in any way, or permit others to do so.  If you have received it
in error, please contact Nomad Software on +44 (0) 20 7292 2400
| Current Thread | 
|---|
| 
 | 
| <- Previous | Index | Next -> | 
|---|---|---|
| Re: [xsl] Sorting unique and sub-to, Mukul Gandhi | Thread | Copyright symbol in MSXML, Watt, Daniel | 
| Re: [xsl] Large transforms (was Re:, Kevin Jones | Date | delete the white spaces, Dionisio Ruiz de Zar | 
| Month |