xsl-list
[Top] [All Lists]

RE: Namespaces II

2003-07-02 02:51:35

Following XML:
--------------

<Content xmlns="urn:DTD930" 
xmlns:xlink="http://www.w3.org/1999/xlink";>
<text_eng>
<p>Test Test Test Test</p>
</text_eng>
</Content>

Following XSL-Stylesheet:
-------------------------

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; 
xmlns:text="urn:DTD930">

<xsl:template match="text:Content">
<xsl:apply-templates/>
</xsl:template>

<xsl:template match="text:text_eng">
<text_module xml:lang="en">
<xsl:copy-of select="*"/>
</text_module>
</xsl:template>

I get the following output:
---------------------------
<text_module xmlns="urn:DTD930" xml:lang="en">
<p xmlns="urn:DTD930">Test Test Test Test</p>
</text_module>

Question:
---------

Is there a way to get the xmlns attribute away (delete) from 
the output???

This is what I get with Saxon:

<text_module xml:lang="en" xmlns:text="urn:DTD930">
   <p xmlns="urn:DTD930" xmlns:xlink="http://www.w3.org/1999/xlink";>Test
Test Test Test</p>
</text_module>

Your output as shown is incorrect. Either you have made a cut-and-paste
error in transcribing it, or there is a bug in your processor.

The xmlns="urn:DTD930" declaration is necessary, because that's the
namespace that the <p> element is in. The text namespaces in the output
is unused, and can therefore be eliminated using
exclude-result-prefixes="text" on the xsl:stylesheet element. The xlink
namespace is also unused, but when you copy the <p> element, all its
in-scope namespaces are copied with it, "just in case". In XSLT 2.0 you
can prevent this using copy-namespaces="no" on the xsl:copy-of
instruction.

Michael Kay


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



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