<?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>30391</bug_id>
          
          <creation_ts>2019-01-15 22:17:27 +0000</creation_ts>
          <short_desc>[XSLT30] Conflicting statements on abstract components; they make stylesheet non-executable (3.5.3.3) or raise dynamic error (3.5.3.2)</short_desc>
          <delta_ts>2019-01-16 22:14:13 +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>Recommendation</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows NT</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>minor</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Abel Braaksma">abel.online</reporter>
          <assigned_to name="Michael Kay">mike</assigned_to>
          
          
          <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>129476</commentid>
    <comment_count>0</comment_count>
    <who name="Abel Braaksma">abel.online</who>
    <bug_when>2019-01-15 22:17:27 +0000</bug_when>
    <thetext>I happened upon this line today in section 3.5.3.3 Overriding Components:

&quot;A package is executable if and only if it contains no component whose visibility is abstract. A package that is not executable is not a stylesheet, and therefore cannot be nominated as the stylesheet to be used when initiating a transformation.&quot;

But in section 3.5.3.2 Accepting Components we iterate over three options, including that remaining abstract components will raise an error: 

&quot;[ERR XTDE3052] It is a dynamic error if an invocation of an abstract component is evaluated.&quot;

I think we have two options:

   a) We accept the line in 3.5.3.3 and abstract components cannot linger or the 
      stylesheet as a whole cannot be executed.

   b) We accept the sections in 3.5.3.2 and the stylesheet can always be 
      executed, but if you hit on an abstract component, XTDE3052 is raised.


My recollection from discussing this says it is option (b), in which case the simple solution is to delete the paragraph in 3.5.3.3.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>129479</commentid>
    <comment_count>1</comment_count>
    <who name="Abel Braaksma">abel.online</who>
    <bug_when>2019-01-16 14:25:12 +0000</bug_when>
    <thetext>This was a case of not seeing the wood for the trees. We don&apos;t use the term &quot;executable&quot; anywhere else and as a result I didn&apos;t see a corresponding section under 3.5.3.5 Binding References to Components.

That section has the following error:

&quot;[ERR XTSE3080] It is a static error if a top-level package (as distinct from a library package) contains components whose visibility is abstract.&quot;

This error description also clarifies the perceived ambiguity from the section on accepting components. To sum it up:

* Library package can reference abstract components
* Invoking an abstract component can happen even after the lib package is used, but with xsl:accept declaring it &quot;hidden&quot;. This invocation would happen in the lib package itself.
* The principal package (top-level package) cannot have any unresolved abstract components, i.e. by not overriding / not accepting (with &quot;hidden&quot;).
* The principal package can only reference abstract components if a concrete implementation is available through xsl:override

While I think the text could be clarified somewhat, for instance by referencing the relevant error, or repeating the error in the xsl:accept section, I don&apos;t think anymore that there&apos;s a bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>129482</commentid>
    <comment_count>2</comment_count>
    <who name="Abel Braaksma">abel.online</who>
    <bug_when>2019-01-16 22:14:13 +0000</bug_when>
    <thetext>Btw, I found a previous discussion related to this, bug #30142, in particular the last line:

&quot;I think that XTSE3080 can now arise only if the top-level package explicitly declares an abstract component.&quot;</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>