[Bug 25185] Usage absorption can take crawling expressions when TDU derives from xs:anyAtomicType

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

Michael Kay <mike@saxonica.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|CLOSED                      |REOPENED
         Resolution|FIXED                       |---

--- Comment #12 from Michael Kay <mike@saxonica.com> ---
Unfortunately this change introduced a bug.

Consider:

<xsl:for-each select="//*">
  <xsl:copy-of select="."/>
</xsl:for-each>

The rules for xsl:for-each say (rule 3)

(a) The posture of the instruction is the posture of the contained sequence
constructor, assessed with the context posture and context item type set to the
posture and type of the select expression.

(b) The sweep of the instruction is the wider of the sweep of the select
expression and the sweep of the contained sequence constructor.

The context posture is crawling, and the posture of xsl:copy-of follows the GSR
with a single operand with posture=crawling, sweep=motionless. As a result of
the change to the table in the GSR, specifically the CRAWLING/ABSORPTION entry,
this is now CONSUMING (previously FREE-RANGINE). So the xsl:for-each as a whole
is grounded/consuming, whereas the intent (in comment 7) was that this would
still be roaming/free-ranging.

As far as xsl:for-each is concerned, I think we need to add a rule that if the
select expression is crawling and the body is consuming then the PS is
roaming/free-ranging. Similar changes may also be needed for apply-templates
and for-each-group.

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

Received on Monday, 11 August 2014 21:29:40 UTC