Subject: [xsl] Summating/grouping From: "Rob Anderson" <roba@xxxxxxxxxx> Date: Wed, 18 Jun 2003 13:50:35 +0100 |
I know, I know... This sort of thing has been asked many times. However, I am not clear/understand why I do not have any results appearing. using this xml <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="c:\temp\a.xsl"?> <Invoice> <InvoiceLine Line="1"> <Charge Type="Tax"> <TaxRate Code="E">0.0</TaxRate> <Value>0.00</Value> </Charge> </InvoiceLine> <InvoiceLine Line="2"> <Charge Type="Tax"> <TaxRate Code="S">17.5</TaxRate> <Value>12.50</Value> </Charge> </InvoiceLine> <InvoiceLine Line="3"> <Charge Type="Tax"> <TaxRate Code="E">0.0</TaxRate> <Value>0.00</Value> </Charge> </InvoiceLine> <InvoiceLine Line="4"> <Charge Type="Tax"> <TaxRate Code="S">17.5</TaxRate> <Value>15.00</Value> </Charge> </InvoiceLine> <InvoiceLine Line="5"> <Charge Type="Tax"> <TaxRate Code="Z">0.0</TaxRate> <Value>0.00</Value> </Charge> </InvoiceLine> </Invoice> I would like to achieve... <TaxSummary> <Tax Code="S"> <Rate>17.5</Rate> <LinesAtRate>2</LinesAtRate> <Value>27.50</Value> </Tax> <Tax Code="E"> <Rate>0.0</Rate> <LinesAtRate>2</LinesAtRate> <Value>0.0</Value> </Tax> <Tax Code="Z"> <Rate>17.5</Rate> <LinesAtRate>1</LinesAtRate> <Value>0.0</Value> </Tax> </TaxSummary> I try using this XSL <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> <!-- I am hoping that this builds up a list of all the items by Tax rate code --> <xsl:key name="TAX" match="/Invoice/InvoiceLine/Charge[@Type = 'Tax']/TaxRate" use="@Code"/> <xsl:template match="/"> <TaxSummary> <!-- I am hoping that this will return the first element of each of the Tax codes, i.e. 'S', 'E', 'Z' --> <xsl:for-each select="/Invoice/InvoiceLine/Charge[@Type = 'Tax']/TaxRate/@Code[generate-id(.)=generate-id(key('TAX', @Code)[1])]"> <!-- this should be the TaxRate Code --> <xsl:variable name="CODE" select="."/> <Tax Code="{$CODE}"> <Rate> <xsl:value-of select="TaxRate"/> </Rate> <LinesAtRate> <xsl:value-of select="count(/Invoice/InvoiceLine/Charge[@Type = 'Tax']/TaxRate[@Code = $CODE])"/> </LinesAtRate> <Value> <xsl:value-of select="sum(/Invoice/InvoiceLine/Charge[@Type = 'Tax']/TaxRate[@Code = $CODE]/../Value)"/> </Value> </Tax> </xsl:for-each> </TaxSummary> </xsl:template> </xsl:stylesheet> Many thanks Rob XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Announcement: XSLT Experts Fo, Niki Dinsey - CSW | Thread | Re: [xsl] Summating/grouping, David Carlisle |
[xsl] Announcement: XSLT Experts Fo, Niki Dinsey - CSW | Date | RE: [xsl] xsl:number problem, Yan, Charlene |
Month |