- From: <bugzilla@jessica.w3.org>
- Date: Fri, 06 Mar 2015 13:08:30 +0000
- To: public-qt-comments@w3.org
https://www.w3.org/Bugs/Public/show_bug.cgi?id=28154
Bug ID: 28154
Summary: [xslt 3.0] streamable templates: climbing body
Product: XPath / XQuery / XSLT
Version: Last Call drafts
Hardware: PC
OS: All
Status: NEW
Severity: normal
Priority: P2
Component: XSLT 3.0
Assignee: mike@saxonica.com
Reporter: mike@saxonica.com
QA Contact: public-qt-comments@w3.org
I can't see anything in the rules in 6.6.4 (Streamable templates) that
disallows the following:
<xsl:template match="*" mode="a-streamable-mode" as="xs:string">
<xsl:sequence select="ancestor::section"/>
</xsl:template>
Clearly this isn't streamable: we can't atomize a node reached via the ancestor
axis. But the rules don't seem to say so.
We get the same issue with streamable stylesheet functions, so I propose to
define:
The *type-adjusted posture* of a construct C with respect to a U-type T is as
follows:
* If the intersection of T with U{N} is empty (that is, if T does not permit
nodes), the posture of a call to the fn:data function with C as an operand.
(Equivalently: it is the posture computed by the general streamability rules
for a construct that has C as its only operand, with operand usage absorption).
* Otherwise, the posture of C.
In 6.6.4 Rule 3 then changes to:
3. The sweep of the sequence constructor in the body of the xsl:template
element is either motionless or consuming
4. The type-adjusted posture of the sequence constructor forming the body of
the xsl:template element, with respect to the U-type that corresponds to the
declared return type of the template (defaulting to item()*), is grounded.
These rules solve the example case because data(..) is roaming, not grounded.
--
You are receiving this mail because:
You are the QA Contact for the bug.
Received on Friday, 6 March 2015 13:08:33 UTC