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 |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Xsl:copy-of writes xmlns:xsi , binu.idicula | Thread | RE: [xsl] Xsl:copy-of writes xmlns:, binu.idicula |
RE: [xsl] Saxon Transformation, Michael Kay | Date | RE: [xsl] Xsl:copy-of writes xmlns:, binu.idicula |
Month |