I'm sorry, I meant to say implicit templates.  I am not sure what you 
are referring to as default templates if not the implicit templates.

Chris

Morten Jorgensen wrote:

>Chris,
>
><xsl:apply-templates/> will still apply the implicit templates, but
><xsl:apply-imports/> does not apply the default templates. Apparently
>there is one exception to this rule; if <xsl:apply-imports/> is used
>in a stylesheet that has no imported stylesheets, then the default
>templates are applied.
>
>Morten Jorgensen,
>XML Technology Centre,
>Sun Microsystems Ireland ltd.
>
>
>Chris McCabe wrote:
>
>>Are you sure about that?  If I create a stylesheet with no templates
>>defined in it, and process something like:
>><foo>This is some text.</foo>
>>
>>I get the text printed out.  If I then import another stylesheet which
>>also has no templates, shouldn't I still get the same result?  Are you
>>saying that I should get nothing in this case?
>>
>>Chris
>>
>>Morten Jorgensen wrote:
>>
>>>Chris,
>>>
>>>This makes sense. But <xsl:apply-imports/> should not invoke default
>>>templates unless the current stylesheet does not import anything.
>>>
>>>Morten Jorgensen,
>>>XML Technology Centre,
>>>Sun Microsystems Ireland ltd.
>>>
>>>Chris McCabe wrote:
>>>
>>>>It should do whatever a "foo" element would do in E.xsl by itself, which
>>>>may or may not be nothing.  It could be the default template rule.  That
>>>>is how I would interpret the spec anyway.  I am pretty sure it should
>>>>not invoke the template from B.xsl.
>>>>
>>>>Chris
>>>>
>>>>Morten Jorgensen wrote:
>>>>
>>>>>I have spent some time on cleaning up XSLTC's implementation of
>>>>>the xsl:apply-imports element and I have come across a scenario
>>>>>that seems to be handled differently by the various XSLT processors.
>>>>>I'd like some help with determing what the correct behaviour for
>>>>>XSLTC is. Consider that you have these stylesheets:
>>>>>
>>>>>A.xsl imports B.xsl, which imports C.xsl
>>>>>A.xsl imports D.xsl, which imports E.xsl
>>>>>
>>>>>Stylesheets A, B, C and D all have a template that matches on
>>>>>an element "foo" - stylesheet E does _not_. This matching
>>>>>template looks like this (in all of the first 4 stylesheets):
>>>>>
>>>>><xsl:template match="foo">
>>>>>  <A><xsl:apply-imports/></A>
>>>>></xsl:template>
>>>>>
>>>>>The xsl:apply-imports elements is similar to a call to "super()"
>>>>>in Java, so the template in A.xsl triggers the template in D.xsl
>>>>>(because this is the imported template with the highest import
>>>>>precedence). There are no matching templates in E.xsl, so what
>>>>>should the template in D.xsl do?
>>>>>
>>>>>A) Nothing?
>>>>>B) Trigger the matching template in B.xsl?
>>>>>
>>>>>Saxon goes with option A), while Xalan (and currently XSLTC) goes
>>>>>with option B). I am tempted to say that Saxon is correct, as
>>>>>template D.xsl does not "inherit" any behaviour from template B.xsl.
>>>>>
>>>>>Any input welcome!
>>>>>
>>>>>Morten J�rgensen,
>>>>>XML Technology Centre,
>>>>>Sun Microsystems Ireland ltd.
>>>>>


Reply via email to