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: Michael Kay <mike@xxxxxxxxxxxx>
Date: Mon, 13 Jan 2014 12:14:26 +0000
On 13 Jan 2014, at 11:59, Wolfgang Laun <wolfgang.laun@xxxxxxxxx> wrote:

> With growing insecurity ;-)
>
> My understanding is that count($x) may be called on the construction
> of a sequence which (the construction) is not streamable, and that
> calling count(...) on it does not make it streamable.
>
> Another thing: calling count(...) doesn't require to be positioned
anywhere.
>

Sorry, but I'm afraid I don't even understand what you're saying/asking here.
What do you mean by an expression being positioned?

What we are discussing, is in simplified terms, the fact that count(//x) is
streamable, but data(//x) is not. Here //x is a "crawling" expression - one
that selects nodes which may overlap each other. When an expression returns
(potentially) overlapping nodes, the W3C spec says you can apply inspection
operations like count() to those nodes, but you cannot apply absorption
expressions like data(), because doing so would require buffering.

Michael Kay
Saxonica

Current Thread