Altova Mailing List Archives>Archive Index >microsoft.public.xsl Archive Home >Recent entries >Thread Prev - Grouping with XSLT 1.0 [Thread Next] Re: Grouping with XSLT 1.0To: NULL Date: 6/3/2005 11:01:00 AM
I manage to get this working.
Here is the xsl:
<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"/>
<xsl:key name="keyGroup"
match="//Item/Destination/*[contains(local-name(),'Code_E')]"
use="concat(.,../../AltDest)"/>
<xsl:template match="/">
<xsl:element name="Orders">
<xsl:apply-templates
select="//Item/Destination/*[contains(local-name(),'Code_E')][generate-i
d(.) = generate-id(key('keyGroup',concat(.,../../AltDest))[1])]"
mode="modeitems"/>
</xsl:element>
</xsl:template>
<xsl:template match="*[contains(local-name(),'Code_E')]"
mode="modeitems">
<xsl:variable name="currentKey">
<xsl:value-of select="concat(.,../../AltDest)"/>
</xsl:variable>
<xsl:element name="Order">
<xsl:element name="currentKey">
<xsl:value-of select="$currentKey"/>
</xsl:element>
<xsl:element name="Code">
<xsl:value-of select="."/>
</xsl:element>
<xsl:element name="DC">
<xsl:value-of select="../../AltDest"/>
</xsl:element>
<xsl:apply-templates
select="//Item/Destination/*[contains(local-name(),'Code_E')][concat(.,.
./../AltDest) = $currentKey]" mode="modeitem"/>
</xsl:element>
</xsl:template>
<xsl:template match="*[contains(local-name(),'Code_E')]"
mode="modeitem">
<xsl:element name="Item">
<xsl:copy-of select="../../Item_Name"/>
<xsl:element name="Qty">
<xsl:value-of select="following-sibling::*[1]"/>
</xsl:element>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
*** Sent via Developersdex http://www.developersdex.com ***
| ||||||
| Company | Legal | Press | Partners | Careers | Sitemap | Contact Us | Altova Blog | Mobile | Full Site | |||
|
