- From: <bugzilla@jessica.w3.org>
- Date: Sun, 06 Nov 2016 09:45:27 +0000
- To: public-qt-comments@w3.org
https://www.w3.org/Bugs/Public/show_bug.cgi?id=29983 Bug ID: 29983 Summary: [XSLT30] Scanning expressions and function calls Product: XPath / XQuery / XSLT Version: Candidate Recommendation Hardware: PC OS: Windows NT Status: NEW Severity: normal Priority: P2 Component: XSLT 3.0 Assignee: mike@saxonica.com Reporter: abel.braaksma@xs4all.nl QA Contact: public-qt-comments@w3.org Target Milestone: --- This issue is a reality check. I found myself writing: f:someDeepDescent(foo)/bar I believed it was allowed and guaranteed streamable, because it is essentially a scanning expression. The lh-side of "/" returns a crawling expression, the rh-side does a name-test for each child. It is a scanning expression in my mental model, but now I think this is wrong. A scanning expression is only a scanning expression if it can be rewritten, i.e.: a//b/c can be rewritten as (not entirely correctly so, but to get the gist): descendent-or-self::c[parent::b[ancestor-or-self::a]] Since everything inside [...] is motionless, this works. My mental model was: take any crawling expression and add a striding or crawling expression, result is a crawling expression. The function above is assessed as crawling expression. However, it cannot be rewritten trivially, so it does not qualify as a scanning expression. Conclusion: *not* guaranteed streamable. I think the rules catch this correctly, I just spent a lot of time finding this out and wondering if my assessment is correct. -- You are receiving this mail because: You are the QA Contact for the bug.
Received on Sunday, 6 November 2016 09:45:33 UTC