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 26916 - [F+O 3.1] Spurious rule about QName constructor requiring a literal
Summary: [F+O 3.1] Spurious rule about QName constructor requiring a literal
Status: CLOSED FIXED
Alias: None
Product: XPath / XQuery / XSLT
Classification: Unclassified
Component: Functions and Operators 3.1 (show other bugs)
Version: Working drafts
Hardware: PC All
: 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-09-27 23:12 UTC by Michael Kay
Modified: 2014-11-17 09:57 UTC (History)
0 users

See Also:


Attachments

Description Michael Kay 2014-09-27 23:12:11 UTC
In the current draft F+O 3.1, section 18.2 contains the spurious rule

3. Conversion from an xs:string to a value of type xs:QName, a type derived from xs:QName or a type derived from xs:NOTATION is permitted only if the xs:string is written as a string literal. 

This rule was present in the 2.0 spec but was removed in 3.0. Looking at the source text, it appears that it was present in the 3.0 source marked with diff="del" markup. It looks as if, when the 3.1 text was generated from the 3.0 text, the diff="del" attribute was removed, but the paragraph itself was retained.

A quick check shows there are other places where this has happened. For example section  4.7.4, last bullet, contains the text "The suffix is set to contain all passive characters to the right of the rightmost active character in the fractional part of the sub-picture." which appears in 3.0 as "The suffix is set to contain all passive characters to the right of the rightmost active character in the sub-picture." - the source XML for 3.0 contains the extra phrase with diff="del" markup.
Comment 1 Michael Kay 2014-09-27 23:43:07 UTC
Fortunately there are not many affected sections. Here is a complete list.

(1) from xpath-functions.xml

<?xml version="1.0" encoding="UTF-8"?>
<diffs>
   <diff section="func-signatures">
      <p xmlns:e="http://www.w3.org/1999/XSL/Spec/ElementSyntax"
         diff="del"
         at="F">In some cases, the static type returned by a function depends on the type(s) of
                    its argument(s). These special functions are indicated by using <emph>
                        <term>bold italics</term>
                    </emph> for the return type. The semantic rules specifying the type of the value
                    returned are documented in the function definition. The rules are described more
                    formally in [the Formal Semantics].</p>
   </diff>
   <diff section="datatypes">
      <p xmlns:e="http://www.w3.org/1999/XSL/Spec/ElementSyntax"
         diff="del"
         at="M">When XSD 1.1 is supported, one additional type needs to be added to these
            diagrams: the type <code>xs:dateTimeStamp</code>, which is derived from <code>xs:dateTime</code>.</p>
   </diff>
   <diff section="errors">
      <phrase xmlns:e="http://www.w3.org/1999/XSL/Spec/ElementSyntax"
              diff="del"
              at="F"> and [Formal Semantics]</phrase>
   </diff>
   <diff section="analysing-picture-string">
      <phrase xmlns:e="http://www.w3.org/1999/XSL/Spec/ElementSyntax"
              diff="del"
              at="M">the fractional part of</phrase>
   </diff>
   <diff section="constructor-qname-notation">
      <p xmlns:e="http://www.w3.org/1999/XSL/Spec/ElementSyntax"
         diff="del"
         at="F">
      Conversion from an <code>xs:string</code> to a value of type <code>xs:QName</code>, a type derived from  <code>xs:QName</code> 
      or a type derived from <code>xs:NOTATION</code> is permitted only if the <code>xs:string</code> is written as a string literal. 
      This applies whether the conversion is expressed using a constructor function or using the "cast as" syntax. Such a conversion can be regarded as a pseudo-function, which is always evaluated statically. It is also permitted for these constructors and casts to take a dynamically-supplied argument in the normal manner, but as the casting table (see <specref ref="casting-from-primitive-to-primitive"/>) indicates, the only
      arguments that are supported in this case are values of type <code>xs:QName</code> or <code>xs:NOTATION</code> respectively.</p>
   </diff>
   <diff section="casting-from-primitive-to-primitive">
      <phrase xmlns:e="http://www.w3.org/1999/XSL/Spec/ElementSyntax"
              diff="del"
              at="L">Casting to a type that is not 
                  atomic raises <phrase diff="add" at="M">a static error</phrase>: <xerrorref spec="XP" class="ST" code="0051" type="type"/>.</phrase>
   </diff>
</diffs>

(2) from function-catalog.xml

<?xml version="1.0" encoding="UTF-8"?>
<diffs>
   <diff section="abs">
      <p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:fos="http://www.w3.org/xpath-functions/spec/namespace"
         diff="del"
         at="F">For detailed type semantics, see [Formal Semantics].</p>
   </diff>
   <diff section="ceiling">
      <p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:fos="http://www.w3.org/xpath-functions/spec/namespace"
         diff="del"
         at="F">For detailed type semantics, see [Formal Semantics].</p>
   </diff>
   <diff section="floor">
      <p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:fos="http://www.w3.org/xpath-functions/spec/namespace"
         diff="del"
         at="F">For detailed type semantics, see [Formal Semantics].</p>
   </diff>
   <diff section="round">
      <p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:fos="http://www.w3.org/xpath-functions/spec/namespace"
         diff="del"
         at="F">For detailed type semantics, see [Formal Semantics].</p>
   </diff>
   <diff section="round-half-to-even">
      <p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:fos="http://www.w3.org/xpath-functions/spec/namespace"
         diff="del"
         at="F">For detailed type semantics, see [Formal Semantics].</p>
   </diff>
   <diff section="format-integer">
      <phrase xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xmlns:fos="http://www.w3.org/xpath-functions/spec/namespace"
              diff="del"
              at="K">any</phrase>
   </diff>
   <diff section="normalize-unicode">
      <p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:fos="http://www.w3.org/xpath-functions/spec/namespace"
         diff="del"
         at="D">See <bibref ref="charmod-normalization"/> for a description of the
            normalization forms.</p>
   </diff>
   <diff section="boolean">
      <p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:fos="http://www.w3.org/xpath-functions/spec/namespace"
         diff="del"
         at="F">The static semantics of this function are described in [Formal
            Semantics].</p>
   </diff>
   <diff section="QName">
      <p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:fos="http://www.w3.org/xpath-functions/spec/namespace"
         diff="del"
         at="F">Note that unlike the <code>xs:QName</code> constructor, this function
            does not require a string literal as the argument.</p>
   </diff>
   <diff section="number">
      <phrase xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xmlns:fos="http://www.w3.org/xpath-functions/spec/namespace"
              diff="del"
              at="L">or the context item</phrase>
   </diff>
   <diff section="number">
      <phrase xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xmlns:fos="http://www.w3.org/xpath-functions/spec/namespace"
              diff="del"
              at="L">, or the context item after atomization,</phrase>
   </diff>
   <diff section="concatenate">
      <p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:fos="http://www.w3.org/xpath-functions/spec/namespace"
         diff="del"
         at="F">For detailed type semantics, see [Formal Semantics].</p>
   </diff>
   <diff section="distinct-values">
      <p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:fos="http://www.w3.org/xpath-functions/spec/namespace"
         diff="del"
         at="F">The static type of the result is a sequence of prime types as defined
            in [Formal Semantics].</p>
   </diff>
   <diff section="insert-before">
      <p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:fos="http://www.w3.org/xpath-functions/spec/namespace"
         diff="del"
         at="F">For detailed type semantics, see [Formal Semantics].</p>
   </diff>
   <diff section="remove">
      <p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:fos="http://www.w3.org/xpath-functions/spec/namespace"
         diff="del"
         at="F">For detailed type semantics, see [Formal Semantics].</p>
   </diff>
   <diff section="reverse">
      <p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:fos="http://www.w3.org/xpath-functions/spec/namespace"
         diff="del"
         at="F">For detailed type semantics, see [Formal Semantics].</p>
   </diff>
   <diff section="subsequence">
      <p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:fos="http://www.w3.org/xpath-functions/spec/namespace"
         diff="del"
         at="F">For detailed type semantics, see [Formal Semantics].</p>
   </diff>
   <diff section="zero-or-one">
      <p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:fos="http://www.w3.org/xpath-functions/spec/namespace"
         diff="del"
         at="F">For detailed type semantics, see [Formal Semantics].</p>
   </diff>
   <diff section="one-or-more">
      <p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:fos="http://www.w3.org/xpath-functions/spec/namespace"
         diff="del"
         at="F">For detailed type semantics, see [Formal Semantics].</p>
   </diff>
   <diff section="exactly-one">
      <p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:fos="http://www.w3.org/xpath-functions/spec/namespace"
         diff="del"
         at="F">For detailed type semantics, see [Formal Semantics].</p>
   </diff>
   <diff section="deep-equal">
      <phrase xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xmlns:fos="http://www.w3.org/xpath-functions/spec/namespace"
              diff="del"
              at="A-E42"> or namespace bindings</phrase>
   </diff>
   <diff section="union">
      <p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:fos="http://www.w3.org/xpath-functions/spec/namespace"
         diff="del"
         at="F">For detailed type semantics, see [Formal Semantics].</p>
   </diff>
   <diff section="intersect">
      <p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:fos="http://www.w3.org/xpath-functions/spec/namespace"
         diff="del"
         at="F">For detailed type semantics, see [Formal Semantics].</p>
   </diff>
   <diff section="except">
      <p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:fos="http://www.w3.org/xpath-functions/spec/namespace"
         diff="del"
         at="F">For detailed type semantics, see [Formal Semantics].</p>
   </diff>
   <diff section="avg">
      <p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:fos="http://www.w3.org/xpath-functions/spec/namespace"
         diff="del"
         at="F">For detailed type semantics, see [Formal Semantics].</p>
   </diff>
   <diff section="max">
      <p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:fos="http://www.w3.org/xpath-functions/spec/namespace"
         diff="del"
         at="F">For detailed type semantics, see [Formal Semantics].</p>
   </diff>
   <diff section="min">
      <p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:fos="http://www.w3.org/xpath-functions/spec/namespace"
         diff="del"
         at="F">For detailed type semantics, see [Formal Semantics].</p>
   </diff>
   <diff section="sum">
      <p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:fos="http://www.w3.org/xpath-functions/spec/namespace"
         diff="del"
         at="F">For detailed type semantics, see [Formal Semantics].</p>
   </diff>
   <diff section="doc">
      <p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:fos="http://www.w3.org/xpath-functions/spec/namespace"
         diff="del"
         at="F">For detailed type semantics, see [Formal Semantics].</p>
   </diff>
   <diff section="collection">
      <p xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:fos="http://www.w3.org/xpath-functions/spec/namespace"
         diff="del"
         at="F">For detailed type semantics, see [Formal Semantics].</p>
   </diff>
   <diff section="unparsed-text-available">
      <phrase xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xmlns:fos="http://www.w3.org/xpath-functions/spec/namespace"
              diff="del"
              at="L">If the second
            argument is an empty sequence, the function behaves as if the second argument were
            omitted.</phrase>
   </diff>
</diffs>
Comment 2 Michael Kay 2014-09-28 21:22:31 UTC
The corrections have been made. (It seems that the diff markup in the function-catalog file was handled correctly, in that sections marked as deleted were actually deleted in the conversion. In the xpath-functions file, most of the fragments marked as deleted had already gone from the 3.1 draft, but four or five were left and have been removed by hand.)

Marked as editorial.