xsl-list
[Top] [All Lists]

Re: [xsl] Nicer way to change context-node than xsl:for-each ?

2009-12-07 09:55:28
2009/12/7 Dimitre Novatchev <dnovatchev(_at_)gmail(_dot_)com>:
On Mon, Dec 7, 2009 at 2:45 AM, Andrew Welch 
<andrew(_dot_)j(_dot_)welch(_at_)gmail(_dot_)com> wrote:

Hmm, an empty <xsl:apply-templates/> is always push, regardless of
mode or namespaces.  If a select attribute is used, then it becomes
pull.

Yes, the select attribute is important. Thanks for reminding this.


I can't see how the number of templates involved, the modes or
namespaces have any affect on whether its pull or push...?   For
example, are you saying:

<xsl:apply-templates mode="foo"/>

...is pull when only a single template exists with that mode, but push
otherwise?

Yes, if we know (or it is guaranteed) that only one template is in the
mode "foo", then

<xsl:apply-templates mode="foo"/>

is in "pull style" as we exactly know what particular template will be
selected for processing (as there is only one such template).

Do you?  It depends on the match pattern for that template surely?
You still have the inbuilt templates...

One could argue that even if this guarantee doesn't exist we still
have "push style" here. For me it is not "pure push style" if you are
not 100% sure which template will be selected for processing (and this
is the case when more than one templates could be selected: which one
depends on the individual nodes in the current node-list.


When we know that only one particular template will be selected for
processing and we know exactly which it is, then we "are in full
control" and this is "pull style" processing.


The way I have always understood it is that it's purely about document
order driving the transform.  What happens to the node list once its
constructed and ordered doesn't matter, push vs pull is simply about
how that list is constructed and ordered.




-- 
Andrew Welch
http://andrewjwelch.com
Kernow: http://kernowforsaxon.sf.net/

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--