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. >>>>>
