Re: [xsl] Replacing default namespace

Subject: Re: [xsl] Replacing default namespace
From: Martin Honnen <Martin.Honnen@xxxxxx>
Date: Mon, 02 Jul 2007 13:46:27 +0200
Abel Braaksma wrote:
Martin Honnen wrote:

To avoid that use a template like this


  <xsl:template match="*">
    <xsl:element name="{name()}" namespace="{namespace-uri()}">
      <xsl:apply-templates select="@* | node()"/>
    </xsl:element>
  </xsl:template>

for element nodes that you want to copy without its namespaces nodes.

Your code mimics the xsl:copy behavior. I assume you meant:


<xsl:element name="{name()}" namespace="http://othernamespace";>

No, the original stylesheet had some templates for certain elements, for instance the root element of the original input document. For other elements it had the identity transformation template leading to elements like


<xs:simpleType xmlns:tns="http://tempuri.org/"; name="addrFormat">
<service xmlns:tns="http://tempuri.org/"; name="SessionsService">

in the result document as the xmlns:tns declarations were in scope from the root element of the input document. And the original poster wanted to get rid of the xmlns:tns on the elements above. That can be achieved by replacing the identity transformation template in the original stylesheet with my suggestion.



--


	Martin Honnen
	http://JavaScript.FAQTs.com/

Current Thread