<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://www.w3.org/Bugs/Public/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4"
          urlbase="https://www.w3.org/Bugs/Public/"
          
          maintainer="sysbot+bugzilla@w3.org"
>

    <bug>
          <bug_id>24542</bug_id>
          
          <creation_ts>2014-02-05 23:19:18 +0000</creation_ts>
          <short_desc>Can we add a note on intrinsically non-streamable axes?</short_desc>
          <delta_ts>2014-02-17 08:02:09 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>XPath / XQuery / XSLT</product>
          <component>XSLT 3.0</component>
          <version>Last Call drafts</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows NT</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Abel Braaksma">abel.braaksma</reporter>
          <assigned_to name="Michael Kay">mike</assigned_to>
          <cc>cmsmcq</cc>
          
          <qa_contact name="Mailing list for public feedback on specs from XSL and XML Query WGs">public-qt-comments</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>99851</commentid>
    <comment_count>0</comment_count>
    <who name="Abel Braaksma">abel.braaksma</who>
    <bug_when>2014-02-05 23:19:18 +0000</bug_when>
    <thetext>I think it helps if we add a small Note under 19.8.7.7 Streamability of Axis Steps (http://www.w3.org/TR/xslt-30/#streamability-of-axis-steps) mentioning the axes following, following-sibling, preceding, preceding-sibling as being intrinsically non-streamable (unless the context posture is grounded).

In line of that, I find it rather odd that we explicitly allow something like this (rule #3):

&lt;xsl:value-of select=&quot;/preceding::*&quot; /&gt;

or:

&lt;xsl:value-of select=&quot;parent::attribute()/following-sibling::*&quot; /&gt;

it&apos;s probably clearer to disallow these expressions altogether (i.e., add a rule between #2 and #3 in this section).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99906</commentid>
    <comment_count>1</comment_count>
    <who name="Michael Kay">mike</who>
    <bug_when>2014-02-06 12:44:38 +0000</bug_when>
    <thetext>Rule #3 may be (unduly?) influenced by the fact that in Saxon, I do most optimization work before I do streamability analysis, and optimization turns trivially-void expressions such as &quot;/..&quot; and &quot;@comment()&quot; and &quot;@x/following-sibling::*&quot; into &quot;()&quot;, making them intrinsically streamable.

I would defend the rule, however. We shouldn&apos;t make expressions non-streamable unless they really are, and on that basis, streaming of these &quot;void path expressions&quot; is possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100384</commentid>
    <comment_count>2</comment_count>
    <who name="C. M. Sperberg-McQueen">cmsmcq</who>
    <bug_when>2014-02-12 10:40:46 +0000</bug_when>
    <thetext>We discussed this in Prague, and were not inclined to make any change; after discussion, the originator expressed agreement with this decision.

We noticed that rule 3 in 19.8.7.7 handles /preceding::* but not parent::attribute() or @comment().  The editor may or may not propose to generalize the rule to cover these cases (since they are likely to be error cases, it may not be worth while).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100731</commentid>
    <comment_count>3</comment_count>
    <who name="Michael Kay">mike</who>
    <bug_when>2014-02-17 08:02:09 +0000</bug_when>
    <thetext>As suggested in comment #2, I have generalized rule 3 so that it now recognizes steps that are void because the node kind is inconsistent with the axis, as well as those that are void because the axis is inconsistent with the context item type.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>