blob: 1b02bcdc34417256290139eedec905dc3077aec5 [file] [log] [blame]
<!-- Schema for the Test Catalog -->
<!-- Creator: Asad Jawahar -->
<!-- Action item for WG: obtain a namespace URI for the elements -->
<xs:schema
xmlns:xs='http://www.w3.org/2001/XMLSchema'
>
<!-- named types -->
<xs:complexType name="description">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="last-mod" type="xs:date"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<!-- base type includes description and note elements -->
<xs:complexType name="infoBase">
<xs:sequence>
<xs:element name="description" type="description" minOccurs="1" maxOccurs="1"/>
<xs:element name="note" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name = "GroupInfo">
<xs:sequence>
<xs:element name="title" type="xs:string"/>
<xs:element name="description" type="description"/>
<xs:element name="note" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="test-case">
<xs:sequence>
<xs:element name="description" type="description"/>
<xs:element name="note" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="spec-citation" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="type" type="citation-type-enum"/>
<xs:attribute name="place" type="xs:string"/>
<xs:attribute name="spec" type="citation-spec-enum"/>
<xs:attribute name="version" type="xs:date"/>
<xs:attribute name="version-drop" type="xs:date"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="query">
<xs:complexType>
<xs:sequence>
<xs:element name="description" type="description" minOccurs="1" maxOccurs="1"/>
<xs:element name="note" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="date" type="xs:date"/>
</xs:complexType>
</xs:element>
<xs:element name="input-file" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:IDREF">
<xs:attribute name="role" type="role-enum"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="output-file" minOccurs="1" maxOccurs="2">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="role" type="role-enum"/>
<xs:attribute name="compare" type="comparison-enum"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="FilePath" type="xs:anyURI"/>
<xs:attribute name="scenario" type="scenarios-enum"/>
<xs:attribute name="Creator" type="xs:string"/>
<xs:attribute name="version-drop" type="xs:date"/>
</xs:complexType>
<!-- enum for citation-types -->
<xs:simpleType name="citation-type-enum">
<xs:restriction base="xs:string">
<xs:enumeration value="section"/>
<xs:enumeration value="anchor"/>
<xs:enumeration value="XPointer"/>
</xs:restriction>
</xs:simpleType>
<!-- enum for citation-Spec -->
<xs:simpleType name="citation-spec-enum">
<xs:restriction base="xs:string">
<xs:enumeration value="XQuery"/>
<xs:enumeration value="FuncOps"/>
<xs:enumeration value="DataModel"/>
<xs:enumeration value="FormalSemantics"/>
<xs:enumeration value="SchemaPart2"/>
<xs:enumeration value="Schema-Errata"/>
<xs:enumeration value="XPath1"/>
<xs:enumeration value="XPath1-Errata"/>
<xs:enumeration value="Namespaces"/>
<xs:enumeration value="Namespaces-Errata"/>
</xs:restriction>
</xs:simpleType>
<!-- enum for comparisons -->
<xs:simpleType name="comparison-enum">
<xs:restriction base="xs:string">
<xs:enumeration value="XML"/>
<xs:enumeration value="Text"/>
<xs:enumeration value="Inspect"/>
<xs:enumeration value="Ignore"/>
</xs:restriction>
</xs:simpleType>
<!-- enum for roles -->
<xs:simpleType name="role-enum">
<xs:restriction base="xs:string">
<xs:enumeration value="principal-data"/>
<xs:enumeration value="supplemental-data"/>
<xs:enumeration value="schema"/>
<xs:enumeration value="principal"/>
<xs:enumeration value="console-log"/>
</xs:restriction>
</xs:simpleType>
<!-- enum for scenarios -->
<xs:simpleType name="scenarios-enum">
<xs:restriction base="xs:string">
<xs:enumeration value="standard"/>
<xs:enumeration value="error"/>
</xs:restriction>
</xs:simpleType>
<!-- top level element -->
<xs:element name="test-suite">
<xs:complexType>
<xs:sequence>
<xs:element name="citations" minOccurs="1" maxOccurs="1">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element name="citation-spec" minOccurs="1">
<xs:complexType>
<xs:complexContent>
<xs:extension base="infoBase">
<xs:sequence minOccurs="1" maxOccurs="1">
<xs:element name="spec-URI" type="xs:anyURI"/>
</xs:sequence>
<xs:attribute name="name" type="citation-spec-enum"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="citation-type" minOccurs="1">
<xs:complexType>
<xs:complexContent>
<xs:extension base="infoBase">
<xs:attribute name="name" type="citation-type-enum"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:element name="comparisons" minOccurs="1" maxOccurs="1">
<xs:complexType>
<xs:sequence maxOccurs = "unbounded">
<xs:element name="comparison" minOccurs="1">
<xs:complexType>
<xs:complexContent>
<xs:extension base="infoBase">
<xs:attribute name="name" type="comparison-enum"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="roles" minOccurs="1" maxOccurs="1">
<xs:complexType>
<xs:sequence maxOccurs="unbounded">
<xs:element name="role" minOccurs="1">
<xs:complexType>
<xs:complexContent>
<xs:extension base="infoBase">
<xs:attribute name="name" type="role-enum"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="scenarios" minOccurs="1" maxOccurs="1">
<xs:complexType>
<xs:sequence maxOccurs="unbounded">
<xs:element name="scenario" minOccurs="1">
<xs:complexType>
<xs:complexContent>
<xs:extension base="infoBase">
<xs:attribute name="name" type="scenarios-enum"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="sources" minOccurs="1" maxOccurs="1">
<xs:complexType>
<xs:sequence maxOccurs="unbounded">
<xs:element name="source" minOccurs="1">
<xs:complexType>
<xs:complexContent>
<xs:extension base="infoBase">
<xs:attribute name="ID" type="xs:ID"/>
<xs:attribute name="FileName" type="xs:anyURI"/>
<xs:attribute name="Creator" type="xs:string"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="test-group" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="GroupInfo" type="GroupInfo"/>
<xs:element name="test-case" type="test-case" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="CatalogDesignDate" type="xs:date"/>
</xs:complexType>
</xs:element>
</xs:schema>