xsl-list
[Top] [All Lists]

possible to use copy-of without namespace

2003-01-07 21:03:22

Hello dear reader,

i try to get a 1:1 copy of a tree (using xsl:copy-of) without having the xmlns attribute set in the root node of the result tree.

http://www.w3.org/TR/xslt#copy-of says "copying an element node copies the attribute nodes, namespace nodes and children of the element node as well as the element node itself"

Is there a possibility to avoid the xmlns attribute added?

In the following, i have a simple document b.xml which is transformed with a.xsl:

b.xml ---

<?xml-stylesheet type="text/xsl" href="a.xsl"?>
<ans:mydoc xmlns:ans="http://www.someurl.com/a"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>

        <ans:anode>anodevalue1</ans:anode>

        <somenode>
                <![CDATA[
                <somechildnode>childvalue1</somechildnode>
                ]]>
        </somenode>

        <anothernode>
                <anotherchildnode>anotherchildvalue1</anotherchildnode>
        </anothernode>

</ans:mydoc>

a.xsl ---

<?xml version="1.0" encoding="ISO-8859-1"?>

<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
xmlns:ans="http://www.someurl.com/a"; exclude-result-prefixes="ans"
version="1.0">

<xsl:output method="xml" encoding="iso-8859-1" indent="yes" omit-xml-declaration="no"/>

        <xsl:template match="ans:mydoc">
                <xsl:element name="result">
                        <xsl:copy-of select="ans:anode" />
<xsl:value-of select="somenode" disable-output-escaping="yes"/>
                        <xsl:copy-of select="anothernode"/>
                </xsl:element>
        </xsl:template>

</xsl:stylesheet>

---

the result is:

<?xml version="1.0" encoding="iso-8859-1"?>
<result>
<ans:anode xmlns:ans="http://www.someurl.com/a"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>anodevalue1</ans:anode>

<somechildnode>childvalue1</somechildnode> <!-- how it should be -->

<anothernode xmlns:ans="http://www.someurl.com/a"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
<anotherchildnode>anotherchildvalue1</anotherchildnode>
</anothernode>
</result>

---

The best result I get is by using <![CDATA[ ]]> in b.xml, and then take it as a string (xsl:value-of), and printing it out with disable-output-escaping="yes". This produces the desired output, but it is not a very good solution.

I think there must be a way to avoid the xmlns attributes to show up..

Any help is very appreciated

Regards,
 Thomas Brand


XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



<Prev in Thread] Current Thread [Next in Thread>