Subject: Re: [xsl] exclude-result-prefixes not removing the xmlns attribute in the root element From: Juergen Donnerstag <juergen.donnerstag@xxxxxxxxx> Date: Tue, 3 Jan 2006 12:15:27 +0100 |
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.j.welch@xxxxxxxxx> wrote: > On 1/3/06, Juergen Donnerstag <juergen.donnerstag@xxxxxxxxx> 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
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] exclude-result-prefixes n, andrew welch | Thread | Re: [xsl] exclude-result-prefixes n, andrew welch |
Re: [xsl] exclude-result-prefixes n, andrew welch | Date | Re: [xsl] a bit of distraction ' qu, Geert Josten |
Month |