- From: <bugzilla@jessica.w3.org>
- Date: Sun, 21 Jun 2015 14:32:54 +0000
- To: public-qt-comments@w3.org
https://www.w3.org/Bugs/Public/show_bug.cgi?id=28833 Bug ID: 28833 Summary: [XSLT30] Streamability of fn:current and varrefs should be roaming in higher-order operands Product: XPath / XQuery / XSLT Version: Last Call drafts 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 Originally reported internally to the XSLWG here: https://lists.w3.org/Archives/Member/w3c-xsl-wg/2015Jun/0043.html (member only) We have, under GSR 2.d.i: * If o is a higher-order operand of C, then roaming and free-ranging. However, I know of at least two places where the position is higher-order, but the GSR do not apply, leading to a gap in the analysis: 1) Map expressions 2) Path expressions Consider: row/current()/cell Here fn:current is in a higher-order position. It points to the current node which is disjoint from the <row> element. The expression requires free-ranging tree-walking to reach the <cell> element under fn:current, after <row> was visited. Note that the issue does not arise in an inspection context: row[current()]/cell Perhaps a clearer example on how this can go horribly wrong is; <xsl:apply-templates select="row/current()" /> At risk are, I think, the following: 1) variable references bound to a node 2) let $a := copy-of(b) return current() 3) function() { current() } (: or disallowed by function closure rules? :) 4) ForExpr, QuantifiedExpr are *not* at risk, they are described as having higher-order operands -- You are receiving this mail because: You are the QA Contact for the bug.
Received on Sunday, 21 June 2015 14:32:57 UTC