Altova Mailing List Archives>Archive Index >microsoft.public.xml Archive Home >Recent entries >Thread Prev - Re: match attribute for xsl:template >Thread Next - Re: match attribute for xsl:template Re: match attribute for xsl:templateTo: NULL Date: 11/9/2005 10:44:00 AM Hi Guys, yeah.. I did it too a while back and thats why i also thought it should be doable. To be honest, it might be a bug in Saxon but if i had a say in it; i would call it a bug / missing feature in the spec. My assumption is that the indexes are being build before the parameters are evaluated or it's a performance issue (0 dynamics in the source pattern makes it somewhat easier & performant). I checked the "#NT-VariableReference" of the spec, but i couldn't find the "match does not allow this". Oleg; If you have any more specific links to the paragraph stating this info, please post them. Marvin Smit. On Tue, 08 Nov 2005 21:41:54 +0000, Peter Flynn <peter.nosp@m...> wrote: >Oleg Tkachenko [MVP] wrote: > >> Peter Flynn wrote: >> >>>>No, variable references cannot be used in match, even within a >>>>predicate. >>> >>> >>> Parameter references can: >>> >>> <?xml version="1.0" encoding="ISO-8859-1"?> >>> <doc> >>> <foo>bar</foo> >>> <bar>foo</bar> >>> </doc> >>> >>> <?xml version="1.0" encoding="iso-8859-1"?> >>> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >>> version="1.0"> >>> >>> <xsl:output method="html"/> >>> <xsl:param name="ename"/> >>> >>> <xsl:template match="*[name()=$ename]"> >> >> No, that's invalid XSLT. And Saxon, MSXML and .NET all refuse to >> process it. XSLT 1.0 spec says explicitly: >> "It is an error for the value of the match attribute to contain a >> VariableReference [http://www.w3.org/TR/xpath#NT-VariableReference]". >> And XPath makes no difference between variables and parameters. > >I'm sorry, Saxon8 processes it without complaint: that's why I >posted it -- I tested it before posting. > >If this is a bug we should probably report it, but it definitely >works: > >$ cat test.xml ><?xml version="1.0" encoding="ISO-8859-1"?> ><doc> > <foo>bar</foo> > <bar>foo</bar> ></doc> >$ cat test.xsl ><?xml version="1.0" encoding="iso-8859-1"?> ><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > version="1.0"> > > <xsl:output method="html"/> > <xsl:param name="ename"/> > > <xsl:template match="*[name()=$ename]"> > <blort> > <xsl:value-of select="."/> > </blort> > </xsl:template> > ></xsl:stylesheet> >$ /usr/java/jdk1.5.0_04/bin/java -jar /usr/local/saxon/b8.5/saxon8.jar >-o test.html test.xml test.xsl ename=foo >Warning: Running an XSLT 1.0 stylesheet with an XSLT 2.0 processor >$ cat test.html > ><blort>bar</blort> >foo >$ > >///Peter | ||||||
| Company | Legal | Press | Partners | Careers | Sitemap | Contact Us | Altova Blog | Mobile | Full Site | |||
|
