- From: <bugzilla@jessica.w3.org>
- Date: Wed, 15 Feb 2017 20:56:12 +0000
- To: public-qt-comments@w3.org
https://www.w3.org/Bugs/Public/show_bug.cgi?id=30064
Bug ID: 30064
Summary: [xslt30ts] Test case function-5006
Product: XPath / XQuery / XSLT
Version: Candidate Recommendation
Hardware: PC
OS: All
Status: NEW
Severity: normal
Priority: P2
Component: XSLT 3.0 Test Suite
Assignee: abel.online@xs4all.nl
Reporter: mike@saxonica.com
QA Contact: public-qt-comments@w3.org
Target Milestone: ---
I'm struggling a bit with this test, which reads:
<xsl:template match="/">
<result>
<xsl:for-each
select="outermost(doc/sf:deep-descent(section[1]))/text()" >
<xsl:copy-of select="self::text()" />
</xsl:for-each>
</result>
</xsl:template>
<xsl:function name="sf:deep-descent" streamability="deep-descent"
as="node()*">
<xsl:param name="node" as="node()"/>
<xsl:sequence select="$node//section//p" />
</xsl:function>
First observation is that if we inline the function, we get
<xsl:for-each select="outermost(doc/section[1]//section//p)/text()" >
<xsl:copy-of select="self::text()" />
</xsl:for-each>
and this isn't streamable (you can't use the descendant axis from crawling
posture, unless you're covered by the exemption for scanning expressions, which
doesn't apply here because doc/section[1]//section//p is not a motionless
pattern, because of the numeric predicate).
It would seem a bit surprising if the function call should be streamable when
the result of inlining it isn't.
The rules for deep-descent functions say that the function body must be
crawling. That will only be the case if $node//section//p is a scanning
expression, which requires it to be equivalent to a motionless pattern. But a
pattern cannot be a motionless pattern if it contains a RootedPath, which this
does (the variable reference at the start).
This is somewhat legalistic wriggling: I can't see why the function can't be
implemented using the scanning approach. But I don't think it passes the
current rules.
So I don't think this test passes the streamability rules.
--
You are receiving this mail because:
You are the QA Contact for the bug.
Received on Wednesday, 15 February 2017 20:56:50 UTC