Subject: RE: [xsl] Recursive wrapping From: "Khorasani, Houman" <Houman.Khorasani@xxxxxxxxxxxx> Date: Thu, 20 Jul 2006 10:48:51 +0100 |
Hi David, You are right the code is much easier in XSLT 2.0. I used Xalan instead of Saxon and it worked fine. Impressive! I should start learning XSLTt 2.0, I suppose it would make my life easier once I got it. :) Thanks Houman -----Original Message----- From: David Carlisle [mailto:davidc@xxxxxxxxx] Sent: 13 July 2006 17:26 To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Subject: Re: [xsl] Recursive wrapping > I have to work harder on my recursive template understanding. as often with grouping problems like this, the XSLT2 solution is probably easier to follow, as for-each-group makes the grouping explict. David <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:strip-space elements="*"/> <xsl:output indent="yes"/> <xsl:template match="node()"> <xsl:copy> <xsl:copy-of select="@*"/> <xsl:apply-templates/> </xsl:copy> </xsl:template> <xsl:template match="*[Attribute]"> <xsl:copy> <xsl:for-each-group select="*" group-adjacent="boolean(self::Attribute)"> <xsl:choose> <xsl:when test="self::Attribute"> <OtherAttributes> <xsl:apply-templates select="current-group()"/> </OtherAttributes> </xsl:when> <xsl:otherwise> <xsl:apply-templates select="current-group()"/> </xsl:otherwise> </xsl:choose> </xsl:for-each-group> </xsl:copy> </xsl:template> </xsl:stylesheet> $ saxon8 at.xml at.xsl <?xml version="1.0" encoding="UTF-8"?> <x> <a>1</a> <b>2</b> <OtherAttributes> <Attribute> <Name>xx</Name> <Value>xx</Value> </Attribute> <Attribute> <Name>yy </Name> <Value>yy</Value> </Attribute> </OtherAttributes> <c>3</c> </x>
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Recursive wrapping, Mukul Gandhi | Thread | RE: [xsl] Recursive wrapping, Khorasani, Houman |
Re: [xsl] XSLT in IE w/Sarissa - om, andrew welch | Date | [xsl] Is there any multiple if exre, Karl |
Month |