Re: [xsl] move tag up to level

Subject: Re: [xsl] move tag up to level
From: "andrew welch" <andrew.j.welch@xxxxxxxxx>
Date: Thu, 28 Sep 2006 16:22:08 +0100
On 9/28/06, alex v. <alex.vett@xxxxxxxxx> wrote:
Hi,
I have to transform a structure like this:

<root>
<a>mixed content like text and tags
<b>other mixed content</b>
mixed content also here
</a></root>

in another like:

<root>
<a>mixed content like text and tags</a>
<b>other mixed content</b>
<a>mixed content also here</a>
</root>

Tag 'a' is closed before '<b>' and then reopen follow '</b>'.
Also tag 'b' is promote at level of tag 'a'.

Can someone tell me how to do this?

If your input really is just like that, then this will do it:


<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="a">
	<xsl:apply-templates/>
</xsl:template>

<xsl:template match="a/text()">
	<a><xsl:value-of select="."/></a>
</xsl:template>

</xsl:stylesheet>

cheers
andrew

Current Thread