RE: [xsl] Renaming an element when using copy-of

Subject: RE: [xsl] Renaming an element when using copy-of
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Tue, 13 Jun 2006 21:03:48 +0100
You can't do it using xsl:copy-of. Instead you walk the tree using
xsl:apply-templates, changing the name of each node as you go. If there are
nodes you don't want to change, you can handle them with an identity
template:

<xsl:template match="*">
  <xsl:copy>
  <xsl:copy-of select="@*"/>
  <xsl:apply-templates/>
  </xsl:copy>
</xsl:template>

and then you just write additional rules for the nodes you do want to
change.

Michael Kay
http://www.saxonica.com/ 

> -----Original Message-----
> From: Chad Chelius [mailto:cchelius@xxxxxxxxxxxxxxx] 
> Sent: 13 June 2006 20:02
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] Renaming an element when using copy-of
> 
> I am trying to copy the contents of an element called 
> <source> using a template but I want to change it's name when 
> doing so. This <source> element contains several children 
> that I want to carry over but I also want to rename them as 
> well. I'm currently using:
> 
> <xsl:copy-of select="source"/>
> 
> This works but I want to change the name of source. How do I do this?

Current Thread