The schema corresponding to this document is normative,
with respect to the syntactic constraints it expresses in the
XML Schema language. The documentation (within <documentation>
elements) below, is not normative, but rather highlights important
aspects of the W3C Recommendation of which this is a part
First the built-in primitive datatypes. These definitions are for
information only, the real built-in definitions are magic. Note in
particular that there is no type named 'anySimpleType'. The
primitives should really be derived from no type at all, and
anySimpleType should be derived as a union of all the primitives.
For each built-in datatype in this schema (both primitive and
derived) can be uniquely addressed via a URI constructed
as follows:
1) the base URI is the URI of the XML Schema namespace
2) the fragment identifier is the name of the datatype
For example, to address the int datatype, the URI is:
http://www.w3.org/2001/XMLSchema#int
Additionally, each facet definition element can be uniquely
addressed via a URI constructed as follows:
1) the base URI is the URI of the XML Schema namespace
2) the fragment identifier is the name of the facet
For example, to address the maxInclusive facet, the URI is:
http://www.w3.org/2001/XMLSchema#maxInclusive
Additionally, each facet usage in a built-in datatype definition
can be uniquely addressed via a URI constructed as follows:
1) the base URI is the URI of the XML Schema namespace
2) the fragment identifier is the name of the datatype, followed
by a period (".") followed by the name of the facet
For example, to address the usage of the maxInclusive facet in
the definition of int, the URI is:
http://www.w3.org/2001/XMLSchema#int.maxInclusive
NOTATION cannot be used directly in a schema; rather a type
must be derived from it by specifying at least one enumeration
facet whose value is the name of a NOTATION declared in the
schema.
Now the derived primitive types
pattern specifies the content of section 2.12 of XML 1.0e2
and RFC 1766
pattern matches production 7 from the XML spec
pattern matches production 5 from the XML spec
pattern matches production 4 from the Namespaces in XML spec
A utility type, not for public use
#all or (possibly empty) subset of {restriction, union, list}
A utility type, not for public use
Can be restricted to required or forbidden
Required at the top level
Forbidden when nested
We should use a substitution group for facets, but
that's ruled out because it would allow users to
add their own, which we're not ready for yet.
base attribute and simpleType child are mutually
exclusive, but one or other is required
itemType attribute and simpleType child are mutually
exclusive, but one or other is required
memberTypes attribute must be non-empty or there must be
at least one simpleType child