[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

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


Subject: Re: [xsl] Does the count() function require access to the whole subtree?
From: David Carlisle <davidc@xxxxxxxxx>
Date: Sun, 12 Jan 2014 13:27:57 +0000

On 12/01/2014 11:34, Andrew Welch wrote:
On 12 January 2014 11:10, Costello, Roger L. <costello@xxxxxxxxx>
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


Current Thread
Keywords
xml