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