- From: <bugzilla@jessica.w3.org>
- Date: Sat, 27 Jun 2015 23:25:00 +0000
- To: public-qt-comments@w3.org
https://www.w3.org/Bugs/Public/show_bug.cgi?id=28791 Abel Braaksma <abel.braaksma@xs4all.nl> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |abel.braaksma@xs4all.nl --- Comment #2 from Abel Braaksma <abel.braaksma@xs4all.nl> --- > (a) rule 1, which handles the case where the LHS is grounded, is missing for > the bang operator. [...] As far as I can see, if this rule is needed for > xsl:for-each, then it is also needed for the bang operator, and indeed for "/". This seems to only apply to fn:current, which is now covered in Bug 28833. > (b) I can't see anything disallowed by rule 2 that isn't also disallowed by > rule 3a. Rule 2 prevents overlapping nodes to be consumed in the body of the for-each (crawling context, then motionless for-each seqtor). Rule 3a covers "normal" cases with non-overlapping context posture, in which case the body is allowed to be consuming. In the case of the mapping operator, a semantically similar expression is (a//b)!string(.). We allow this currently in the mapping operator, same way we allow string(a//b) (the "minimal buffer" rule). With for-each, this gives more problems, as the body could, for instance, do an apply-templates. I'm not sure we need to restrict this for map expressions. > (c) Rule 3b is blatantly different from the rule for the bang operator. I > think the rule for bang is seriously wrong here. Consider "author!." or > "author!name()" - the "wider sweep" rule would give us consuming, but the > current rule gives us motionless. Yes, I think it should work similar to path expressions, where the "wider sweep" rule actually exists. So this needs to be fixed for map expressions. > One difference between A!B and <xsl:for-each select="A"><xsl:sequence > select="B"/></xsl:for-each> is that the semantics of a call to current() > within B are different. This case is of course relevant. Yes, see Bug 28833. But also that a sequence constructor can have constructs like apply-templates and xsl:fork, which is not possible in a mapping expression. One might argue that you can create a streamable stylesheet function, but rules restrict overlapping nodes to be consumed by a streamable stylesheet function (by 19.8.5.5 and 19.8.5.6, rule 3). -- You are receiving this mail because: You are the QA Contact for the bug.
Received on Saturday, 27 June 2015 23:25:06 UTC