Oxygen XML Editor
 
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

RE: [xsl] Xsl:copy-of writes xmlns:xsi always - Any way to avoid this?


Subject: RE: [xsl] Xsl:copy-of writes xmlns:xsi always - Any way to avoid this?
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Mon, 5 Mar 2007 09:23:24 -0000

> Hi,
>   I use <xsl:copy-of select="./*"/> to select child elements 
> of a node which passes <xsl:when>. However copy-of is 
> inserting 
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance with 
> each child element it selects. 

In XSLT 2.0 you can copy an element without copying its namespaces using the
copy-namespaces="no" attribute.

In XSLT 1.0 the answer is no. xsl:copy-of copies a tree unchanged, which
includes its namespace nodes (remember that in the data model, an element
has namespace nodes corresponding to all in-scope namespaces, including
those declared on ancestor elements). You only remedy is not to use
xsl:copy-of, but to do a manual copy using a modified identity template:

<xsl:template match="*">
  <xsl:element name="{name()}" namespace="{namespace-uri()}">
  <xsl:copy-of select="@*"/>
  <xsl:apply-templates/>
  </xsl:element>
</xsl:template>

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


Current Thread
 
© 2002-2008 SyncRO Soft Ltd. All rights reserved. | Sitemap | Privacy Policy
This website was created & generated with <oXygen/> XML Editor
Keywords