- From: <bugzilla@jessica.w3.org>
- Date: Wed, 05 Feb 2014 21:41:53 +0000
- To: public-qt-comments@w3.org
https://www.w3.org/Bugs/Public/show_bug.cgi?id=24534
Bug ID: 24534
Summary: Streamability of the following-sibling axis with
numbered predicates
Product: XPath / XQuery / XSLT
Version: Last Call drafts
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
Currently, the following-sibling axis is not streamable at all when applied to
a streamable node. However, I think we can apply the same rules as for path
expressions here if (and only if?) there is a predicate that is numeric.
We already define the notion of a numeric predicate, so we could reuse that.
It is quite easy to recognize this is streamable. Consider a counter-example
first:
<xsl:template match="foo">
<xsl:apply-templates select="following-sibling::bar" />
</xsl:template>
<xsl:template match="bar">
<xsl:copy-of select="following-sibling::bar" />
</xsl:template>
This example is clearly _not_ streamable, because it travels the same nodes
multiple times because of the two select statements using an unspecified
following-sibling axis.
However, if we change it to use numeric predicates, this changes drastically:
<xsl:template match="foo">
<xsl:apply-templates select="following-sibling::bar[1]" />
</xsl:template>
<xsl:template match="bar">
<xsl:copy-of select="following-sibling::bar[2]" />
</xsl:template>
Now there is no potential for overlap. And it doesn't matter what positive
numeric value is used, as it will always select only one following-sibling
node.
The same does not apply to the following axis, in which case there can be
overlapping nodes even when using numeric predicates as above.
There's a page by Michael Kay that I currently cannot find that mentions a
similar scenario to be streamable in the Saxon processor. Not sure his scenario
required the numeric predicate. I think it worthwhile to investigate whether we
can add this to our toolset of streamable expressions, because it covers quite
a few use-cases.
--
You are receiving this mail because:
You are the QA Contact for the bug.
Received on Wednesday, 5 February 2014 21:41:57 UTC