[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: Does the count() function require access to the wh

Subject: Re: Does the count() function require access to the whole subtree?
From: Wendell Piez <wapiez@xxxxxxxxxxxxxxx>
Date: Sun, 12 Jan 2014 15:58:14 -0500
Re:  Does the count() function require access to the wh
Hi,

I think the confusion here is because we are talking about two different
counts.

Within the context of node $n, count($n) would be an inspection
operation. Dimitre points out that we know the answer would be 1
(statically), but this isn't always the case, for example, for
count($n[expr]. If expr can also be found by inspection -- say in the
case of count($n[starts-with(local-name(),'c'))], we are okay.

It's traversing the subtree rooted at $n that's not an inspection
operation; this requires access to the nodes under $n, so it would be
an absorption operation. So from context $n, count($n/some/path) is
not going to be streamable unless we allow it to "absorb" $n in doing
so -- not because of the count(), but because of the traversal.

Just winging it here, but this makes sense doesn't it?

Cheers, Wendell

BTW, Dimitre, remember that for some nodes, count(..) returns 0..,. :-)
Wendell Piez | http://www.wendellpiez.com
XML | XSLT | electronic publishing
Eat Your Vegetables
_____oo_________o_o___ooooo____ooooooo_^


On Sun, Jan 12, 2014 at 2:27 PM, Michael Kay <mike@xxxxxxxxxxxx> wrote:
>
>>
>> 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?
>>
>
> If you are evaluating count() or exists() on a sequence of nodes S, then
when you encounter a node N that is a member of this sequence you know its
impact on the result as soon as you see its start tag; you do not need to look
at its subtree. This makes it different from, say, sum() or "=". This means
that the existence of overlapping nodes within S is no problem for count() or
exists(), whereas it is a problem for sum() or "=".
>
> Michael Kay
> Saxonica

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.