Re: Re: namespace change, what am I missing here?
2003-06-29 21:30:53
OK :-) I have a work-around so I'm not in a panic about this, but I can
confirm it's still present with the latest libxml now.
%%%%%%%% xsltproc -V
Using libxml 20507, 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
%%%%%%%% xsltproc --stringparam "new_namespace" "foo" \
renamespace.xsl test.orig.xml
-> renamespace.xsl test.orig.xml
re_namespace'ing
<?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>
BTW, I'm using this script because some most RSS 2.0 news feeds don't
come with a namespace included. The stylesheet I have, that converts
RSS into HTML, likes to have the namespace in order to work properly.
So, with AxKit, I will simply feed the source RSS through this XSLT to
assign it into the right namespace, and then pipe it into the RSS2XHTML
stylesheet. I don't know, but people might find this little stylesheet
useful since it parameterizes the namespace change and the location of
the file to change (although, at least in xsltproc, I still have to
provide an empty source file).
Simon
On Sunday, June 29, 2003, at 01:15 PM, S Woodside wrote:
Doh. I'm not running the latest libxml, 2.5.7, because it's not in
fink yet. So I know that Daniel will bite my head off ;-) if I report
it as a bug until I get onto the latest release.
Thanks,
simon
On Sunday, June 29, 2003, at 04:10 AM, Dimitre Novatchev wrote:
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(_at_)yahoo(_dot_)com> wrote in message
news:CA9A6736-AA01-11D7-A93E-000393414368(_at_)yahoo(_dot_)com(_dot_)(_dot_)(_dot_)
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
|
|