- From: <bugzilla@wiggum.w3.org>
- Date: Thu, 09 Aug 2007 00:07:42 +0000
- To: public-qt-comments@w3.org
- CC:
http://www.w3.org/Bugs/Public/show_bug.cgi?id=4924
Summary: [XQX] Arguably incorrect element definition in XQueryX's
Schema
Product: XPath / XQuery / XSLT
Version: Recommendation
Platform: PC
OS/Version: Windows XP
Status: NEW
Severity: normal
Priority: P2
Component: XQueryX
AssignedTo: jim.melton@acm.org
ReportedBy: jim.melton@acm.org
QAContact: public-qt-comments@w3.org
In the XQueryX Recommendation (http://www.w3.org/TR/xqueryx), the XML Schema
defined at http://www.w3.org/TR/xqueryx/#Schema has an important design error.
While the schema as published correctly defines unenhanced XQueryX
representations of XQuery semantics, several element definitions are done in
such a manner that makes the schema not extensible to comprehend, say, the
Update Facility and Full-Text.
The element definitions in question are those whose definitions have an
anonymous complex type. The solution is to re-define them by creating a named
complex type that is "the same as" each such anonymous complex type, and then
defining each such element as a reference to the new complex type.
For the purposes of defining the XQueryX extensions for the Update Facility,
only one such element proved to be problematic:
<xsd:element name="functionDecl" substitutionGroup="prologPartTwoItem">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="functionName" type="QName"/>
<xsd:element ref="paramList"/>
<xsd:element ref="typeDeclaration" minOccurs="0"/>
<xsd:choice>
<xsd:element name="functionBody" type="exprWrapper"/>
<xsd:element name="externalDefinition" type="emptyContent"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
The solution is pretty straightforward:
<xsd:complexType name="functionDeclType">
<xsd:sequence>
<xsd:element name="functionName" type="QName"/>
<xsd:element ref="paramList"/>
<xsd:element ref="typeDeclaration" minOccurs="0"/>
<xsd:choice>
<xsd:element name="functionBody" type="exprWrapper"/>
<xsd:element name="externalDefinition" type="emptyContent"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="functionDecl" type="functionDeclType"
substitutionGroup="prologPartTwoItem"/>
This allows the Update Facility to refine the functionDecl element by adding a
new attribute to represent, for a given function being declared, whether or not
that function is an updatable function:
<xsd:element name="ufFunctionDecl" substitutionGroup="xqx:prologPartTwoItem">
<xsd:complexType>
<xsd:complexContent>
<xsd:extension base="xqx:functionDeclType">
<xsd:attribute name="updatingFunction" type="xsd:boolean"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
</xsd:element>
The changes to the XQueryX Recommendation's XML Schema should be made as
quickly as possible in the form of an erratum.
Received on Thursday, 9 August 2007 00:07:46 UTC