[Bug 29432] New: [XSLT30] unclear what instructions are allowed in tail-position after xsl:on-empty

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

            Bug ID: 29432
           Summary: [XSLT30] unclear what instructions are allowed in
                    tail-position after xsl:on-empty
           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: ---

The instruction xsl:on-empty (section 8.4.2) must be in tail-position. Most of
the time this is pretty clear and we write about this:

<quote>
It must not be followed in the sequence constructor by any other instruction,
other than xsl:fallback, or by a significant text node (that is, a text node
that has not been discarded under the provisions of 4.3 Stripping Whitespace
from the Stylesheet), or by a literal result element. It may, however, be
followed by non-instructions such as xsl:catch where appropriate.
</quote>

Any instruction possibly creating something inside the sequence constructor is
clearly disallowed.

But what about instructions that do not create content? What about
xsl:result-document, xsl:message, xsl:assert? These are not so much
"non-instructions" (an odd term, btw), but they also do not add to the sequence
constructor.

Since this was introduced to aid streaming, and since either of the
instructions mentioned above are potentially consuming, I propose to disallow
them, or to add an extra rule something like:

"Any following sibling instruction that does not create content *must* have
grounded posture and motionless sweep when streaming."

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

Received on Monday, 8 February 2016 06:23:52 UTC