[xsl] Controlling namespace in output

Subject: [xsl] Controlling namespace in output
From: Peter Desjardins <peter.desjardins.us@xxxxxxxxx>
Date: Thu, 16 Dec 2010 18:27:56 -0500
Hi.

I've a few articles on controlling namespaces in output but I could
use a little advice. I'm trying to create DocBook 5.0 output. My
processor is Saxon HE 9.2.1.1.

I added the DocBook namespace to the root element of my output. Why do
its children have null namespaces (xmlns="")? How can I prevent them
from having explicit namespaces?

Here are the source, stylesheet, desired output, and actual output.
Thanks for your help!

Peter

**********************************
Source XML:

<root>
  <title>A Section Title</title>
  <para>Hello</para>
</root>

**********************************
XSLT 2.0 stylesheet:

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
	<xsl:output method="xml" indent="yes"/>
	<xsl:template match="root">
		<xsl:element name="section" namespace="http://docbook.org/ns/docbook";>
			<xsl:attribute name="version">5.0</xsl:attribute>
			<xsl:attribute name="xml:id">myIdentifier</xsl:attribute>
			<xsl:copy-of select="*"/>
		</xsl:element>
	</xsl:template>
</xsl:stylesheet>

**********************************
Desired output:

<?xml version="1.0" encoding="UTF-8"?>
<section xmlns="http://docbook.org/ns/docbook"; version="5.0"
xml:id="myIdentifier"
  <title>A Section Title</title>
  <para>Hello</para>
</section>

**********************************
Actual output:

<?xml version="1.0" encoding="UTF-8"?>
<section xmlns="http://docbook.org/ns/docbook"; version="5.0"
xml:id="myIdentifier">
   <title xmlns="">A Section Title</title>
   <para xmlns="">Hello</para>
</section>

Current Thread