[Bug 29983] [XSLT30] Scanning expressions and function calls

https://www.w3.org/Bugs/Public/show_bug.cgi?id=29983

--- Comment #4 from Abel Braaksma <abel.braaksma@xs4all.nl> ---
This is a very clear explanation and I believe helps a lot in understanding
scanning expressions, thanks.

I'd be interested in your thoughts to add one more line, something like:

"One might be tempted to extend scanning expressions to ordinary expressions,
and certain processors may be able to do so by rewriting ordinary expressions
into scanning expressions, but these particular rules are deliberately limited
to path expressions where each step is itself a step, filter or union
expression."

I know we normally don't show counter-examples, but I think it wouldn't hurt to
add one or two scanning expressions that are either not valid scanning
expressions or that are not streamable (we presently have one such example). I
also think it wouldn't hurt to add a union and filter expression:

* f:deep-descent(book)/author, if f:deep-descent is a streamable function with
streamability of deep-descent, its posture is crawling. The step expression
/child:author is striding. This is not a scanning expression and according to
the rules in *Axis Steps* this expression is roaming and free-ranging.

* .//account | .//ACCOUNT is a union expression that is a scanning expression
with resulting posture crawling.

* (list/person except list/person[@age > 12])[@state='NY'] is a filter
expression with an embedded except expression that is a scanning expression and
the expression as a whole is a scanning expression with crawling result
posture.

* catalog//author[name = 'Tolkien'] is roaming and free-ranging, because the
predicate is not motionless. Here, the expression catalog//author would be a
scanning expression, but with the predicate it becomes free-ranging.

-- 
You are receiving this mail because:
You are the QA Contact for the bug.

Received on Friday, 11 November 2016 10:25:28 UTC