Re: [xsl] How to remove unnecessary "xmlns:xx" attributes?

Subject: Re: [xsl] How to remove unnecessary "xmlns:xx" attributes?
From: Abel Braaksma <abel.online@xxxxxxxxx>
Date: Wed, 10 Nov 2010 17:54:09 +0100
Hi Wolfgang,


If one of the grand wizards would kindly review my solution:

That won't be me, but let's give it a try regardless ;)


<xsl:copy copy-namespaces = "no">

You don't want the namespaces but the output:


     <?xml version="1.0" encoding="UTF-8"?>
<doc xmlns="p/q/r" xmlns:abc="a/b/c" xmlns:def="d/e/f" xmlns:ghi="g/h/i">
   <abc:bef>The quick brown fox jumps over the lazy dog</abc:bef>

still contains them. Reason? You are copying nodes that belong to a certain namespace, not copying it would mean that the copy had changed the node name, which it cannot do. The only thing that copy-namespaces="no" prevents is adding the namespace to the node itself (and its children). The mandatory namespace fixup process then makes sure that the element belongs to the correct namespace by applying the correct namespace prefix.


If you want to keep the local part and remove the namespace part of an element, you'll have to use xsl:element with only a local-part. This will create different elements and it is likely that if your XML document is meant to be processed by any application that expects the elements in a certain namespace, that the application will fail.

Kind regards,

Abel Braaksma

Current Thread