Subject: Re: [xsl] Does the count() function require access to the whole subtree? From: Wendell Piez <wapiez@xxxxxxxxxxxxxxx> Date: Sun, 12 Jan 2014 15:58:14 -0500 |
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 |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Does the count() function, Michael Kay | Thread | Re: [xsl] Does the count() function, Andrew Welch |
Re: [xsl] Does the count() function, Michael Kay | Date | Re: [xsl] Does the count() function, Andrew Welch |
Month |