[Bug 30002] New: [XSLT30]XSD schema for xsl:function element does not declare the "cache" attribute

https://www.w3.org/Bugs/Public/show_bug.cgi?id=30002

            Bug ID: 30002
           Summary: [XSLT30]XSD schema for xsl:function element does not
                    declare the "cache" attribute
           Product: XPath / XQuery / XSLT
           Version: Candidate Recommendation
          Hardware: PC
                OS: Windows NT
            Status: NEW
          Severity: normal
          Priority: P2
         Component: XSLT 3.0
          Assignee: mike@saxonica.com
          Reporter: martin.honnen@gmx.de
        QA Contact: public-qt-comments@w3.org
  Target Milestone: ---

Looking at https://www.w3.org/2012/07/schema-for-xslt30.xsd#elem_function I
don't see any declaration of the boolean "cache" attribute introduced in
https://www.w3.org/TR/xslt-30/#memoization respectively listed in
https://www.w3.org/TR/xslt-30/#dt-stylesheet-function.

The schema inlined in the current spec
https://www.w3.org/XML/Group/qtspecs/specifications/xslt-30/html/#xsd11-schema-for-xslt
has it with 

  <xs:element name="function" substitutionGroup="xsl:declaration">
    <xs:complexType>
      <xs:complexContent mixed="true">
        <xs:extension base="xsl:versioned-element-type">
          <xs:sequence>
            <xs:element ref="xsl:param" minOccurs="0" maxOccurs="unbounded"/>
            <xs:group ref="xsl:sequence-constructor-group" minOccurs="0"
maxOccurs="unbounded"/>
          </xs:sequence>
          <xs:attribute name="name" type="xsl:EQName-in-namespace"/>
          <xs:attribute name="override" type="xsl:yes-or-no" default="yes"/>
          <xs:attribute name="as" type="xsl:sequence-type" default="item()*"/>
          <xs:attribute name="visibility" type="xsl:visibility-type"/>
          <xs:attribute name="streamability" type="xsl:streamability-type"/>
          <xs:attribute name="override-extension-function"
type="xsl:yes-or-no"/>
          <xs:attribute name="new-each-time" type="xsl:yes-or-no-or-maybe"/>
          <xs:attribute name="cache" type="xsl:yes-or-no"/>
          <xs:attribute name="_name" type="xs:string"/>
          <xs:attribute name="_override" type="xs:string"/>
          <xs:attribute name="_as" type="xs:string"/>
          <xs:attribute name="_visibility" type="xs:string"/>
          <xs:attribute name="_streamability" type="xs:string"/>
          <xs:attribute name="_override-extension-function" type="xs:string"/>
          <xs:attribute name="_identity-sensitive" type="xs:string"/>
          <xs:attribute name="_cache" type="xs:string"/>
          <xs:assert test="exists(@name | @_name)"/>
          <xs:assert test="every $e in xsl:param satisfies (empty($e/(@select |
@_select)) and empty($e/child::node()))">
            <xs:annotation>
              <xs:documentation>
                <p>A parameter for a function must have no default value.</p>
              </xs:documentation>
            </xs:annotation>
          </xs:assert>
          <xs:assert test="every $e in xsl:param satisfies
empty($e/(@visibility | @_visibility))">
            <xs:annotation>
              <xs:documentation>
                <p>A parameter for a function must have no
<code>visibility</code> attribute.</p>
              </xs:documentation>
            </xs:annotation>
          </xs:assert>
          <xs:assert test="every $e in xsl:param satisfies empty($e/(@required
| @_required))">
            <xs:annotation>
              <xs:documentation>
                <p>A parameter for a function must have no
<code>required</code> attribute.</p>
              </xs:documentation>
            </xs:annotation>
          </xs:assert>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>

but the separate online schema only has

  <xs:element name="function" substitutionGroup="xsl:declaration">
    <xs:complexType>
      <xs:complexContent mixed="true">
        <xs:extension base="xsl:versioned-element-type">
          <xs:sequence>
            <xs:element ref="xsl:param" minOccurs="0" maxOccurs="unbounded"/>
            <xs:group ref="xsl:sequence-constructor-group" minOccurs="0"
maxOccurs="unbounded"/>
          </xs:sequence>
          <xs:attribute name="name" type="xsl:EQName" use="required"/>
          <xs:attribute name="override" type="xsl:yes-or-no" default="yes"/>
          <xs:attribute name="as" type="xsl:sequence-type" default="item()*"/>
          <xs:attribute name="visibility" type="xsl:visibility-type"/>
          <xs:assert test="every $e in xsl:param satisfies (empty($e/@select)
and empty($e/child::node()))">
            <xs:annotation>
              <xs:documentation>
                <p>A parameter for a function must have no default value.</p>
              </xs:documentation>
            </xs:annotation>
          </xs:assert>
          <xs:assert test="every $e in xsl:param satisfies
empty($e/@visibility)">
            <xs:annotation>
              <xs:documentation>
                <p>A parameter for a function must have no
<code>visibility</code> attribute.</p>
              </xs:documentation>
            </xs:annotation>
          </xs:assert>
          <xs:assert test="every $e in xsl:param satisfies
empty($e/@required)">
            <xs:annotation>
              <xs:documentation>
                <p>A parameter for a function must have no
<code>required</code> attribute.</p>
              </xs:documentation>
            </xs:annotation>
          </xs:assert>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>

so the "cache" attribute and all the shadow attributes are missing in the
separate schema. I think the schemas ought to be identical.

-- 
You are receiving this mail because:
You are the QA Contact for the bug.

Received on Sunday, 13 November 2016 11:26:02 UTC