RE: [xsl] Getting rid of a namespace declaration

Subject: RE: [xsl] Getting rid of a namespace declaration
From: "Michael Kay" <mhk@xxxxxxxxx>
Date: Mon, 15 Mar 2004 14:15:45 -0000
# The result looks like this and I don't want those xmlns attributes ...
# 
# 
#     <div class="content" id="content">
#             <h1 xmlns="http://www.w3.org/1999/xhtml";>The Census</h1>

The namespace declaration is there because namespaces used in your element
and attribute names must be declared. If you don't want the namespace
declared, don't use it in your element and attribute names.

You have generated an element whose local-name is h1 and whose namespace is
http://www.w3.org/1999/xhtml. If you don't want the namespace declaration,
then you need to generate the element so it doesn't get put in that
namespace. This means it is no longer a copy of the element in the source
document, so you can't generate it using <xsl:copy-of>. If you want to "copy
without copying namespaces", write a recursive template such as:

<xsl:template match="*">
  <xsl:element name="{local-name()}">
    <xsl:copy-of select="@*"/>
    <xsl:apply-templates/>
  </
</

Michael Kay


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


Current Thread