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 10:55:45 -0000
> I used the following .. But the problem was that it is not 
> copying nested. 

Yes, my code was right and yours is wrong, so please use mine.

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


> It just copies the direct chile element nodes. If the child 
> element has another child, do I have to write one more 
> for-each OR is there a simple way.
> 
>             <xsl:for-each select="./*">
>                 <xsl:element name="{name()}"
> namespace="{namespace-uri()}">
>                 <xsl:copy-of select="@*"/>
>                 <xsl:apply-templates/>
>             </xsl:element>
>             </xsl:for-each>
> 
> Once I select a particular node, all the contents (including 
> next level
> - children) should be translated to another XML. Please advice.
> 
> regards
> Binu Kuttikkattu Idicula
> 
> -----Original Message-----
> From: Michael Kay [mailto:mike@xxxxxxxxxxxx]
> Sent: Monday, March 05, 2007 2:53 PM
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: RE: [xsl] Xsl:copy-of writes xmlns:xsi always - Any 
> way to avoid this?
> 
> >   
> > 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/
> 
> 
> 
> The information contained in this electronic message and any 
> attachments to this message are intended for the exclusive 
> use of the addressee(s) and may contain proprietary, 
> confidential or privileged information. If you are not the 
> intended recipient, you should not disseminate, distribute or 
> copy this e-mail. Please notify the sender immediately and 
> destroy all copies of this message and any attachments. 
> 
> WARNING: Computer viruses can be transmitted via email. The 
> recipient should check this email and any attachments for the 
> presence of viruses. The company accepts no liability for any 
> damage caused by any virus transmitted by this email.
>  
> www.wipro.com

Current Thread