Subject: RE: [xsl] Recursive wrapping From: "Khorasani, Houman" <Houman.Khorasani@xxxxxxxxxxxx> Date: Thu, 13 Jul 2006 16:52:59 +0100 |
All I can say to this solution is WOW. I have to work harder on my recursive template understanding. I would need a while to analyze your solution but its working!!! Many many thanks, Houman -----Original Message----- From: George Cristian Bina [mailto:george@xxxxxxxxxxxxx] Sent: 13 July 2006 16:50 To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Subject: Re: [xsl] Recursive wrapping Something like below perhaps? <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="node() | @*"> <xsl:copy> <xsl:apply-templates select="node() | @*"/> </xsl:copy> </xsl:template> <xsl:template match="Attribute"> <OtherAttributes> <xsl:copy> <xsl:apply-templates select="node() | @*"/> </xsl:copy> <xsl:apply-templates select="following-sibling::*[1][self::Attribute]" mode="att"/> </OtherAttributes> </xsl:template> <xsl:template match="Attribute[preceding-sibling::*[1][self::Attribute]]"/> <xsl:template match="Attribute" mode="att"> <xsl:copy> <xsl:apply-templates select="node() | @*"/> </xsl:copy> <xsl:apply-templates select="following-sibling::*[1][self::Attribute]" mode="att"/> </xsl:template> <xsl:template match="node() | @*" mode="att"> <xsl:copy> <xsl:apply-templates select="node() | @*"/> </xsl:copy> </xsl:template> </xsl:stylesheet> Best Regards, George --------------------------------------------------------------------- George Cristian Bina <oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger http://www.oxygenxml.com Khorasani, Houman wrote: > Hi, > > I have a problem, which should be quite straight forward but I can't > find the solution. > > > XML: > > <a>1</a> > <b>2</b> > <Attribute> > <Name>xx</Name> > <Value>xx</Value> > </Attribute> > <Attribute> > <Name>yy </Name> > <Value>yy</Value> > </Attribute> > ... > <c>3</c> > > > > Would like to generate: > <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> > > There could be 0 to n attribute elements and I would like to wrap them > between an OtherAttributes. > > I have tried to solve it by recursive templates, but somehow I don't get > there. Any suggestions? > > Many thanks > Houman
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Recursive wrapping, Mukul Gandhi | Thread | Re: [xsl] Recursive wrapping, David Carlisle |
Re: [xsl] Recursive wrapping, George Cristian Bina | Date | Re: [xsl] Recursive wrapping, Mukul Gandhi |
Month |