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/8/2005 9:42:00 PM 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 | |||
|
