[xsl] Re: namespace change, what am I missing here?

Subject: [xsl] Re: namespace change, what am I missing here?
From: "Dimitre Novatchev" <dnovatchev@xxxxxxxxx>
Date: Sun, 29 Jun 2003 10:10:09 +0200
This is probably a bug.

With MSXML3, MSXML4, Saxon 6.5.2, Xalan C 1.5, .Net xslTransform (nXSLT
command-line utility), JD, and 4XSLT I get this correct result:



<?xml version="1.0" encoding="utf-8"?>
<rss xmlns="foo" version="2.0">
  <channel>
    <title>Werblog</title>
    <link>http://werbach.com/blog/</link>
  </channel>
</rss>


=====
Cheers,

Dimitre Novatchev.
http://fxsl.sourceforge.net/ -- the home of FXSL



"S Woodside" <sbwoodside@xxxxxxxxx> wrote in message
news:CA9A6736-AA01-11D7-A93E-000393414368@xxxxxxxxxxxx
> Hi,
>
> I've got a stylesheet renamespace.xsl, that is intended to take an
> arbitrary XML file and change the namespace (no matter what it is) into
> an arbitrary new namespace. It's based on the FAQ. Both the location of
> the file and the new namespace are parameters. But when I run it
> through my script (it's all below) I get the namespace applied to all
> the child nodes but NOT the root node. Why not??
>
> Here's what I did:
>
> %%%%%%%% xsltproc -V
> Using libxml 20506, libxslt 10030 and libexslt 720
> xsltproc was compiled against libxml 20506, libxslt 10030 and libexslt
> 720
> libxslt 10030 was compiled against libxml 20506
> libexslt 720 was compiled against libxml 20506
>
> %%%%%%%% cat renamespace.xsl
> <?xml version="1.0" encoding="UTF-8"?>
> <xsl:stylesheet version="1.0"
>                  xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
>                  >
>
>    <xsl:param name="location"/>
>    <xsl:param name="new_namespace"/>
>
>    <xsl:template match="/">
>      <xsl:message>re_namespace'ing</xsl:message>
>      <!--<wrapper>-->
>        <xsl:choose>
>          <xsl:when test="$location != ''">
>            <xsl:apply-templates select="document($location)/node()"
> mode="renamespace"/>
>          </xsl:when>
>          <xsl:otherwise>
>            <xsl:apply-templates mode="renamespace"/>
>          </xsl:otherwise>
>        </xsl:choose>
>      <!--</wrapper>-->
>    </xsl:template>
>
>    <xsl:template match="*" mode="renamespace">
>      <xsl:element
>          name="{local-name()}"
>          namespace="{$new_namespace}">
>        <xsl:copy-of select="@*"/>
>        <xsl:apply-templates mode="renamespace"/>
>      </xsl:element>
>    </xsl:template>
>
> </xsl:stylesheet>
>
> %%%%%%%% cat test.orig.xml
> <?xml version="1.0"?>
> <rss version="2.0">
>          <channel>
>                  <title>Werblog</title>
>                  <link>http://werbach.com/blog/</link>
>
>          </channel>
> </rss>
>
> %%%%%%%% xsltproc --stringparam "new_namespace" "foo" \
>   renamespace.xsl test.orig.xml
> <?xml version="1.0"?>
> <rss xmlns:ns2="foo" version="2.0">
>          <ns2:channel>
>                  <ns2:title>Werblog</ns2:title>
>                  <ns2:link>http://werbach.com/blog/</ns2:link>
>
>          </ns2:channel>
> </rss>
>
>
> ****
>
> I would expect to get this:
>
> <?xml version="1.0"?>
> <ns2:rss xmlns:ns2="foo" version="2.0">
>          <ns2:channel>
>                  <ns2:title>Werblog</ns2:title>
>                  <ns2:link>http://werbach.com/blog/</ns2:link>
>
>          </ns2:channel>
> </rss>
>
>
> (i'm also not sure where the "ns2" is from but that doesn't matter to
> me.)
>
> simon
>
> --
> www.simonwoodside.com -- 99% Devil, 1% Angel
>
>
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
>
>




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


Current Thread