This is an archived snapshot of W3C's public bugzilla bug tracker, decommissioned in April 2019. Please see the home page for more details.

Bug 24541 - Missing KindTests in the analysis
Summary: Missing KindTests in the analysis
Status: CLOSED FIXED
Alias: None
Product: XPath / XQuery / XSLT
Classification: Unclassified
Component: XSLT 3.0 (show other bugs)
Version: Last Call drafts
Hardware: PC Windows NT
: P2 minor
Target Milestone: ---
Assignee: Michael Kay
QA Contact: Mailing list for public feedback on specs from XSL and XML Query WGs
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2014-02-05 23:10 UTC by Abel Braaksma
Modified: 2014-05-15 14:00 UTC (History)
1 user (show)

See Also:


Attachments

Description Abel Braaksma 2014-02-05 23:10:21 UTC
A KindTest (such as attribute(), processing-instruction(), text()) is not mentioned in the break-down of expressions. The closest you can get is an Axis Step (19.8.7.7 Streamability of Axis Steps, http://www.w3.org/TR/xslt-30/#streamability-of-axis-steps), but this section does not mention KindTests.

While writing this up, it occurs to me that the rules are actually sound here, as in the GSR under adjusted sweep S', a KindTest has a special rule, and it is itself already on an axis, which are mentioned under Axis Steps.

I nevertheless add this bugreport, because I think a small Note under 19.8.7.7 on axis steps containing KindTests can be beneficial in understanding this special case and may remove possible confusion.
Comment 1 Michael Kay 2014-02-06 09:53:51 UTC
A KindTest is not itself an expression (or a "construct"), it's only of interest in that it forms part (sometimes the entirety) of an AxisStep. So any impact of KindTests on streamability should be covered in the rules for AxisSteps.

I've no objection to adding a Note, though I'm not quite sure what it needs to say.
Comment 2 C. M. Sperberg-McQueen 2014-02-12 10:28:40 UTC
The WG discussed this during the ftf meeting in Prague and concluded that a note or some expository text in the opening text of 19.8.7 might serve the case, pointing out that as a consequence of the rule of classifying by the most specific production for which an entry appears, expressions like processing-instruction() should be sought not under KindTest (which does not appear) but under AxisStep (which does).  And similarly for child::x, which should be analysed not under PathExpr but (again) under AxisStep (which is more specific).
Comment 3 Michael Kay 2014-02-16 20:30:29 UTC
Further explanations have been added, as suggested.
Comment 4 Abel Braaksma 2014-03-06 16:01:23 UTC
Not sure I should reopen this issue just because of a tiny typo, but this once I'll take the risk to do so (because it was introduced with this change): 

under 19.8.7, second bullet point in the first list, the term ForwardsAxis is used, which should be ForwardAxis.

Other typos I'll place in a collective issue.
Comment 5 Michael Kay 2014-04-24 14:38:37 UTC
Noted and fixed.

Editorial note: axes are consistently "forward" and "backward", whereas compatibility is consistently "forwards" and "backwards". At least it's consistent.