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: 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
|