Home. 
.

transparent

transparent

transparent

Altova Mailing List Archives


Re: match attribute for xsl:template

From: Peter Flynn <peter.nosp@-.--------.-->
To: 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



transparent
Print
Mail
Like It
Disclaimer
.

These Archives are provided for informational purposes only and have been generated directly from the Altova mailing list archive system and are comprised of the lists set forth on www.altova.com/list/index.html. Therefore, Altova does not warrant or guarantee the accuracy, reliability, completeness, usefulness, non-infringement of intellectual property rights, or quality of any content on the Altova Mailing List Archive(s), regardless of who originates that content. You expressly understand and agree that you bear all risks associated with using or relying on that content. Altova will not be liable or responsible in any way for any content posted including, but not limited to, any errors or omissions in content, or for any losses or damage of any kind incurred as a result of the use of or reliance on any content. This disclaimer and limitation on liability is in addition to the disclaimers and limitations contained in the Website Terms of Use and elsewhere on the site.

.
.

transparent

transparent