Subject: Re: [xsl] Getting the root namespace from the input document From: "bryan rasmussen" <rasmussen.bryan@xxxxxxxxx> Date: Tue, 6 Feb 2007 13:14:47 +0100 |
hmm, I changed expect to mean what I understand of the standard when discussing saxon 6 but did not indicate this change in language.
Cheers, Bryan Rasmussen
___________________________________________________________________________Okay I have to say that xalan and xsltproc give the results I would expect from an XSLT 1.0 processor (not expect as in asserting this is what the standard says but just expect as in what I would predict would be the result) and saxon 6 gives the result I would expect for an XSLT 2.0 processor.
Now I guess the question is, as you indicated before, if the expectation meets a standard requirement. cheers, Bryan Rasmussen
On 2/6/07, Florent Georges <darkman_spam@xxxxxxxx> wrote: > Here are the results on Xalan, xsltproc, Saxon 6 and Saxon 8: > > ~/tests$ xalan -XSL namespace-double.xsl -IN namespace-double.xml > <my:same xmlns:my="namespace-double.xsl" added="my:value"> > <my:other xmlns:my="other-uri" added="my:value"/> > </my:same> > > ~/tests$ xsltproc namespace-double.xsl namespace-double.xml > <my:same xmlns:my="namespace-double.xsl" added="my:value"> > <my:other xmlns:my="other-uri" added="my:value"/> > </my:same> > > ~/tests$ saxon namespace-double.xml namespace-double.xsl > Warning: at xsl:stylesheet on line 6 of namespace-double.xsl: > Running an XSLT 1.0 stylesheet with an XSLT 2.0 processor > <my:same xmlns:my="namespace-double.xsl" added="my:value"> > <my:other xmlns:my="other-uri" added="my:value"/> > </my:same> > > ~/tests$ saxon6 namespace-double.xml namespace-double.xsl > Error at xsl:copy-of on line 15 of namespace-double.xsl: > Cannot create two namespace nodes with the same name > Transformation failed: Run-time errors were reported > > ~/tests$ > > Regards, > > --drkm > > > bryan rasmussen wrote: > > > Okay I haven't gone and checked but I would expect that some > > processors would change the namespace to fit the copy-of namespace. > > At > > any rate what were the outputs like? Did you have an output from the > > processors that was illegal? If not, what did they do? > > > > This seems like a useful transform to test a lot of processor outputs > > on actually. > > Cheers, > > Bryan Rasmussen > > > > On 2/6/07, Florent Georges <darkman_spam@xxxxxxxx> wrote: > > > Michael Kay wrote: > > > > > > Hi > > > > > > > There's also sometimes a theoretical risk that prefixes > > > > will be changed because XSLT 1.0 permits it > > > > > > Yes, it is what I thought about. > > > > > > > but mainstream processors all do the decent thing in > > > > straightforward cases. > > > > > > And that is why I use it. But I'm not very comfortable > > > with the use of this "observable behaviour" without knowing > > > exactly how this happens (prefixes will be changed in > > > particular cases or not?). > > > > > > In XSLT 2.0, the transformation fails if you try to create > > > a namespace node whose the prefix is already bound to > > > another namespace URI. I like that. In XSLT 1.0, the > > > transformation succeed, your result is not correct and the > > > error will propagate further in the chain. > > > > > > Mmh, before to post, I just wrote a little test. Input: > > > > > > <my:same xmlns:my="namespace-double.xsl"> > > > <my:other xmlns:my="other-uri"/> > > > </my:same> > > > > > > Stylesheet: > > > > > > <xsl:stylesheet > > > xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > > > xmlns:exsl="http://exslt.org/common" > > > xmlns:my="namespace-double.xsl" > > > exclude-result-prefixes="exsl" > > > version="1.0"> > > > > > > <xsl:output indent="yes" omit-xml-declaration="yes"/> > > > > > > <xsl:template match="*"> > > > <xsl:variable name="dummy-ns"> > > > <my:e/> > > > </xsl:variable> > > > <xsl:copy> > > > <xsl:copy-of select=" > > > exsl:node-set($dummy-ns)/*/namespace::*"/> > > > <xsl:attribute name="added">my:value</xsl:attribute> > > > <xsl:apply-templates select="@*|node()"/> > > > </xsl:copy> > > > </xsl:template> > > > > > > <xsl:template match="@*|node()" priority="-1"> > > > <xsl:copy> > > > <xsl:apply-templates select="@*|node()"/> > > > </xsl:copy> > > > </xsl:template> > > > > > > </xsl:stylesheet> > > > > > > I tested it with Saxon 6, Saxon 8, Xalan and xsltproc. > > > Actually, Saxon 6 was the only one to generate an error: > > > > > > Error at xsl:copy-of on line 16 of namespace-double.xsl: > > > Cannot create two namespace nodes with the same name > > > Transformation failed: Run-time errors were reported > > > > > > I thought in this case an XSLT 1.0 processor will change > > > one of the prefixes and not generate an error, but I didn't > > > find the right verses in the XSLT 1.0 REC. Does any one > > > know those verses? > > > > > > Furthemore, I thought Saxon 8 didn't throw an error > > > because it was in compatibility mode, but the transformation > > > succeed even with an XSLT 2.0 stylesheet. It fails if we > > > use xsl:namespace to create the node, but not if we use > > > xsl:copy-of to copy it. Again, I didn't find in the XSLT > > > 2.0 REC the difference between xsl:namespace and xsl:copy-of > > > regarding the duplicate namespace node names. Any pointer? > > > > > > Regards, > > > > > > --drkm > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >
___________________________________________________________________________> > > Dicouvrez une nouvelle fagon d'obtenir des riponses ` toutes vos > > questions ! > > > Profitez des connaissances, des opinions et des expiriences des > > internautes sur Yahoo! Questions/Riponses > > > http://fr.answers.yahoo.com > > > > > > > > > > > >
> Dicouvrez une nouvelle fagon d'obtenir des riponses ` toutes vos questions!
> Profitez des connaissances, des opinions et des expiriences desinternautes sur Yahoo! Questions/Riponses
> http://fr.answers.yahoo.com
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Getting the root namespac, bryan rasmussen | Thread | RE: [xsl] Getting the root namespac, Michael Kay |
Re: [xsl] Getting the root namespac, bryan rasmussen | Date | [xsl] Move leading/trailing spaces , Yves Forkl |
Month |