| <?xml version="1.0" encoding="UTF-8"?> |
| <!-- |
| NOTE (JT): This schema differs from the official version adopted by the WG in that |
| 1) these attribute declarations in the xs:schema element: |
| xmlns:ts="http://www.w3.org/2003/XMLSchema/TestSuite/PLACEHOLDER" |
| targetNamespace="http://www.w3.org/2003/XMLSchema/TestSuite/PLACEHOLDER" |
| are replaced by lines to enable the use of a local copy of this schema. |
| 2) The import declarations for XLink and XML namespace are given schemaLocation attributes. |
| --> |
| <xs:schema |
| xmlns:ts="TestSuite" |
| targetNamespace="TestSuite" |
| xmlns:xs="http://www.w3.org/2001/XMLSchema" |
| xmlns:xlink="http://www.w3.org/1999/xlink" |
| > |
| <!-- |
| <xs:import namespace="http://www.w3.org/1999/xlink"/> |
| |
| <xs:import namespace="http://www.w3.org/XML/1998/namespace"/> |
| --> |
| |
| <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="file:///C:/3rd-party/XlnGui/Catalogs/Large/www.xbrl.org/2003/xlink-2003-12-31.xsd"/> |
| |
| <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="file:///C:/3rd-party/XlnGui/Catalogs/Small/www.w3.org/2001/03/xml.xsd"/> |
| |
| |
| <xs:annotation> |
| <xs:documentation> |
| This is the schema for the W3C XML Schema Test Suite collection |
| (TS), as approved by the W3C XML Schema Working Group on May 12, |
| 2003. It defines the namespace: |
| |
| http://www.w3.org/2003/XMLSchema/TestSuite/PLACEHOLDER |
| |
| The TS consists of a set of test suites, each of which is identified |
| according to the version of W3C XML Schema it is designed to |
| test. Previous versions of test suites are archived and are also |
| available, identifiable by the version of the test suite itself. |
| |
| This schema defines three separate but related document types for |
| the TS: |
| |
| 1) The testSuite element is the root element of a document |
| which defines a test suite as described above (e.g. the |
| 2003-10-25 version of the test suite for version 1 of the |
| Recommendation). |
| |
| The principal purpose of a testSuite document is the provision |
| of a set of links to documents defining the tests which |
| constitute the test suite. |
| |
| Files containing testSuite documents have the filename suffix |
| ".suite". |
| |
| 2) The testSet element is the root element of a document which |
| describes a set of tests. Each testSuite consists primarily |
| of a set of links to testSet documents. The scope of the |
| testSet is typically determined by the contributor of the |
| tests which make up the testSet: it is the unit in which |
| tests are contributed to the collection. |
| |
| Files containing testSet documents have the filename suffix |
| ".testSet". |
| |
| 3) The testSuiteResults element is the root element of a |
| document describing the results of testing a processor |
| against a testSuite. |
| |
| Files containing testSuiteResults documents have the filename |
| suffix ".results". |
| </xs:documentation> |
| </xs:annotation> |
| |
| |
| <xs:element name="testSuite"> |
| <xs:annotation> |
| <xs:documentation> |
| The root element of a document describing all tests for a |
| particular version of W3C XML Schema, for the version of the TS |
| defined by the document. |
| |
| The element has three attributes, each of which is required: |
| |
| name - the name of this test suite. |
| |
| releaseDate - the date on which this test suite was |
| released. This value serves to identify the |
| version of the test suite. |
| |
| schemaVersion - the version of W3C XML Schema for which the |
| tests are designed. |
| |
| Two elements may optionally be present: |
| |
| annotation - at most one instance of general documentation. |
| |
| testSetRef - a set of references to the sets of tests which |
| make up this test suite. |
| |
| The test sets referenced are uniquely named. |
| </xs:documentation> |
| </xs:annotation> |
| <xs:complexType> |
| <xs:sequence> |
| <xs:element ref="ts:annotation" minOccurs="0"/> |
| <xs:element ref="ts:testSetRef" minOccurs="0" maxOccurs="unbounded"/> |
| </xs:sequence> |
| <xs:attribute name="name" use="required" type="xs:Name"/> |
| <xs:attribute name="releaseDate" use="required" type="xs:date"/> |
| <xs:attribute name="schemaVersion" use="required" type="xs:string"/> |
| <xs:anyAttribute namespace="##other" processContents="lax"/> |
| </xs:complexType> |
| </xs:element> |
| |
| |
| <xs:element name="testSetRef" type="ts:ref"/> |
| |
| |
| <xs:element name="testSet"> |
| <xs:annotation> |
| <xs:documentation> |
| The root element of a document describing a set of tests, |
| normally from a single contributor. A contributor may supply |
| any number of testSet files. |
| |
| The element has two attributes, each of which is required: |
| |
| contributor - the name of the contributor of this testSet. |
| |
| name - the name of this testSet, which must be unique within |
| the enclosing testSuite. |
| |
| Two elements may optionally be present: |
| |
| annotation - at most one instance of general documentation. |
| |
| testGroup - a set of testGroup elements, each of which defines a |
| group of closely related tests. |
| |
| The testGroup elements must be uniquely named. |
| </xs:documentation> |
| </xs:annotation> |
| <xs:complexType> |
| <xs:sequence> |
| <xs:element ref="ts:annotation" minOccurs="0"/> |
| <xs:element ref="ts:testGroup" minOccurs="0" maxOccurs="unbounded"/> |
| </xs:sequence> |
| <xs:attribute name="contributor" use="required" type="xs:string"/> |
| <xs:attribute name="name" use="required" type="xs:Name"/> |
| <xs:anyAttribute namespace="##other" processContents="lax"/> |
| </xs:complexType> |
| <xs:unique name="uniqueGroupName"> |
| <xs:annotation> |
| <xs:documentation> |
| Each test group within a test set must have a unique name. |
| </xs:documentation> |
| </xs:annotation> |
| <xs:selector xpath="ts:testGroup"/> |
| <xs:field xpath="@name"/> |
| </xs:unique> |
| </xs:element> |
| |
| |
| <xs:element name="testGroup"> |
| <xs:annotation> |
| <xs:documentation> |
| This element groups a collection of closely related tests. In the |
| case where a schema is present, this element groups the schema with a |
| set of instance documents which should be validated against the |
| schema. |
| |
| It has one attribute, which is required: |
| |
| name - an identifier for the testGroup which is unique within |
| the enclosing testSet. |
| |
| Four elements may optionally be present: |
| |
| annotation - at most one instance of general documentation. |
| |
| documentationReference - any number of references to external |
| documentation upon which the test |
| is based, e.g. links to relevant |
| sections of the Recommendation, |
| to the Errata, etc. |
| |
| schemaTest - any number of elements, each of which holds |
| information on a single schema document. |
| |
| When more than one schema document is present, |
| a single schema is constructed from the set |
| (or from other schemas via import). |
| |
| Schema documents may be omitted, for the purpose |
| of testing a processor's validation of an instance |
| containing only the built-in datatypes defined in |
| the Recommendation. |
| |
| instanceTest - any number of elements, each of which holds |
| information on a single instance document to |
| be validated against the included schema. |
| </xs:documentation> |
| </xs:annotation> |
| <xs:complexType> |
| <xs:sequence> |
| <xs:element ref="ts:annotation" minOccurs="0"/> |
| <xs:element ref="ts:documentationReference" minOccurs="0" maxOccurs="unbounded"/> |
| <xs:element ref="ts:schemaTest" minOccurs="0"/> |
| <xs:element ref="ts:instanceTest" minOccurs="0" maxOccurs="unbounded"/> |
| </xs:sequence> |
| <xs:attribute name="name" use="required" type="xs:Name"/> |
| <xs:anyAttribute namespace="##other" processContents="lax"/> |
| </xs:complexType> |
| <xs:unique name="uniqueTestName"> |
| <xs:annotation> |
| <xs:documentation> |
| Each test within a test group must have a unique name. |
| </xs:documentation> |
| </xs:annotation> |
| <xs:selector xpath="ts:schemaTest|ts:instanceTest"/> |
| <xs:field xpath="@name"/> |
| </xs:unique> |
| </xs:element> |
| |
| |
| <xs:element name="schemaTest"> |
| <xs:annotation> |
| <xs:documentation> |
| This element groups together information about the schema for |
| a particular test condition. |
| |
| It has one attribute, which is required: |
| |
| name - the name of the schema, which must be unique within |
| the enclosing testGroup (i.e. it must differ from the |
| name(s) of any associated instanceTest elements). |
| |
| One element is required: |
| |
| schemaDocument - at least one link to a file containing a |
| schema document. The schema for the test is |
| constructed from the set (or from other |
| schemas via import). |
| |
| Three elements may optionally be present: |
| |
| expected - the expected validation outcome for the schema |
| contained in the schema document(s). |
| |
| current - the current status of this test in the TS (an |
| indication of the test's accuracy in testing the |
| feature it is intended to test). |
| |
| prior - the history of any changes in the status of this test. |
| |
| The elements "expected" and "current" may be absent when tests |
| are contributed, but will always be present for tests included in |
| the TS. |
| </xs:documentation> |
| </xs:annotation> |
| <xs:complexType> |
| <xs:sequence> |
| <xs:element ref="ts:schemaDocument" maxOccurs="unbounded"/> |
| <xs:element ref="ts:expected" minOccurs="0"/> |
| <xs:element ref="ts:current" minOccurs="0"/> |
| <xs:element ref="ts:prior" minOccurs="0" maxOccurs="unbounded"/> |
| </xs:sequence> |
| <xs:attribute name="name" use="required" type="xs:Name"/> |
| <xs:anyAttribute namespace="##other" processContents="lax"/> |
| </xs:complexType> |
| </xs:element> |
| |
| |
| <xs:element name="instanceTest"> |
| <xs:annotation> |
| <xs:documentation> |
| This element groups together information about an instance |
| document which should be validated against the schema referenced |
| in the enclosing testGroup. |
| |
| It has one attribute, which is required: |
| |
| name - the name of the instance document, which must be unique |
| within the enclosing testGroup (i.e. it must differ |
| from the name of any associated schemaTest elements). |
| |
| One element is required: |
| |
| instanceDocument - a link to a file containing the instance |
| document. |
| |
| Three elements may optionally be present: |
| |
| expected - the expected validation outcome for the instance |
| document. |
| |
| current - the current status of this test in the TS (an |
| indication of the test's accuracy in testing the |
| feature it is intended to test). |
| |
| prior - the history of any changes in the status of this test. |
| |
| The elements "expected" and "current" may be absent when tests |
| are contributed, but will always be present for tests included in |
| the TS. |
| |
| Note: per section 5.2 "Assessing Schema-Validity" of the |
| Recommendation "XML Schema Part 1: Structures", validation may |
| be started in a variety of ways. For the purposes of the TS, |
| only the third method shall be used: |
| |
| "The processor starts from Schema-Validity Assessment (Element) |
| (3.3.4) with no stipulated declaration or definition". |
| </xs:documentation> |
| </xs:annotation> |
| <xs:complexType> |
| <xs:sequence> |
| <xs:element ref="ts:instanceDocument"/> |
| <xs:element ref="ts:expected" minOccurs="0"/> |
| <xs:element ref="ts:current" minOccurs="0"/> |
| <xs:element ref="ts:prior" minOccurs="0" maxOccurs="unbounded"/> |
| </xs:sequence> |
| <xs:attribute name="name" use="required" type="xs:Name"/> |
| <xs:anyAttribute namespace="##other" processContents="lax"/> |
| </xs:complexType> |
| </xs:element> |
| |
| |
| <xs:element name="schemaDocument" type="ts:ref"/> |
| <xs:element name="instanceDocument" type="ts:ref"/> |
| |
| |
| <xs:element name="current" type="ts:statusEntry"> |
| <xs:annotation> |
| <xs:documentation> |
| The current status of a test in the TS. |
| |
| This element has two attributes, both of which are required: |
| |
| status - the status of the test. One of "accepted", "stable", |
| "disputed-test" or "disputed-spec" (see the TS website |
| for an explanation of these values). |
| |
| date - the date on which the value in the status attribute |
| was attained. |
| </xs:documentation> |
| </xs:annotation> |
| </xs:element> |
| |
| |
| <xs:element name="prior" type="ts:statusEntry"> |
| <xs:annotation> |
| <xs:documentation> |
| A former status of a test in the TS. |
| |
| This element has two attributes, both of which are required: |
| |
| status - the former status of the test. One of "accepted", |
| "stable", "disputed-test" or "disputed-spec" (see |
| the TS website for an explanation of these values). |
| |
| date - the date on which the value in the status attribute |
| was attained. |
| </xs:documentation> |
| </xs:annotation> |
| </xs:element> |
| |
| |
| <xs:complexType name="statusEntry"> |
| <xs:attribute name="status" use="required" type="ts:status"/> |
| <xs:attribute name="date" use="required" type="xs:date"/> |
| <xs:anyAttribute namespace="##other" processContents="lax"/> |
| </xs:complexType> |
| |
| |
| <xs:simpleType name="status"> |
| <xs:restriction base="xs:token"> |
| <xs:enumeration value="accepted"/> |
| <xs:enumeration value="stable"/> |
| <xs:enumeration value="disputed-test"/> |
| <xs:enumeration value="disputed-spec"/> |
| </xs:restriction> |
| </xs:simpleType> |
| |
| |
| <xs:element name="expected"> |
| <xs:annotation> |
| <xs:documentation> |
| The expected validation outcome of a test in the TS. |
| |
| This element has one attribute, which is required: |
| |
| validity - the expected validity of the test. One of "valid", |
| "invalid" or "notKnown". |
| </xs:documentation> |
| </xs:annotation> |
| <xs:complexType> |
| <xs:attribute name="validity" use="required" type="ts:validityOutcome"/> |
| <xs:anyAttribute namespace="##other" processContents="lax"/> |
| </xs:complexType> |
| </xs:element> |
| |
| |
| <xs:simpleType name="validityOutcome"> |
| <xs:restriction base="xs:token"> |
| <xs:enumeration value="valid"/> |
| <xs:enumeration value="invalid"/> |
| <xs:enumeration value="notKnown"/> |
| </xs:restriction> |
| </xs:simpleType> |
| |
| |
| <xs:element name="testSuiteResults"> |
| <xs:annotation> |
| <xs:documentation> |
| This is the root element of a document containing a test result |
| report. The report takes the form of a set of test results |
| returned by a processor/validator when run against the TS. |
| |
| It has three required attributes: |
| |
| suite - the name of the test suite to which these results |
| correspond. This should be the value of the name |
| attribute of the testSuite element at the root of |
| the test suite document describing the tests to which |
| these results correspond. |
| |
| processor - some identifying information for the processor/ |
| validator which produced the reported results. The |
| value of this attribute is left to the discretion |
| of the reporter. |
| |
| submitDate - the date on which these results were submitted |
| to the TS Task Force. |
| |
| The element also has one optional attribute: |
| |
| publicationPermission - the degree to which the result reporter |
| authorizes the W3C to disseminate the |
| reported results. One of "W3C members" |
| or "public" (see the TS website for an |
| explanation of these values). If this |
| attribute is absent, no permission to |
| publish is granted. |
| |
| This element has two optional elements: |
| |
| annotation - at most one instance of more detailed |
| (ts:documentation) or structured (ts:appinfo) |
| information or commentary regarding the enclosed |
| test results. |
| |
| testResult - any number of reports of the results of individual |
| tests. Any results may be omitted, particularly |
| those for tests of features for which the processor |
| claims no support. |
| </xs:documentation> |
| </xs:annotation> |
| <xs:complexType> |
| <xs:sequence> |
| <xs:element ref="ts:annotation" minOccurs="0"/> |
| <xs:element ref="ts:testResult" minOccurs="0" maxOccurs="unbounded"/> |
| </xs:sequence> |
| <xs:attribute name="suite" use="required" type="xs:Name"/> |
| <xs:attribute name="processor" use="required" type="xs:string"/> |
| <xs:attribute name="submitDate" use="required" type="xs:date"/> |
| <xs:attribute name="publicationPermission"> |
| <xs:simpleType> |
| <xs:restriction base="xs:string"> |
| <xs:enumeration value="W3C members"/> |
| <xs:enumeration value="public"/> |
| </xs:restriction> |
| </xs:simpleType> |
| </xs:attribute> |
| <xs:anyAttribute namespace="##other" processContents="lax"/> |
| </xs:complexType> |
| </xs:element> |
| |
| |
| <xs:element name="testResult"> |
| <xs:annotation> |
| <xs:documentation> |
| The result of an individual instance test or a schema test. |
| |
| This element has four required attributes: |
| |
| validity - the validition outcome of the test. One of "valid", |
| "invalid" or "notKnown". |
| |
| set - the value of the "name" attribute of the test set to |
| which the test belongs. |
| |
| group - the value of the "name" attribute of the test group |
| to which the test belongs. |
| |
| test - the value of the "name" attribute of the schema test |
| or instance test, the validation outcome of which this |
| result reports. |
| |
| NOTE: The "set", "group" and "test" attributes are used to |
| uniquely identify the test within the TS for which this |
| result reports the validation outcome. Each matches the |
| "name" attribute of the respective element in the test suite. |
| |
| This element has one optional attribute: |
| |
| normalizedLoad - a relative load value, intended as an indicator |
| of the resource requirements of an individual |
| test. Values may be based on processing time, |
| memory usage or a combination of the two. |
| Values should be in the vicinity of 1.0. |
| |
| The element has one optional element: |
| |
| annotation - at most one instance of more detailed |
| (ts:documentation) or structured (ts:appinfo) |
| information or commentary regarding the individual |
| test result. Reporters are encouraged to use |
| annotation/appinfo to report more detailed outcome |
| information, such as error and warning messages. |
| </xs:documentation> |
| </xs:annotation> |
| <xs:complexType> |
| <xs:sequence> |
| <xs:element ref="ts:annotation" minOccurs="0"/> |
| </xs:sequence> |
| <xs:attribute name="validity" use="required" type="ts:validityOutcome"/> |
| <xs:attribute name="set" use="required" type="xs:Name"/> |
| <xs:attribute name="group" use="required" type="xs:Name"/> |
| <xs:attribute name="test" use="required" type="xs:Name"/> |
| <xs:attribute name="normalizedLoad" type="xs:decimal"/> |
| <xs:anyAttribute namespace="##other" processContents="lax"/> |
| </xs:complexType> |
| </xs:element> |
| |
| |
| <xs:complexType name="ref"> |
| <xs:attribute ref="xlink:type" default="locator"/> |
| <xs:attribute ref="xlink:href"/> |
| <xs:anyAttribute namespace="##other" processContents="lax"/> |
| </xs:complexType> |
| |
| |
| <xs:element name="documentationReference" type="ts:ref"> |
| <xs:annotation> |
| <xs:documentation> |
| A link to documentation relevant to a test, such as a link to the |
| Recommendation, an erratum, an archived email discussion, etc. |
| </xs:documentation> |
| </xs:annotation> |
| </xs:element> |
| |
| |
| <xs:element name="annotation"> |
| <xs:annotation> |
| <xs:documentation> |
| This is an exact copy of the annotation element defined in the Schema |
| Recommendation. It is duplicated here in order to replicate the |
| functionality of the xs:annotation element and because the Schema for |
| Schemas cannot be imported. |
| </xs:documentation> |
| </xs:annotation> |
| <xs:complexType> |
| <xs:choice maxOccurs="unbounded" minOccurs="0"> |
| <xs:element ref="ts:appinfo"/> |
| <xs:element ref="ts:documentation"/> |
| </xs:choice> |
| <xs:anyAttribute namespace="##other" processContents="lax"/> |
| </xs:complexType> |
| </xs:element> |
| |
| |
| <xs:element name="appinfo"> |
| <xs:complexType mixed="true"> |
| <xs:sequence maxOccurs="unbounded" minOccurs="0"> |
| <xs:any processContents="lax"/> |
| </xs:sequence> |
| <xs:attribute name="source" type="xs:anyURI"/> |
| <xs:anyAttribute namespace="##other" processContents="lax"/> |
| </xs:complexType> |
| </xs:element> |
| |
| <xs:element name="documentation"> |
| <xs:complexType mixed="true"> |
| <xs:sequence maxOccurs="unbounded" minOccurs="0"> |
| <xs:any processContents="lax"/> |
| </xs:sequence> |
| <xs:attribute name="source" type="xs:anyURI"/> |
| <xs:attribute ref="xml:lang"/> |
| <xs:anyAttribute namespace="##other" processContents="lax"/> |
| </xs:complexType> |
| </xs:element> |
| |
| </xs:schema> |