[xsl] Misunderstanding named initial template and precedence rules?

Subject: [xsl] Misunderstanding named initial template and precedence rules?
From: Abel Braaksma <abel.online@xxxxxxxxx>
Date: Wed, 28 Feb 2007 16:57:50 +0100
Hi List,

This struck me as very peculiar today, when I was researching a bug in my xslt templates: calling an initial template does *not* mean that the template with the highest import precedence is called.... This sounds like an implementation bug to me, but I don't have all the spec rules clear, hence I ask you (the list) first.

Two stylesheets:

** IMPORTED **
<xsl:stylesheet version = "2.0"
   xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"; >

   <xsl:template match="/" name="main" >
       <low-precedence />
   </xsl:template>
</xsl:stylesheet>

** IMPORTING **
<xsl:stylesheet version = "2.0"
   xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"; >

<xsl:import href="import.xslt"/>

   <xsl:template match="/" name="main" >
       <high-precedence />
   </xsl:template>
</xsl:stylesheet>


Call this stylesheet with initial template set to "main" and the output is:


<low-precedence />

Expected output is:

<high-precedence />


I wanted to test this behavior with other processors than Saxon that (claim to) be xslt 2 compliant, i.e., AltovaXML, but alas, it does not support the named initial template. I called Saxon like this:


java -jar saxon8.jar -it main importing.xslt


Imho, this behavior is either erroneous, or if not, unwanted, because it does not fit the normal import precedence rules. Am I wrong? Is there a special treatment for import precedence when it comes to a named initial template? Setting priority did not change this behavior (but, afaik, that only applies for equal import precedence).


Cheers,
-- Abel Braaksma

Current Thread