xsl-list
[Top] [All Lists]

Re: exclude-result-prefixes not removing the xmlns attribute in the root element

2006-01-03 04:15:27
May be I wasn't clear. I do not want to remove the namespace prefix
from all elements and attributes. I just want to remove
xmlns:wicket="http://wicket..."; from the root tag

thanks
Juergen

On 1/3/06, andrew welch <andrew(_dot_)j(_dot_)welch(_at_)gmail(_dot_)com> wrote:
On 1/3/06, Juergen Donnerstag <juergen(_dot_)donnerstag(_at_)gmail(_dot_)com> 
wrote:
I need to remove the xmlns attribute from the root tag of the output.
From various docs I understood that the xsl processor inserts it
automatically and by means of exclude-result-prefixes it can be
removed. In my case however the
xmlns:wicket="http://wicket.sourceforge.net"; attribute is already part
of the root tag of the input and it seems to me
exclude-result-prefixes="wicket" does not remove it. The output
actually is the same; with and without exclude-result
prefixes="wicket".

The xsl sheet I'm using:
<?xml version="1.0" encoding="ISO-8859-1"?>

<xsl:stylesheet version="1.0"
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
        xmlns:wicket="http://wicket.sourceforge.net";
        exclude-result-prefixes="wicket">

<xsl:output method="xml" omit-xml-declaration="yes"/>

<!--  Just copy everything. This is basically the same as xsl:copy-of -->
<xsl:template match="/ | @* | node()">
  <xsl:copy> <xsl:apply-templates select="@* | node()"/> </xsl:copy>
</xsl:template>

</xsl:stylesheet>

and the input:

<span xmlns:wicket="http://wicket.sourceforge.net";
wicket:id="test4"><span wicket:id="myBorder2"
testAttr="myValue"><wicket:border>before body -
<wicket:body>border</wicket:body> - after
body</wicket:border></span></span>

Any idea on how to remove xmlns:wicket from the output? Your help is
very much appreciated. Thanks

In 2.0 you can use copy-namespaces="no"

In 1.0, the namespace and element name are fixed together, the only
way to 'remove' it is to create a new element in no namespace, so
modify your identity transform to be:

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

<xsl:template match="@*">
        <xsl:attribute name="{local-name()}">
                <xsl:value-of select="."/>
        </xsl:attribute>
</xsl:template>

cheers
andrew

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--