xsl-list
[Top] [All Lists]

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

2007-03-05 03:56:07
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(_at_)saxonica(_dot_)com]
Sent: Monday, March 05, 2007 2:53 PM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
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/


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)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

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--