Subject: RE: 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: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
|