[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Summating/grouping
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
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|