RE: [xsl] why do I get duplicate <HTML> after xsl:copy ?

Subject: RE: [xsl] why do I get duplicate <HTML> after xsl:copy ?
From: "Andrew Welch" <ajwelch@xxxxxxxxxxxxxxx>
Date: Thu, 2 Jun 2005 16:31:08 +0100
> The forum has been very quiet for a while but Im still hoping someone
> will be able to help with probably a very simple query.
>
> Im trying to copy all the contents of an HTML file into
> another file but
> I get a duplicate <HTML> tag at the start. Ive tried out loads of
> options but theres always a duplication of the first
> <xsl:apply-templates> expression.

The reason is that you have:

<xsl:copy>
  <xsl:copy-of select="."/>

..which copies the <html> element by itself (xsl:copy), and then copies
the <html> element, it's attributes and all it's descendents
(xsl:copy-of).

I think you are after the 'identity stylesheet':

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

This is the basis for the stylesheet when you want to copy most of the
xml, making a few changes here and there.

Cheers
andrew

Current Thread