<!-- Derived from XML Schema schema for XML Schemas: Part 2: Datatypes -->
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://niem.gov/niem/external/ogc-observation/draft-0.14.5/st/dhs-gmo/1.0.0"
xmlns:st="http://niem.gov/niem/external/ogc-observation/draft-0.14.5/st/dhs-gmo/1.0.0"
xmlns:hfp="http://www.w3.org/2001/XMLSchema-hasFacetAndProperty"
elementFormDefault="qualified" xml:lang="en">
<xs:annotation>
<xs:documentation>
This schema is based on the W3C XML Schema schema for XML Schemas: Part 2: Datatypes
The definitions of the "magic" built-in datatypes have been removed
The components for defining derived simpleTypes are retained, but defined in a new namespace.
OGC 05-087r4 page 88 © OGC 2006 – All rights reserved
DHS Changes:
2006-09-28 Changed schema location for http://www.w3.org/XML/1998/namespace
from ../../../../../xml/1998/namespace/xml.xsd (rule-based)
to ../../../../../w3c-xml/1998/xml.xsd (special case)
2006-09-22 Changed namespaces following NIEM conventions
1) targetnamespace http://niem.gov//niem/external/l/ogc-observation/draft-0.14.5/st/dhs-gmo/1.0.0
2006-09-18 versioned namespace (was "http://www.opengis.net/swe/st"),
import local copy of xml.xsd
</xs:documentation>
</xs:annotation>
<!-- these next six components from XMLSchema.xsd -->
<!-- <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd"> -->
<xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="../../../../../w3c-xml/1998/xml.xsd">
<xs:annotation>
<xs:documentation>
Get access to the xml: attribute groups for xml:lang
as declared on 'schema' and 'documentation' below
</xs:documentation>
</xs:annotation>
</xs:import>
<xs:complexType name="openAttrs">
<xs:annotation>
<xs:documentation>
This type is extended by almost all schema types
to allow attributes from other namespaces to be
added to user schemas.
</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:restriction base="xs:anyType">
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="annotated">
<xs:annotation>
<xs:documentation>
This type is extended by all types which allow annotation
other than <schema> itself
</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="st:openAttrs">
<xs:sequence>
<xs:element ref="st:annotation" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="id" type="xs:ID"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="appinfo" id="appinfo">
<xs:annotation>
<xs:documentation source="./#element-appinfo"/>
</xs:annotation>
<xs:complexType mixed="true">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:any processContents="lax"/>
</xs:sequence>
<xs:attribute name="source" type="xs:anyURI"/>
</xs:complexType>
</xs:element>
<xs:element name="documentation" id="documentation">
<xs:annotation>
<xs:documentation source="./#element-documentation"/>
</xs:annotation>
<xs:complexType mixed="true">
<xs:sequence minOccurs="0" maxOccurs="unbounded">
<xs:any processContents="lax"/>
</xs:sequence>
<xs:attribute name="source" type="xs:anyURI"/>
<xs:attribute ref="xml:lang"/>
</xs:complexType>
</xs:element>
<xs:element name="annotation" id="annotation">
<xs:annotation>
<xs:documentation source="./#element-annotation"/>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:extension base="st:openAttrs">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="st:appinfo"/>
<xs:element ref="st:documentation"/>
</xs:choice>
<xs:attribute name="id" type="xs:ID"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<!-- from here to end of document from datatypes.xsd -->
<xs:simpleType name="derivationControl">
<xs:annotation>
<xs:documentation>
A utility type, not for public use</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="substitution"/>
<xs:enumeration value="extension"/>
<xs:enumeration value="restriction"/>
<xs:enumeration value="list"/>
<xs:enumeration value="union"/>
</xs:restriction>
</xs:simpleType>
<xs:group name="simpleDerivation">
<xs:choice>
<xs:element ref="st:restriction"/>
<xs:element ref="st:list"/>
<xs:element ref="st:union"/>
</xs:choice>
</xs:group>
<xs:simpleType name="simpleDerivationSet">
<xs:annotation>
<xs:documentation>
#all or (possibly empty) subset of {restriction, union, list}
</xs:documentation>
<xs:documentation>
A utility type, not for public use</xs:documentation>
</xs:annotation>
<xs:union>
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="#all"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType>
<xs:restriction base="st:derivationControl">
<xs:enumeration value="list"/>
<xs:enumeration value="union"/>
<xs:enumeration value="restriction"/>
</xs:restriction>
</xs:simpleType>
</xs:union>
</xs:simpleType>
<xs:complexType name="simpleType" abstract="true">
<xs:complexContent>
<xs:extension base="st:annotated">
<xs:group ref="st:simpleDerivation"/>
<xs:attribute name="final" type="st:simpleDerivationSet"/>
<xs:attribute name="name" type="xs:NCName">
<xs:annotation>
<xs:documentation>
Can be restricted to required or forbidden
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="topLevelSimpleType">
<xs:complexContent>
<xs:restriction base="st:simpleType">
<xs:sequence>
<xs:element ref="st:annotation" minOccurs="0"/>
<xs:group ref="st:simpleDerivation"/>
</xs:sequence>
<xs:attribute name="name" type="xs:NCName" use="required">
<xs:annotation>
<xs:documentation>
Required at the top level
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="localSimpleType">
<xs:complexContent>
<xs:restriction base="st:simpleType">
<xs:sequence>
<xs:element ref="st:annotation" minOccurs="0"/>
<xs:group ref="st:simpleDerivation"/>
</xs:sequence>
<xs:attribute name="name" type="xs:NCName" use="prohibited">
<xs:annotation>
<xs:documentation>
Forbidden when nested
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="final" type="st:simpleDerivationSet" use="prohibited"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="simpleType" type="st:topLevelSimpleType" id="simpleType">
<xs:annotation>
<xs:documentation> source="./XML Schema Part 2 Datatypes.htm#elementsimpleType"</xs:documentation>
</xs:annotation>
</xs:element>
<xs:group name="facets">
<xs:annotation>
<xs:documentation>
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.
</xs:documentation>
</xs:annotation>
<xs:choice>
<xs:element ref="st:minExclusive"/>
<xs:element ref="st:minInclusive"/>
<xs:element ref="st:maxExclusive"/>
<xs:element ref="st:maxInclusive"/>
<xs:element ref="st:totalDigits"/>
<xs:element ref="st:fractionDigits"/>
<xs:element ref="st:length"/>
<xs:element ref="st:minLength"/>
<xs:element ref="st:maxLength"/>
<xs:element ref="st:enumeration"/>
<xs:element ref="st:whiteSpace"/>
<xs:element ref="st:pattern"/>
</xs:choice>
</xs:group>
<xs:group name="simpleRestrictionModel">
<xs:sequence>
<xs:element name="simpleType" type="st:localSimpleType" minOccurs="0"/>
<xs:group ref="st:facets" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:group>
<xs:element name="restriction" id="restriction">
<xs:complexType>
<xs:annotation>
<xs:documentation>source="./XML Schema Part 2 Datatypes.htm#element-restriction"
base attribute and simpleType child are mutually
exclusive, but one or other is required
</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="st:annotated">
<xs:group ref="st:simpleRestrictionModel"/>
<xs:attribute name="base" type="xs:QName" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="list" id="list">
<xs:complexType>
<xs:annotation>
<xs:documentation> source="./XML Schema Part 2 Datatypes.htm#element-list"
itemType attribute and simpleType child are mutually
exclusive, but one or other is required
</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="st:annotated">
<xs:sequence>
<xs:element name="simpleType" type="st:localSimpleType" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="itemType" type="xs:QName" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="union" id="union">
<xs:complexType>
<xs:annotation>
<xs:documentation> source="./XML Schema Part 2 Datatypes.htm#element-union"
memberTypes attribute must be non-empty or there must be
at least one simpleType child
</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="st:annotated">
<xs:sequence>
<xs:element name="simpleType" type="st:localSimpleType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="memberTypes" use="optional">
<xs:simpleType>
<xs:list itemType="xs:QName"/>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:complexType name="facet">
<xs:complexContent>
<xs:extension base="st:annotated">
<xs:attribute name="value" use="required"/>
<xs:attribute name="fixed" type="xs:boolean" use="optional" default="false"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="noFixedFacet">
<xs:complexContent>
<xs:restriction base="st:facet">
<xs:sequence>
<xs:element ref="st:annotation" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="fixed" type="xs:boolean" use="prohibited"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="minExclusive" type="st:facet" id="minExclusive">
<xs:annotation>
<xs:documentation> source="./XML Schema Part 2 Datatypes.htm#elementminExclusive"</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="minInclusive" type="st:facet" id="minInclusive">
<xs:annotation>
<xs:documentation> source="./XML Schema Part 2 Datatypes.htm#elementminInclusive"</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="maxExclusive" type="st:facet" id="maxExclusive">
<xs:annotation>
<xs:documentation> source="./XML Schema Part 2 Datatypes.htm#elementmaxExclusive"</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="maxInclusive" type="st:facet" id="maxInclusive">
<xs:annotation>
<xs:documentation> source="./XML Schema Part 2 Datatypes.htm#elementmaxInclusive"</xs:documentation>
</xs:annotation>
</xs:element>
<xs:complexType name="numFacet">
<xs:complexContent>
<xs:restriction base="st:facet">
<xs:sequence>
<xs:element ref="st:annotation" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="value" type="xs:nonNegativeInteger" use="required"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="totalDigits" id="totalDigits">
<xs:annotation>
<xs:documentation> source="./XML Schema Part 2 Datatypes.htm#elementtotalDigits"</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:restriction base="st:numFacet">
<xs:sequence>
<xs:element ref="st:annotation" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="value" type="xs:positiveInteger" use="required"/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="fractionDigits" type="st:numFacet" id="fractionDigits">
<xs:annotation>
<xs:documentation> source="./XML Schema Part 2 Datatypes.htm#elementfractionDigits"</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="length" type="st:numFacet" id="length">
<xs:annotation>
<xs:documentation> source="./XML Schema Part 2 Datatypes.htm#element-length"</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="minLength" type="st:numFacet" id="minLength">
<xs:annotation>
<xs:documentation> source="./XML Schema Part 2 Datatypes.htm#elementminLength"</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="maxLength" type="st:numFacet" id="maxLength">
<xs:annotation>
<xs:documentation> source="./XML Schema Part 2 Datatypes.htm#elementmaxLength"</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="enumeration" type="st:noFixedFacet" id="enumeration">
<xs:annotation>
<xs:documentation> source="./XML Schema Part 2 Datatypes.htm#elementenumeration"</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="whiteSpace" id="whiteSpace">
<xs:annotation>
<xs:documentation> source="./XML Schema Part 2 Datatypes.htm#elementwhiteSpace"</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:complexContent>
<xs:restriction base="st:facet">
<xs:sequence>
<xs:element ref="st:annotation" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="value" use="required">
<xs:simpleType>
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="preserve"/>
<xs:enumeration value="replace"/>
<xs:enumeration value="collapse"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="pattern" type="st:noFixedFacet" id="pattern">
<xs:annotation>
<xs:documentation> source="./XML Schema Part 2 Datatypes.htm#elementpattern"</xs:documentation>
</xs:annotation>
</xs:element>
</xs:schema>
|