xsl-list
[Top] [All Lists]

Re: [xsl] Does the count() function require access to the whole subtree?

2014-01-12 07:28:12
On 12/01/2014 11:34, Andrew Welch wrote:
On 12 January 2014 11:10, Costello, Roger L. <costello(_at_)mitre(_dot_)org>
wrote:
A couple days ago Michael Kay wrote:

Inspection operations on an element are operations that can be
performed while positioned at the start tag.

Inspection operations include: count(), exists(), name().

Absorption operations are operations that require access to the
whole subtree.

Absorption operations include: string(), data(), xsl:value-of

Michael, doesn't the count() function require access to the whole
subtree? How would a count be conducted by sitting at the top of a
subtree? Perhaps you meant to say that the count() function is an
absorption operation?

I wondered this too... I'm guessing you could do a look-ahead of the
 xml parsing the structure without any text nodes, then you have the
 'metadata' without the content.  Will be interesting to find out...





I think the way to think of it is to see that given a sequence of nodes
$seq then count($seq) doesn't require you to access anything that you
haven't already accessed (even if you are in a streaming context and
some of the nodes are still being streamed)

conversely string-join($seq,'') or $seq/string(.) do require you to
fully access the content of every node in the sequence so access to
every subtree below each node in the sequence.

David



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