Commit cf51c88b authored by Claus Nagel's avatar Claus Nagel
Browse files

0.3.0pre: intermediate commit to make changes persistent

do not update to this revision.
parent 357dd37e
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSPY v2004 rel. 2 U (http://www.xmlspy.com) by David Burggraf (Galdos Systems Inc) -->
<schema targetNamespace="http://www.opengis.net/gml" elementFormDefault="qualified" version="3.1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:sch="http://www.ascc.net/xml/schematron"
xmlns="http://www.w3.org/2001/XMLSchema">
<annotation>
<appinfo source="urn:opengis:specification:gml:schema-xsd:geometryBasic0d1d:v3.1.1">geometryBasic0d1d.xsd</appinfo>
<appinfo source="urn:opengis:specification:gml:schema-xsd:geometryBasic0d1d:v3.1.1">
<sch:title>Schematron validation</sch:title>
<sch:pattern name="Check SRS tags">
<sch:rule abstract="true" id="CRSLabels">
<sch:report test="not(@srsDimension) or @srsName">The presence of a dimension attribute implies the presence of the srsName attribute.</sch:report>
<sch:report test="not(@axisLabels) or @srsName">The presence of an axisLabels attribute implies the presence of the srsName attribute.</sch:report>
<sch:report test="not(@uomLabels) or @srsName">The presence of an uomLabels attribute implies the presence of the srsName attribute.</sch:report>
<sch:report test="(not(@uomLabels) and not(@axisLabels)) or (@uomLabels and @axisLabels)">The presence of an uomLabels attribute implies the presence of the axisLabels attribute and vice versa.</sch:report>
</sch:rule>
</sch:pattern>
<sch:pattern name="Check Dimension">
<sch:rule abstract="true" id="Count">
<sch:report test="not(@count) or @srsDimension">The presence of a count attribute implies the presence of the dimension attribute.</sch:report>
</sch:rule>
</sch:pattern>
</appinfo>
<documentation>Copyright (c) 2001-2005 OGC, All Rights Reserved.
For conditions, see OGC Software Notice http://www.opengeospatial.org/about/?page=ipr</documentation>
</annotation>
<!-- ============================================================== -->
<include schemaLocation="measures.xsd">
<annotation>
<documentation>This includes not only measures.xsd, but also units.xsd, gmlBase.xsd and basicTypes.xsd.</documentation>
</annotation>
</include>
<!-- ============================================================== -->
<!-- =========== abstract supertype for geometry objects =================== -->
<!-- ============================================================== -->
<element name="_Geometry" type="gml:AbstractGeometryType" abstract="true" substitutionGroup="gml:_GML">
<annotation>
<documentation>The "_Geometry" element is the abstract head of the substituition group for all geometry elements of GML 3. This
includes pre-defined and user-defined geometry elements. Any geometry element must be a direct or indirect extension/restriction
of AbstractGeometryType and must be directly or indirectly in the substitution group of "_Geometry".</documentation>
<appinfo>
<sch:pattern name="Check SRS tags">
<sch:rule context="gml:_Geometry">
<sch:extends rule="CRSLabels"/>
</sch:rule>
</sch:pattern>
</appinfo>
</annotation>
</element>
<!-- ============================================================== -->
<complexType name="GeometryPropertyType">
<annotation>
<documentation>A geometric property can either be any geometry element encapsulated in an element of this type or an XLink reference
to a remote geometry element (where remote includes geometry elements located elsewhere in the same document). Note that either
the reference or the contained element must be given, but not both or none.</documentation>
</annotation>
<sequence minOccurs="0">
<element ref="gml:_Geometry"/>
</sequence>
<attributeGroup ref="gml:AssociationAttributeGroup">
<annotation>
<documentation>This attribute group includes the XLink attributes (see xlinks.xsd). XLink is used in GML to reference
remote resources (including those elsewhere in the same document). A simple link element can be constructed by
including a specific set of XLink attributes. The XML Linking Language (XLink) is currently a Proposed Recommendation
of the World Wide Web Consortium. XLink allows elements to be inserted into XML documents so as to create
sophisticated links between resources; such links can be used to reference remote properties. A simple link element
can be used to implement pointer functionality, and this functionality has been built into various GML 3 elements by
including the gml:AssociationAttributeGroup.</documentation>
</annotation>
</attributeGroup>
</complexType>
<!-- ============================================================== -->
<complexType name="GeometryArrayPropertyType">
<annotation>
<documentation>A container for an array of geometry elements. The elements are always contained in the array property,
referencing geometry elements or arrays of geometry elements is not supported.</documentation>
</annotation>
<sequence>
<element ref="gml:_Geometry" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</complexType>
<!-- ============================================================== -->
<complexType name="AbstractGeometryType" abstract="true">
<annotation>
<documentation>All geometry elements are derived directly or indirectly from this abstract supertype. A geometry element may
have an identifying attribute ("gml:id"), a name (attribute "name") and a description (attribute "description"). It may be associated
with a spatial reference system (attribute "srsName"). The following rules shall be adhered: - Every geometry type shall derive
from this abstract type. - Every geometry element (i.e. an element of a geometry type) shall be directly or indirectly in the
substitution group of _Geometry.</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractGMLType">
<attribute name="gid" type="string" use="optional">
<annotation>
<documentation>This attribute is included for backward compatibility with GML 2 and is deprecated with GML 3.
This identifer is superceded by "gml:id" inherited from AbstractGMLType. The attribute "gid" should not be used
anymore and may be deleted in future versions of GML without further notice.</documentation>
</annotation>
</attribute>
<attributeGroup ref="gml:SRSReferenceGroup"/>
</extension>
</complexContent>
</complexType>
<!-- ============================================================== -->
<attributeGroup name="SRSReferenceGroup">
<annotation>
<documentation>Optional reference to the CRS used by this geometry, with optional additional information to simplify use when
a more complete definition of the CRS is not needed.</documentation>
</annotation>
<attribute name="srsName" type="anyURI" use="optional">
<annotation>
<documentation>In general this reference points to a CRS instance of gml:CoordinateReferenceSystemType
(see coordinateReferenceSystems.xsd). For well known references it is not required that the CRS description exists at the
location the URI points to. If no srsName attribute is given, the CRS must be specified as part of the larger context this
geometry element is part of, e.g. a geometric element like point, curve, etc. It is expected that this attribute will be specified
at the direct position level only in rare cases.</documentation>
</annotation>
</attribute>
<attribute name="srsDimension" type="positiveInteger" use="optional">
<annotation>
<documentation>The "srsDimension" is the length of coordinate sequence (the number of entries in the list). This dimension is
specified by the coordinate reference system. When the srsName attribute is omitted, this attribute shall be omitted.</documentation>
</annotation>
</attribute>
<attributeGroup ref="gml:SRSInformationGroup"/>
</attributeGroup>
<!-- =================================================== -->
<attributeGroup name="SRSInformationGroup">
<annotation>
<documentation>Optional additional and redundant information for a CRS to simplify use when a more complete definition of the
CRS is not needed. This information shall be the same as included in the more complete definition of the CRS, referenced by the
srsName attribute. When the srsName attribute is included, either both or neither of the axisLabels and uomLabels attributes
shall be included. When the srsName attribute is omitted, both of these attributes shall be omitted.</documentation>
</annotation>
<attribute name="axisLabels" type="gml:NCNameList" use="optional">
<annotation>
<documentation>Ordered list of labels for all the axes of this CRS. The gml:axisAbbrev value should be used for these axis
labels, after spaces and forbiddden characters are removed. When the srsName attribute is included, this attribute is optional.
When the srsName attribute is omitted, this attribute shall also be omitted.</documentation>
</annotation>
</attribute>
<attribute name="uomLabels" type="gml:NCNameList" use="optional">
<annotation>
<documentation>Ordered list of unit of measure (uom) labels for all the axes of this CRS. The value of the string in the
gml:catalogSymbol should be used for this uom labels, after spaces and forbiddden characters are removed. When the
axisLabels attribute is included, this attribute shall also be included. When the axisLabels attribute is omitted, this attribute
shall also be omitted.</documentation>
</annotation>
</attribute>
</attributeGroup>
<!-- ============================================================== -->
<element name="_GeometricPrimitive" type="gml:AbstractGeometricPrimitiveType" abstract="true" substitutionGroup="gml:_Geometry">
<annotation>
<documentation>The "_GeometricPrimitive" element is the abstract head of the substituition group for all (pre- and user-defined)
geometric primitives.</documentation>
</annotation>
</element>
<!-- ============================================================== -->
<complexType name="AbstractGeometricPrimitiveType" abstract="true">
<annotation>
<documentation>This is the abstract root type of the geometric primitives. A geometric primitive is a geometric object that is not
decomposed further into other primitives in the system. All primitives are oriented in the direction implied by the sequence of their
coordinate tuples.</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractGeometryType"/>
</complexContent>
</complexType>
<!-- ============================================================== -->
<complexType name="GeometricPrimitivePropertyType">
<annotation>
<documentation>A property that has a geometric primitive as its value domain can either be an appropriate geometry element
encapsulated in an element of this type or an XLink reference to a remote geometry element (where remote includes geometry
elements located elsewhere in the same document). Either the reference or the contained element must be given, but neither
both nor none.</documentation>
</annotation>
<sequence minOccurs="0">
<element ref="gml:_GeometricPrimitive"/>
</sequence>
<attributeGroup ref="gml:AssociationAttributeGroup">
<annotation>
<documentation>This attribute group includes the XLink attributes (see xlinks.xsd). XLink is used in GML to reference remote
resources (including those elsewhere in the same document). A simple link element can be constructed by including a
specific set of XLink attributes. The XML Linking Language (XLink) is currently a Proposed Recommendation of the World Wide
Web Consortium. XLink allows elements to be inserted into XML documents so as to create sophisticated links between
resources; such links can be used to reference remote properties. A simple link element can be used to implement pointer
functionality, and this functionality has been built into various GML 3 elements by including the gml:AssociationAttributeGroup.</documentation>
</annotation>
</attributeGroup>
</complexType>
<!-- =========================================================== -->
<!-- primitive geometry objects (0-dimensional) -->
<!-- ============================================================== -->
<element name="Point" type="gml:PointType" substitutionGroup="gml:_GeometricPrimitive"/>
<!-- ============================================================== -->
<complexType name="PointType">
<annotation>
<documentation>A Point is defined by a single coordinate tuple.</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractGeometricPrimitiveType">
<sequence>
<choice>
<annotation>
<documentation>GML supports two different ways to specify the direct poisiton of a point. 1. The "pos" element is of type
DirectPositionType.</documentation>
</annotation>
<element ref="gml:pos"/>
<element ref="gml:coordinates">
<annotation>
<documentation>Deprecated with GML version 3.1.0 for coordinates with ordinate values that are numbers. Use "pos"
instead. The "coordinates" element shall only be used for coordinates with ordinates that require a string
representation, e.g. DMS representations.</documentation>
</annotation>
</element>
<element ref="gml:coord">
<annotation>
<documentation>Deprecated with GML version 3.0. Use "pos" instead. The "coord" element is included for
backwards compatibility with GML 2.</documentation>
</annotation>
</element>
</choice>
</sequence>
</extension>
</complexContent>
</complexType>
<!-- ============================================================== -->
<element name="pointProperty" type="gml:PointPropertyType">
<annotation>
<appinfo>
<sch:pattern name="Check either href or content not both">
<sch:rule context="gml:pointProperty">
<sch:extends rule="hrefOrContent"/>
</sch:rule>
</sch:pattern>
</appinfo>
<documentation>This property element either references a point via the XLink-attributes or contains the point element. pointProperty
is the predefined property which can be used by GML Application Schemas whenever a GML Feature has a property with a value that
is substitutable for Point.</documentation>
</annotation>
</element>
<!-- ============================================================== -->
<element name="pointRep" type="gml:PointPropertyType">
<annotation>
<documentation>Deprecated with GML version 3.1.0. Use "pointProperty" instead. Included for backwards compatibility with GML 3.0.0.</documentation>
</annotation>
</element>
<!-- ============================================================== -->
<complexType name="PointPropertyType">
<annotation>
<documentation>A property that has a point as its value domain can either be an appropriate geometry element encapsulated in an
element of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located
elsewhere in the same document). Either the reference or the contained element must be given, but neither both nor none.</documentation>
</annotation>
<sequence minOccurs="0">
<element ref="gml:Point"/>
</sequence>
<attributeGroup ref="gml:AssociationAttributeGroup">
<annotation>
<documentation>This attribute group includes the XLink attributes (see xlinks.xsd). XLink is used in GML to reference remote
resources (including those elsewhere in the same document). A simple link element can be constructed by including a specific
set of XLink attributes. The XML Linking Language (XLink) is currently a Proposed Recommendation of the World Wide Web Consortium.
XLink allows elements to be inserted into XML documents so as to create sophisticated links between resources; such links can be
used to reference remote properties. A simple link element can be used to implement pointer functionality, and this functionality has
been built into various GML 3 elements by including the gml:AssociationAttributeGroup.</documentation>
</annotation>
</attributeGroup>
</complexType>
<!-- ============================================================== -->
<element name="pointArrayProperty" type="gml:PointArrayPropertyType"/>
<!-- =========================================================== -->
<complexType name="PointArrayPropertyType">
<annotation>
<documentation>A container for an array of points. The elements are always contained in the array property, referencing geometry
elements or arrays of geometry elements is not supported.</documentation>
</annotation>
<sequence>
<element ref="gml:Point" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</complexType>
<!-- =========================================================== -->
<!-- primitive geometry objects (1-dimensional) -->
<!-- ============================================================== -->
<element name="_Curve" type="gml:AbstractCurveType" abstract="true" substitutionGroup="gml:_GeometricPrimitive">
<annotation>
<documentation>The "_Curve" element is the abstract head of the substituition group for all (continuous) curve elements.</documentation>
</annotation>
</element>
<!-- ============================================================== -->
<complexType name="AbstractCurveType" abstract="true">
<annotation>
<documentation>An abstraction of a curve to support the different levels of complexity. The curve can always be viewed as a geometric
primitive, i.e. is continuous.</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractGeometricPrimitiveType"/>
</complexContent>
</complexType>
<!-- ============================================================== -->
<element name="curveProperty" type="gml:CurvePropertyType">
<annotation>
<appinfo>
<sch:pattern name="Check either href or content not both">
<sch:rule context="gml:curveProperty">
<sch:extends rule="hrefOrContent"/>
</sch:rule>
</sch:pattern>
</appinfo>
<documentation>This property element either references a curve via the XLink-attributes or contains the curve element. curveProperty is the
predefined property which can be used by GML Application Schemas whenever a GML Feature has a property with a value that is
substitutable for _Curve.</documentation>
</annotation>
</element>
<!-- ============================================================== -->
<complexType name="CurvePropertyType">
<annotation>
<documentation>A property that has a curve as its value domain can either be an appropriate geometry element encapsulated in an
element of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located elsewhere
in the same document). Either the reference or the contained element must be given, but neither both nor none.</documentation>
</annotation>
<sequence minOccurs="0">
<element ref="gml:_Curve"/>
</sequence>
<attributeGroup ref="gml:AssociationAttributeGroup">
<annotation>
<documentation>This attribute group includes the XLink attributes (see xlinks.xsd). XLink is used in GML to reference remote
resources (including those elsewhere in the same document). A simple link element can be constructed by including a specific
set of XLink attributes. The XML Linking Language (XLink) is currently a Proposed Recommendation of the World Wide Web Consortium.
XLink allows elements to be inserted into XML documents so as to create sophisticated links between resources; such links can be used
to reference remote properties. A simple link element can be used to implement pointer functionality, and this functionality has been built
into various GML 3 elements by including the gml:AssociationAttributeGroup.</documentation>
</annotation>
</attributeGroup>
</complexType>
<!-- ============================================================== -->
<element name="curveArrayProperty" type="gml:CurveArrayPropertyType"/>
<!-- =========================================================== -->
<complexType name="CurveArrayPropertyType">
<annotation>
<documentation>A container for an array of curves. The elements are always contained in the array property, referencing geometry elements
or arrays of geometry elements is not supported.</documentation>
</annotation>
<sequence>
<element ref="gml:_Curve" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</complexType>
<!-- =========================================================== -->
<element name="LineString" type="gml:LineStringType" substitutionGroup="gml:_Curve"/>
<!-- =========================================================== -->
<complexType name="LineStringType">
<annotation>
<documentation>A LineString is a special curve that consists of a single segment with linear interpolation. It is defined by two or more coordinate
tuples, with linear interpolation between them. It is backwards compatible with the LineString of GML 2, GM_LineString of ISO 19107 is
implemented by LineStringSegment.</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractCurveType">
<sequence>
<choice>
<annotation>
<documentation>GML supports two different ways to specify the control points of a line string. 1. A sequence of "pos"
(DirectPositionType) or "pointProperty" (PointPropertyType) elements. "pos" elements are control points that are only part
of this curve, "pointProperty" elements contain a point that may be referenced from other geometry elements or reference
another point defined outside of this curve (reuse of existing points). 2. The "posList" element allows for a compact way to
specifiy the coordinates of the control points, if all control points are in the same coordinate reference systems and belong
to this curve only. The number of direct positions in the list must be at least two.</documentation>
</annotation>
<choice minOccurs="2" maxOccurs="unbounded">
<element ref="gml:pos"/>
<element ref="gml:pointProperty"/>
<element ref="gml:pointRep">
<annotation>
<documentation>Deprecated with GML version 3.1.0. Use "pointProperty" instead. Included for backwards compatibility
with GML 3.0.0.</documentation>
</annotation>
</element>
<element ref="gml:coord">
<annotation>
<documentation>Deprecated with GML version 3.0. Use "pos" instead. The "coord" element is included for backwards
compatibility with GML 2.</documentation>
</annotation>
</element>
</choice>
<element ref="gml:posList"/>
<element ref="gml:coordinates">
<annotation>
<documentation>Deprecated with GML version 3.1.0. Use "posList" instead.</documentation>
</annotation>
</element>
</choice>
</sequence>
</extension>
</complexContent>
</complexType>
<!-- ============================================================== -->
<!-- positions -->
<!-- =========================================================== -->
<element name="pos" type="gml:DirectPositionType">
<annotation>
<appinfo>
<sch:pattern name="Check SRS tags">
<sch:rule context="gml:pos">
<sch:extends rule="CRSLabels"/>
</sch:rule>
</sch:pattern>
</appinfo>
</annotation>
</element>
<!-- ============================================================== -->
<complexType name="DirectPositionType">
<annotation>
<documentation>DirectPosition instances hold the coordinates for a position within some coordinate reference system (CRS). Since
DirectPositions, as data types, will often be included in larger objects (such as geometry elements) that have references to CRS, the
"srsName" attribute will in general be missing, if this particular DirectPosition is included in a larger element with such a reference to a
CRS. In this case, the CRS is implicitly assumed to take on the value of the containing object's CRS.</documentation>
</annotation>
<simpleContent>
<extension base="gml:doubleList">
<attributeGroup ref="gml:SRSReferenceGroup"/>
</extension>
</simpleContent>
</complexType>
<!-- =========================================================== -->
<element name="posList" type="gml:DirectPositionListType">
<annotation>
<appinfo>
<sch:pattern name="Check SRS tags">
<sch:rule context="gml:posList">
<sch:extends rule="CRSLabels"/>
</sch:rule>
</sch:pattern>
</appinfo>
<appinfo>
<sch:pattern name="Check Dimension">
<sch:rule context="gml:posList">
<sch:extends rule="Count"/>
</sch:rule>
</sch:pattern>
</appinfo>
</annotation>
</element>
<!-- ============================================================== -->
<complexType name="DirectPositionListType">
<annotation>
<documentation>DirectPositionList instances hold the coordinates for a sequence of direct positions within the same coordinate
reference system (CRS).</documentation>
</annotation>
<simpleContent>
<extension base="gml:doubleList">
<attributeGroup ref="gml:SRSReferenceGroup"/>
<attribute name="count" type="positiveInteger" use="optional">
<annotation>
<documentation>"count" allows to specify the number of direct positions in the list. If the attribute count is present then
the attribute srsDimension shall be present, too.</documentation>
</annotation>
</attribute>
</extension>
</simpleContent>
</complexType>
<!-- ============================================================== -->
<element name="vector" type="gml:VectorType">
<annotation>
<appinfo>
<sch:pattern name="Check SRS tags">
<sch:rule context="gml:vector">
<sch:extends rule="CRSLabels"/>
</sch:rule>
</sch:pattern>
</appinfo>
</annotation>
</element>
<!-- ============================================================== -->
<complexType name="VectorType">
<annotation>
<documentation>Vector instances hold the compoents for a (usually spatial) vector within some coordinate reference system (CRS).
Since Vectors will often be included in larger objects that have references to CRS, the "srsName" attribute may be missing.
In this case, the CRS is implicitly assumed to take on the value of the containing object's CRS.
Note that this content model is the same as DirectPositionType, but is defined separately to reflect the distinct semantics, and to avoid validation problems. SJDC 2004-12-02</documentation>
</annotation>
<simpleContent>
<extension base="gml:doubleList">
<attributeGroup ref="gml:SRSReferenceGroup"/>
</extension>
</simpleContent>
</complexType>
<!-- ============================================================== -->
<group name="geometricPositionGroup">
<annotation>
<documentation>A geometric position represented either by a DirectPosition or a Point.</documentation>
</annotation>
<choice>
<element ref="gml:pos"/>
<element ref="gml:pointProperty"/>
</choice>
</group>
<!-- ============================================================== -->
<group name="geometricPositionListGroup">
<annotation>
<documentation>A list of geometric positions represented either by a DirectPosition or a Point.</documentation>
</annotation>
<choice>
<element ref="gml:posList"/>
<group ref="gml:geometricPositionGroup" maxOccurs="unbounded"/>
</choice>
</group>
<!-- ============================================================== -->
<element name="coordinates" type="gml:CoordinatesType">
<annotation>
<documentation>Deprecated with GML version 3.1.0.</documentation>
</annotation>
</element>
<!-- =========================================================== -->
<!-- Envelope -->
<!-- =========================================================== -->
<element name="Envelope" type="gml:EnvelopeType"/>
<!-- =========================================================== -->
<complexType name="EnvelopeType">
<annotation>
<documentation>Envelope defines an extent using a pair of positions defining opposite corners in arbitrary dimensions. The first direct
position is the "lower corner" (a coordinate position consisting of all the minimal ordinates for each dimension for all points within the envelope),
the second one the "upper corner" (a coordinate position consisting of all the maximal ordinates for each dimension for all points within the
envelope).</documentation>
</annotation>
<choice>
<sequence>
<element name="lowerCorner" type="gml:DirectPositionType"/>
<element name="upperCorner" type="gml:DirectPositionType"/>
</sequence>
<element ref="gml:coord" minOccurs="2" maxOccurs="2">
<annotation>
<appinfo>deprecated</appinfo>
<documentation>deprecated with GML version 3.0</documentation>
</annotation>
</element>
<element ref="gml:pos" minOccurs="2" maxOccurs="2">
<annotation>
<appinfo>deprecated</appinfo>
<documentation>Deprecated with GML version 3.1. Use the explicit properties "lowerCorner" and "upperCorner" instead.</documentation>
</annotation>
</element>
<element ref="gml:coordinates">
<annotation>
<documentation>Deprecated with GML version 3.1.0. Use the explicit properties "lowerCorner" and "upperCorner" instead.</documentation>
</annotation>
</element>
</choice>
<attributeGroup ref="gml:SRSReferenceGroup"/>
</complexType>
<!-- =========================================================== -->
<!-- =========================================================== -->
<!-- =========================================================== -->
<!-- The following types and elements are deprecated and should not be used ! -->
<element name="coord" type="gml:CoordType">
<annotation>
<documentation>Deprecated with GML 3.0 and included for backwards compatibility with GML 2. Use the "pos" element instead.</documentation>
</annotation>
</element>
<complexType name="CoordType">
<annotation>
<documentation>Represents a coordinate tuple in one, two, or three dimensions. Deprecated with GML 3.0 and replaced by
DirectPositionType.</documentation>
</annotation>
<sequence>
<element name="X" type="decimal"/>
<element name="Y" type="decimal" minOccurs="0"/>
<element name="Z" type="decimal" minOccurs="0"/>
</sequence>
</complexType>
<!-- =========================================================== -->
<element name="lineStringProperty" type="gml:LineStringPropertyType">
<annotation>
<documentation>Deprecated with GML 3.0 and included only for backwards compatibility with GML 2.0. Use "curveProperty" instead. This
property element either references a line string via the XLink-attributes or contains the line string element.</documentation>
</annotation>
</element>
<!-- =========================================================== -->
<complexType name="LineStringPropertyType">
<annotation>
<documentation>This type is deprecated with GML 3 and shall not be used. It is included for backwards compatibility with GML 2. Use
CurvePropertyType instead. A property that has a line string as its value domain can either be an appropriate geometry element encapsulated
in an element of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located elsewhere
in the same document). Either the reference or the contained element must be given, but neither both nor none.</documentation>
</annotation>
<sequence minOccurs="0">
<element ref="gml:LineString"/>
</sequence>
<attributeGroup ref="gml:AssociationAttributeGroup">
<annotation>
<documentation>This attribute group includes the XLink attributes (see xlinks.xsd). XLink is used in GML to reference remote resources
(including those elsewhere in the same document). A simple link element can be constructed by including a specific set of XLink attributes.
The XML Linking Language (XLink) is currently a Proposed Recommendation of the World Wide Web Consortium. XLink allows elements to
be inserted into XML documents so as to create sophisticated links between resources; such links can be used to reference remote properties.
A simple link element can be used to implement pointer functionality, and this functionality has been built into various GML 3 elements by
including the gml:AssociationAttributeGroup.</documentation>
</annotation>
</attributeGroup>
</complexType>
<!-- =========================================================== -->
</schema>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSPY v5 rel. 2 U (http://www.xmlspy.com) by Clemens Portele (interactive instruments) -->
<schema targetNamespace="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:sch="http://www.ascc.net/xml/schematron" xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
version="3.1.1">
<annotation>
<appinfo source="urn:opengis:specification:gml:schema-xsd:geometryBasic2d:3.1.1">geometryBasic2d.xsd</appinfo>
<documentation>Copyright (c) 2001-2005 OGC, All Rights Reserved.
For conditions, see OGC Software Notice http://www.opengeospatial.org/about/?page=ipr</documentation>
</annotation>
<include schemaLocation="geometryBasic0d1d.xsd"/>
<!-- =========================================================== -->
<!-- primitive geometry objects (2-dimensional) -->
<!-- =========================================================== -->
<element name="_Surface" type="gml:AbstractSurfaceType" abstract="true" substitutionGroup="gml:_GeometricPrimitive">
<annotation>
<documentation>The "_Surface" element is the abstract head of the substituition group for all (continuous) surface elements.</documentation>
</annotation>
</element>
<!-- =========================================================== -->
<complexType name="AbstractSurfaceType">
<annotation>
<documentation>An abstraction of a surface to support the different levels of complexity. A surface is always a continuous region of a plane.</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractGeometricPrimitiveType"/>
</complexContent>
</complexType>
<!-- =========================================================== -->
<element name="surfaceProperty" type="gml:SurfacePropertyType">
<annotation>
<appinfo>
<sch:pattern name="Check either href or content not both">
<sch:rule context="gml:surfaceProperty">
<sch:extends rule="hrefOrContent"/>
</sch:rule>
</sch:pattern>
</appinfo>
<documentation>This property element either references a surface via the XLink-attributes or contains the surface element. surfaceProperty is the predefined property which can be used by GML Application Schemas whenever a GML Feature has a property with a value that is substitutable for _Surface.</documentation>
</annotation>
</element>
<!-- =========================================================== -->
<complexType name="SurfacePropertyType">
<annotation>
<documentation>A property that has a surface as its value domain can either be an appropriate geometry element encapsulated in an element of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located elsewhere in the same document). Either the reference or the contained element must be given, but neither both nor none.</documentation>
</annotation>
<sequence minOccurs="0">
<element ref="gml:_Surface"/>
</sequence>
<attributeGroup ref="gml:AssociationAttributeGroup">
<annotation>
<documentation>This attribute group includes the XLink attributes (see xlinks.xsd). XLink is used in GML to reference remote resources (including those elsewhere in the same document). A simple link element can be constructed by including a specific set of XLink attributes. The XML Linking Language (XLink) is currently a Proposed Recommendation of the World Wide Web Consortium. XLink allows elements to be inserted into XML documents so as to create sophisticated links between resources; such links can be used to reference remote properties.
A simple link element can be used to implement pointer functionality, and this functionality has been built into various GML 3 elements by including the gml:AssociationAttributeGroup.</documentation>
</annotation>
</attributeGroup>
</complexType>
<!-- =========================================================== -->
<element name="surfaceArrayProperty" type="gml:SurfaceArrayPropertyType"/>
<!-- =========================================================== -->
<complexType name="SurfaceArrayPropertyType">
<annotation>
<documentation>A container for an array of surfaces. The elements are always contained in the array property, referencing geometry elements or arrays of geometry elements is not supported.</documentation>
</annotation>
<sequence>
<element ref="gml:_Surface" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</complexType>
<!-- =========================================================== -->
<element name="Polygon" type="gml:PolygonType" substitutionGroup="gml:_Surface"/>
<!-- =========================================================== -->
<complexType name="PolygonType">
<annotation>
<documentation>A Polygon is a special surface that is defined by a single surface patch. The boundary of this patch is coplanar and the polygon uses planar interpolation in its interior. It is backwards compatible with the Polygon of GML 2, GM_Polygon of ISO 19107 is implemented by PolygonPatch.</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractSurfaceType">
<sequence>
<element ref="gml:exterior" minOccurs="0"/>
<element ref="gml:interior" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</extension>
</complexContent>
</complexType>
<!-- =========================================================== -->
<!-- rings (closed curves for surface boundaries) -->
<!-- =========================================================== -->
<element name="_Ring" type="gml:AbstractRingType" abstract="true" substitutionGroup="gml:_Geometry">
<annotation>
<documentation>The "_Ring" element is the abstract head of the substituition group for all closed boundaries of a surface patch.</documentation>
</annotation>
</element>
<!-- =========================================================== -->
<complexType name="AbstractRingType" abstract="true">
<annotation>
<documentation>An abstraction of a ring to support surface boundaries of different complexity.</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractGeometryType"/>
</complexContent>
</complexType>
<!-- =========================================================== -->
<element name="exterior" type="gml:AbstractRingPropertyType">
<annotation>
<documentation>A boundary of a surface consists of a number of rings. In the normal 2D case, one of these rings is distinguished as being the exterior boundary. In a general manifold this is not always possible, in which case all boundaries shall be listed as interior boundaries, and the exterior will be empty.</documentation>
</annotation>
</element>
<element name="interior" type="gml:AbstractRingPropertyType">
<annotation>
<documentation>A boundary of a surface consists of a number of rings. The "interior" rings seperate the surface / surface patch from the area enclosed by the rings.</documentation>
</annotation>
</element>
<element name="outerBoundaryIs" type="gml:AbstractRingPropertyType" substitutionGroup="gml:exterior">
<annotation>
<documentation>Deprecated with GML 3.0, included only for backwards compatibility with GML 2. Use "exterior" instead.</documentation>
</annotation>
</element>
<element name="innerBoundaryIs" type="gml:AbstractRingPropertyType" substitutionGroup="gml:interior">
<annotation>
<documentation>Deprecated with GML 3.0, included only for backwards compatibility with GML 2. Use "interior" instead.</documentation>
</annotation>
</element>
<!-- =========================================================== -->
<complexType name="AbstractRingPropertyType">
<annotation>
<documentation>Encapsulates a ring to represent the surface boundary property of a surface.</documentation>
</annotation>
<sequence>
<element ref="gml:_Ring"/>
</sequence>
</complexType>
<!-- =========================================================== -->
<element name="LinearRing" type="gml:LinearRingType" substitutionGroup="gml:_Ring"/>
<!-- =========================================================== -->
<complexType name="LinearRingType">
<annotation>
<documentation>A LinearRing is defined by four or more coordinate tuples, with linear interpolation between them; the first and last coordinates must be coincident.</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractRingType">
<sequence>
<choice>
<annotation>
<documentation>GML supports two different ways to specify the control points of a linear ring.
1. A sequence of "pos" (DirectPositionType) or "pointProperty" (PointPropertyType) elements. "pos" elements are control points that are only part of this ring, "pointProperty" elements contain a point that may be referenced from other geometry elements or reference another point defined outside of this ring (reuse of existing points).
2. The "posList" element allows for a compact way to specifiy the coordinates of the control points, if all control points are in the same coordinate reference systems and belong to this ring only. The number of direct positions in the list must be at least four.</documentation>
</annotation>
<choice minOccurs="4" maxOccurs="unbounded">
<element ref="gml:pos"/>
<element ref="gml:pointProperty"/>
<element ref="gml:pointRep">
<annotation>
<documentation>Deprecated with GML version 3.1.0. Use "pointProperty" instead. Included for backwards compatibility with GML 3.0.0.</documentation>
</annotation>
</element>
</choice>
<element ref="gml:posList"/>
<element ref="gml:coordinates">
<annotation>
<documentation>Deprecated with GML version 3.1.0. Use "posList" instead.</documentation>
</annotation>
</element>
<element ref="gml:coord" minOccurs="4" maxOccurs="unbounded">
<annotation>
<documentation>Deprecated with GML version 3.0 and included for backwards compatibility with GML 2. Use "pos" elements instead.</documentation>
</annotation>
</element>
</choice>
</sequence>
</extension>
</complexContent>
</complexType>
<!-- =========================================================== -->
<complexType name="LinearRingPropertyType">
<annotation>
<documentation>Encapsulates a ring to represent properties in features or geometry collections.</documentation>
</annotation>
<choice>
<element ref="gml:LinearRing"/>
</choice>
</complexType>
<!-- =========================================================== -->
<!--
The following types and elements are deprecated and should not be used !
-->
<!-- =========================================================== -->
<element name="polygonProperty" type="gml:PolygonPropertyType">
<annotation>
<documentation>Deprecated with GML 3.0 and included only for backwards compatibility with GML 2.0. Use "surfaceProperty" instead.
This property element either references a polygon via the XLink-attributes or contains the polygon element.</documentation>
</annotation>
</element>
<!-- =========================================================== -->
<complexType name="PolygonPropertyType">
<annotation>
<documentation>This type is deprecated with GML 3 and shall not be used. It is included for backwards compatibility with GML 2. Use SurfacePropertyType instead.
A property that has a polygon as its value domain can either be an appropriate geometry element encapsulated in an element of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located elsewhere in the same document). Either the reference or the contained element must be given, but neither both nor none.</documentation>
</annotation>
<sequence minOccurs="0">
<element ref="gml:Polygon"/>
</sequence>
<attributeGroup ref="gml:AssociationAttributeGroup">
<annotation>
<documentation>This attribute group includes the XLink attributes (see xlinks.xsd). XLink is used in GML to reference remote resources (including those elsewhere in the same document). A simple link element can be constructed by including a specific set of XLink attributes. The XML Linking Language (XLink) is currently a Proposed Recommendation of the World Wide Web Consortium. XLink allows elements to be inserted into XML documents so as to create sophisticated links between resources; such links can be used to reference remote properties.
A simple link element can be used to implement pointer functionality, and this functionality has been built into various GML 3 elements by including the gml:AssociationAttributeGroup.</documentation>
</annotation>
</attributeGroup>
</complexType>
<!-- =========================================================== -->
</schema>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:sch="http://www.ascc.net/xml/schematron" xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
version="3.1.1">
<annotation>
<appinfo source="urn:opengis:specification:gml:schema-xsd:geometryComplexes:v3.1.1">geometryComplexes.xsd</appinfo>
<documentation>Copyright (c) 2001-2005 OGC, All Rights Reserved.
For conditions, see OGC Software Notice http://www.opengeospatial.org/about/?page=ipr</documentation>
</annotation>
<include schemaLocation="geometryAggregates.xsd"/>
<!-- =========================================================== -->
<element name="CompositeCurve" type="gml:CompositeCurveType" substitutionGroup="gml:_Curve"/>
<!-- =========================================================== -->
<complexType name="CompositeCurveType">
<annotation>
<documentation>A CompositeCurve is defined by a sequence of (orientable) curves such that the each curve in the sequence terminates at the start point of the subsequent curve in the list.</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractCurveType">
<sequence>
<element ref="gml:curveMember" maxOccurs="unbounded">
<annotation>
<documentation>This element references or contains one curve in the composite curve. The curves are contiguous, the collection of curves is ordered.
NOTE: This definition allows for a nested structure, i.e. a CompositeCurve may use, for example, another CompositeCurve as a curve member.</documentation>
</annotation>
</element>
</sequence>
</extension>
</complexContent>
</complexType>
<!-- ============================================================== -->
<complexType name="CompositeCurvePropertyType">
<sequence minOccurs="0">
<element ref="gml:CompositeCurve"/>
</sequence>
<attributeGroup ref="gml:AssociationAttributeGroup"/>
</complexType>
<!-- =========================================================== -->
<element name="CompositeSurface" type="gml:CompositeSurfaceType" substitutionGroup="gml:_Surface"/>
<!-- =========================================================== -->
<complexType name="CompositeSurfaceType">
<annotation>
<documentation>A CompositeSurface is defined by a set of orientable surfaces. A composite surface is geometry type with all the geometric properties of a (primitive) surface. Essentially, a composite surface is a collection of surfaces that join in pairs on common boundary curves and which, when considered as a whole, form a single surface.</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractSurfaceType">
<sequence>
<element ref="gml:surfaceMember" maxOccurs="unbounded">
<annotation>
<documentation>This element references or contains one surface in the composite surface. The surfaces are contiguous.
NOTE: This definition allows for a nested structure, i.e. a CompositeSurface may use, for example, another CompositeSurface as a member.</documentation>
</annotation>
</element>
</sequence>
</extension>
</complexContent>
</complexType>
<!-- ============================================================== -->
<complexType name="CompositeSurfacePropertyType">
<sequence minOccurs="0">
<element ref="gml:CompositeSurface"/>
</sequence>
<attributeGroup ref="gml:AssociationAttributeGroup"/>
</complexType>
<!-- =========================================================== -->
<element name="CompositeSolid" type="gml:CompositeSolidType" substitutionGroup="gml:_Solid"/>
<!-- =========================================================== -->
<complexType name="CompositeSolidType">
<annotation>
<documentation>A composite solid is a geometry type with all the geometric properties of a (primitive) solid.
Essentially, a composite solid is a collection of solids that join in pairs on common boundary surfaces and which, when considered as a whole, form a single solid.</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractSolidType">
<sequence>
<element ref="gml:solidMember" maxOccurs="unbounded">
<annotation>
<appinfo>
<sch:pattern name="Check either href or content not both">
<sch:rule context="gml:solidMember">
<sch:extends rule="hrefOrContent"/>
</sch:rule>
</sch:pattern>
</appinfo>
<documentation>This element references or contains one solid in the composite solid. The solids are contiguous.
NOTE: This definition allows for a nested structure, i.e. a CompositeSolid may use, for example, another CompositeSolid as a member.</documentation>
</annotation>
</element>
</sequence>
</extension>
</complexContent>
</complexType>
<!-- ============================================================== -->
<complexType name="CompositeSolidPropertyType">
<sequence minOccurs="0">
<element ref="gml:CompositeSolid"/>
</sequence>
<attributeGroup ref="gml:AssociationAttributeGroup"/>
</complexType>
<!-- =========================================================== -->
<!-- complex/composite geometry objects -->
<!-- =========================================================== -->
<element name="GeometricComplex" type="gml:GeometricComplexType" substitutionGroup="gml:_Geometry"/>
<!-- =========================================================== -->
<complexType name="GeometricComplexType">
<annotation>
<documentation>A geometric complex.</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractGeometryType">
<sequence>
<element name="element" type="gml:GeometricPrimitivePropertyType" maxOccurs="unbounded"/>
</sequence>
</extension>
</complexContent>
</complexType>
<!-- =========================================================== -->
<complexType name="GeometricComplexPropertyType">
<annotation>
<documentation>A property that has a geometric complex as its value domain can either be an appropriate geometry element encapsulated in an element of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located elsewhere in the same document). Either the reference or the contained element must be given, but neither both nor none.
NOTE: The allowed geometry elements contained in such a property (or referenced by it) have to be modelled by an XML Schema choice element since the composites inherit both from geometric complex *and* geometric primitive and are already part of the _GeometricPrimitive substitution group.</documentation>
</annotation>
<sequence minOccurs="0">
<choice>
<element ref="gml:GeometricComplex"/>
<element ref="gml:CompositeCurve"/>
<element ref="gml:CompositeSurface"/>
<element ref="gml:CompositeSolid"/>
</choice>
</sequence>
<attributeGroup ref="gml:AssociationAttributeGroup">
<annotation>
<documentation>This attribute group includes the XLink attributes (see xlinks.xsd). XLink is used in GML to reference remote resources (including those elsewhere in the same document). A simple link element can be constructed by including a specific set of XLink attributes. The XML Linking Language (XLink) is currently a Proposed Recommendation of the World Wide Web Consortium. XLink allows elements to be inserted into XML documents so as to create sophisticated links between resources; such links can be used to reference remote properties.
A simple link element can be used to implement pointer functionality, and this functionality has been built into various GML 3 elements by including the gml:AssociationAttributeGroup.</documentation>
</annotation>
</attributeGroup>
</complexType>
<!-- =========================================================== -->
</schema>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSPY v5 rel. 2 U (http://www.xmlspy.com) by Clemens Portele (interactive instruments) -->
<schema targetNamespace="http://www.opengis.net/gml" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:sch="http://www.ascc.net/xml/schematron" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" elementFormDefault="qualified"
version="3.1.1">
<annotation>
<appinfo source="urn:opengis:specification:gml:schema-xsd:geometryPrimitives:3.1.1">geometryPrimitives.xsd</appinfo>
<documentation>Copyright (c) 2001-2005 OGC, All Rights Reserved.
For conditions, see OGC Software Notice http://www.opengeospatial.org/about/?page=ipr</documentation>
</annotation>
<!-- =========================================================== -->
<include schemaLocation="geometryBasic2d.xsd"/>
<!-- =========================================================== -->
<element name="Curve" type="gml:CurveType" substitutionGroup="gml:_Curve"/>
<!-- =========================================================== -->
<complexType name="CurveType">
<annotation>
<documentation>Curve is a 1-dimensional primitive. Curves are continuous, connected, and have a measurable length in terms of the coordinate system.
A curve is composed of one or more curve segments. Each curve segment within a curve may be defined using a different interpolation method. The curve segments are connected to one another, with the end point of each segment except the last being the start point of the next segment in the segment list.
The orientation of the curve is positive.</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractCurveType">
<sequence>
<element ref="gml:segments">
<annotation>
<documentation>This element encapsulates the segments of the curve.</documentation>
</annotation>
</element>
</sequence>
</extension>
</complexContent>
</complexType>
<!-- =========================================================== -->
<element name="baseCurve" type="gml:CurvePropertyType">
<annotation>
<appinfo>
<sch:pattern name="Check either href or content not both">
<sch:rule context="gml:baseCurve">
<sch:extends rule="hrefOrContent"/>
</sch:rule>
</sch:pattern>
</appinfo>
<documentation>This property element either references a curve via the XLink-attributes or contains the curve element. A curve element is any element which is substitutable for "_Curve".</documentation>
</annotation>
</element>
<!-- =========================================================== -->
<element name="OrientableCurve" type="gml:OrientableCurveType" substitutionGroup="gml:_Curve"/>
<!-- =========================================================== -->
<complexType name="OrientableCurveType">
<annotation>
<documentation>OrientableCurve consists of a curve and an orientation. If the orientation is "+", then the OrientableCurve is identical to the baseCurve. If the orientation is "-", then the OrientableCurve is related to another _Curve with a parameterization that reverses the sense of the curve traversal.</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractCurveType">
<sequence>
<element ref="gml:baseCurve">
<annotation>
<documentation>References or contains the base curve (positive orientation).
NOTE: This definition allows for a nested structure, i.e. an OrientableCurve may use another OrientableCurve as its base curve.</documentation>
</annotation>
</element>
</sequence>
<attribute name="orientation" type="gml:SignType" default="+">
<annotation>
<documentation>If the orientation is "+", then the OrientableCurve is identical to the baseCurve. If the orientation is "-", then the OrientableCurve is related to another _Curve with a parameterization that reverses the sense of the curve traversal. "+" is the default value.</documentation>
</annotation>
</attribute>
</extension>
</complexContent>
</complexType>
<!-- =========================================================== -->
<!-- curve segments (1-dimensional) -->
<!-- =========================================================== -->
<!-- =========================================================== -->
<element name="_CurveSegment" type="gml:AbstractCurveSegmentType" abstract="true">
<annotation>
<documentation>The "_CurveSegment" element is the abstract head of the substituition group for all curve segment elements, i.e. continuous segments of the same interpolation mechanism.</documentation>
</annotation>
</element>
<!-- =========================================================== -->
<complexType name="AbstractCurveSegmentType" abstract="true">
<annotation>
<documentation>Curve segment defines a homogeneous segment of a curve.</documentation>
</annotation>
<sequence/>
<attribute name="numDerivativesAtStart" type="integer" use="optional" default="0">
<annotation>
<documentation>The attribute "numDerivativesAtStart" specifies the type of continuity between this curve segment and its predecessor. If this is the first curve segment in the curve, one of these values, as appropriate, is ignored. The default value of "0" means simple continuity, which is a mandatory minimum level of continuity. This level is referred to as "C 0 " in mathematical texts. A value of 1 means that the function and its first derivative are continuous at the appropriate end point: "C 1 " continuity. A value of "n" for any integer means the function and its first n derivatives are continuous: "C n " continuity.
NOTE: Use of these values is only appropriate when the basic curve definition is an underdetermined system. For example, line string segments cannot support continuity above C 0 , since there is no spare control parameter to adjust the incoming angle at the end points of the segment. Spline functions on the other hand often have extra degrees of freedom on end segments that allow them to adjust the values of the derivatives to support C 1 or higher continuity.</documentation>
</annotation>
</attribute>
<attribute name="numDerivativesAtEnd" type="integer" use="optional" default="0">
<annotation>
<documentation>The attribute "numDerivativesAtEnd" specifies the type of continuity between this curve segment and its successor. If this is the last curve segment in the curve, one of these values, as appropriate, is ignored. The default value of "0" means simple continuity, which is a mandatory minimum level of continuity. This level is referred to as "C 0 " in mathematical texts. A value of 1 means that the function and its first derivative are continuous at the appropriate end point: "C 1 " continuity. A value of "n" for any integer means the function and its first n derivatives are continuous: "C n " continuity.
NOTE: Use of these values is only appropriate when the basic curve definition is an underdetermined system. For example, line string segments cannot support continuity above C 0 , since there is no spare control parameter to adjust the incoming angle at the end points of the segment. Spline functions on the other hand often have extra degrees of freedom on end segments that allow them to adjust the values of the derivatives to support C 1 or higher continuity.</documentation>
</annotation>
</attribute>
<attribute name="numDerivativeInterior" type="integer" use="optional" default="0">
<annotation>
<documentation>The attribute "numDerivativesInterior" specifies the type of continuity that is guaranteed interior to the curve. The default value of "0" means simple continuity, which is a mandatory minimum level of continuity. This level is referred to as "C 0 " in mathematical texts. A value of 1 means that the function and its first derivative are continuous at the appropriate end point: "C 1 " continuity. A value of "n" for any integer means the function and its first n derivatives are continuous: "C n " continuity.
NOTE: Use of these values is only appropriate when the basic curve definition is an underdetermined system. For example, line string segments cannot support continuity above C 0 , since there is no spare control parameter to adjust the incoming angle at the end points of the segment. Spline functions on the other hand often have extra degrees of freedom on end segments that allow them to adjust the values of the derivatives to support C 1 or higher continuity.</documentation>
</annotation>
</attribute>
</complexType>
<!-- =========================================================== -->
<element name="segments" type="gml:CurveSegmentArrayPropertyType">
<annotation>
<documentation>This property element contains a list of curve segments. The order of the elements is significant and shall be preserved when processing the array.</documentation>
</annotation>
</element>
<!-- =========================================================== -->
<complexType name="CurveSegmentArrayPropertyType">
<annotation>
<documentation>A container for an array of curve segments.</documentation>
</annotation>
<sequence>
<element ref="gml:_CurveSegment" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</complexType>
<!-- =========== global element in "_CurveSegment" substitution group ================ -->
<element name="LineStringSegment" type="gml:LineStringSegmentType" substitutionGroup="gml:_CurveSegment"/>
<!-- =========================================================== -->
<complexType name="LineStringSegmentType">
<annotation>
<documentation>A LineStringSegment is a curve segment that is defined by two or more coordinate tuples, with linear interpolation between them.
Note: LineStringSegment implements GM_LineString of ISO 19107.</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractCurveSegmentType">
<sequence>
<choice>
<annotation>
<documentation>GML supports two different ways to specify the control points of a curve segment.
1. A sequence of "pos" (DirectPositionType) or "pointProperty" (PointPropertyType) elements. "pos" elements are control points that are only part of this curve segment, "pointProperty" elements contain a point that may be referenced from other geometry elements or reference another point defined outside of this curve segment (reuse of existing points).
2. The "posList" element allows for a compact way to specifiy the coordinates of the control points, if all control points are in the same coordinate reference systems and belong to this curve segment only. The number of direct positions in the list must be at least two.</documentation>
</annotation>
<choice minOccurs="2" maxOccurs="unbounded">
<element ref="gml:pos"/>
<element ref="gml:pointProperty"/>
<element ref="gml:pointRep">
<annotation>
<documentation>Deprecated with GML version 3.1.0. Use "pointProperty" instead. Included for backwards compatibility with GML 3.0.0.</documentation>
</annotation>
</element>
</choice>
<element ref="gml:posList"/>
<element ref="gml:coordinates">
<annotation>
<documentation>Deprecated with GML version 3.1.0. Use "posList" instead.</documentation>
</annotation>
</element>
</choice>
</sequence>
<attribute name="interpolation" type="gml:CurveInterpolationType" fixed="linear">
<annotation>
<documentation>The attribute "interpolation" specifies the curve interpolation mechanism used for this segment. This mechanism
uses the control points and control parameters to determine the position of this curve segment. For a LineStringSegment the interpolation is fixed as "linear".</documentation>
</annotation>
</attribute>
</extension>
</complexContent>
</complexType>
<!-- =========== global element in "_CurveSegment" substitution group ================ -->
<element name="ArcString" type="gml:ArcStringType" substitutionGroup="gml:_CurveSegment"/>
<!-- =========================================================== -->
<complexType name="ArcStringType">
<annotation>
<documentation>An ArcString is a curve segment that uses three-point circular arc interpolation.</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractCurveSegmentType">
<sequence>
<choice>
<annotation>
<documentation>GML supports two different ways to specify the control points of a curve segment.
1. A sequence of "pos" (DirectPositionType) or "pointProperty" (PointPropertyType) elements. "pos" elements are control points that are only part of this curve segment, "pointProperty" elements contain a point that may be referenced from other geometry elements or reference another point defined outside of this curve segment (reuse of existing points).
2. The "posList" element allows for a compact way to specifiy the coordinates of the control points, if all control points are in the same coordinate reference systems and belong to this curve segment only. The number of direct positions in the list must be at least three.</documentation>
</annotation>
<choice minOccurs="3" maxOccurs="unbounded">
<element ref="gml:pos"/>
<element ref="gml:pointProperty"/>
<element ref="gml:pointRep">
<annotation>
<documentation>Deprecated with GML version 3.1.0. Use "pointProperty" instead. Included for backwards compatibility with GML 3.0.0.</documentation>
</annotation>
</element>
</choice>
<element ref="gml:posList"/>
<element ref="gml:coordinates">
<annotation>
<documentation>Deprecated with GML version 3.1.0. Use "posList" instead.</documentation>
</annotation>
</element>
</choice>
</sequence>
<attribute name="interpolation" type="gml:CurveInterpolationType" fixed="circularArc3Points">
<annotation>
<documentation>The attribute "interpolation" specifies the curve interpolation mechanism used for this segment. This mechanism
uses the control points and control parameters to determine the position of this curve segment. For an ArcString the interpolation is fixed as "circularArc3Points".</documentation>
</annotation>
</attribute>
<attribute name="numArc" type="integer" use="optional">
<annotation>
<documentation>The number of arcs in the arc string can be explicitly stated in this attribute. The number of control points in the arc string must be 2 * numArc + 1.</documentation>
</annotation>
</attribute>
</extension>
</complexContent>
</complexType>
<!-- =========== global element in "_CurveSegment" substitution group ================ -->
<element name="Arc" type="gml:ArcType" substitutionGroup="gml:ArcString"/>
<!-- =========================================================== -->
<complexType name="ArcType">
<annotation>
<documentation>An Arc is an arc string with only one arc unit, i.e. three control points.</documentation>
</annotation>
<complexContent>
<restriction base="gml:ArcStringType">
<sequence>
<choice>
<annotation>
<documentation>GML supports two different ways to specify the control points of a curve segment.
1. A sequence of "pos" (DirectPositionType) or "pointProperty" (PointPropertyType) elements. "pos" elements are control points that are only part of this curve segment, "pointProperty" elements contain a point that may be referenced from other geometry elements or reference another point defined outside of this curve segment (reuse of existing points).
2. The "posList" element allows for a compact way to specifiy the coordinates of the control points, if all control points are in the same coordinate reference systems and belong to this curve segment only. The number of direct positions in the list must be three.</documentation>
</annotation>
<choice minOccurs="3" maxOccurs="3">
<element ref="gml:pos"/>
<element ref="gml:pointProperty"/>
<element ref="gml:pointRep">
<annotation>
<documentation>Deprecated with GML version 3.1.0. Use "pointProperty" instead. Included for backwards compatibility with GML 3.0.0.</documentation>
</annotation>
</element>
</choice>
<element ref="gml:posList"/>
<element ref="gml:coordinates">
<annotation>
<documentation>Deprecated with GML version 3.1.0. Use "posList" instead.</documentation>
</annotation>
</element>
</choice>
</sequence>
<attribute name="numArc" type="integer" use="optional" fixed="1">
<annotation>
<documentation>An arc is an arc string consiting of a single arc, the attribute is fixed to "1".</documentation>
</annotation>
</attribute>
</restriction>
</complexContent>
</complexType>
<!-- =========== global element in "_CurveSegment" substitution group ================ -->
<element name="Circle" type="gml:CircleType" substitutionGroup="gml:Arc"/>
<!-- =========================================================== -->
<complexType name="CircleType">
<annotation>
<documentation>A Circle is an arc whose ends coincide to form a simple closed loop. The "start" and "end" bearing are equal and shall be the bearing for the first controlPoint listed. The three control points must be distinct non-co-linear points for the Circle to be unambiguously defined. The arc is simply extended past the third control point until the first control point is encountered.</documentation>
</annotation>
<complexContent>
<extension base="gml:ArcType"/>
</complexContent>
</complexType>
<!-- =========== global element in "_CurveSegment" substitution group ================ -->
<element name="ArcStringByBulge" type="gml:ArcStringByBulgeType" substitutionGroup="gml:_CurveSegment"/>
<!-- =========================================================== -->
<complexType name="ArcStringByBulgeType">
<annotation>
<documentation>This variant of the arc computes the mid points of the arcs instead of storing the coordinates directly. The control point sequence consists of the start and end points of each arc plus the bulge.</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractCurveSegmentType">
<sequence>
<choice>
<annotation>
<documentation>GML supports two different ways to specify the control points of a curve segment.
1. A sequence of "pos" (DirectPositionType) or "pointProperty" (PointPropertyType) elements. "pos" elements are control points that are only part of this curve segment, "pointProperty" elements contain a point that may be referenced from other geometry elements or reference another point defined outside of this curve segment (reuse of existing points).
2. The "posList" element allows for a compact way to specifiy the coordinates of the control points, if all control points are in the same coordinate reference systems and belong to this curve segment only. The number of direct positions in the list must be at least two.</documentation>
</annotation>
<choice minOccurs="2" maxOccurs="unbounded">
<element ref="gml:pos"/>
<element ref="gml:pointProperty"/>
<element ref="gml:pointRep">
<annotation>
<documentation>Deprecated with GML version 3.1.0. Use "pointProperty" instead. Included for backwards compatibility with GML 3.0.0.</documentation>
</annotation>
</element>
</choice>
<element ref="gml:posList"/>
<element ref="gml:coordinates">
<annotation>
<documentation>Deprecated with GML version 3.1.0. Use "posList" instead.</documentation>
</annotation>
</element>
</choice>
<element name="bulge" type="double" maxOccurs="unbounded">
<annotation>
<documentation>The bulge controls the offset of each arc's midpoint. The "bulge" is the real number multiplier for the normal that determines the offset direction of the midpoint of each arc. The length of the bulge sequence is exactly 1 less than the length of the control point array, since a bulge is needed for each pair of adjacent points in the control point array. The bulge is not given by a distance, since it is simply a multiplier for the normal.
The midpoint of the resulting arc is given by: midPoint = ((startPoint + endPoint)/2.0) + bulge*normal</documentation>
</annotation>
</element>
<element name="normal" type="gml:VectorType" maxOccurs="unbounded">
<annotation>
<documentation>The attribute "normal" is a vector normal (perpendicular) to the chord of the arc, the line joining the first and last
point of the arc. In a 2D coordinate system, there are only two possible directions for the normal, and it is often given as a signed real, indicating its length, with a positive sign indicating a left turn angle from the chord line, and a negative sign indicating a right turn from the chord. In 3D, the normal determines the plane of the arc, along with the start and endPoint of the arc.
The normal is usually a unit vector, but this is not absolutely necessary. If the normal is a zero vector, the geometric object becomes equivalent to the straight line between the two end points. The length of the normal sequence is exactly the same as for the bulge sequence, 1 less than the control point sequence length.</documentation>
</annotation>
</element>
</sequence>
<attribute name="interpolation" type="gml:CurveInterpolationType" fixed="circularArc2PointWithBulge">
<annotation>
<documentation>The attribute "interpolation" specifies the curve interpolation mechanism used for this segment. This mechanism
uses the control points and control parameters to determine the position of this curve segment. For an ArcStringByBulge the interpolation is fixed as "circularArc2PointWithBulge".</documentation>
</annotation>
</attribute>
<attribute name="numArc" type="integer" use="optional">
<annotation>
<documentation>The number of arcs in the arc string can be explicitly stated in this attribute. The number of control points in the arc string must be numArc + 1.</documentation>
</annotation>
</attribute>
</extension>
</complexContent>
</complexType>
<!-- =========== global element in "_CurveSegment" substitution group ================ -->
<element name="ArcByBulge" type="gml:ArcByBulgeType" substitutionGroup="gml:ArcStringByBulge"/>
<!-- =========================================================== -->
<complexType name="ArcByBulgeType">
<annotation>
<documentation>An ArcByBulge is an arc string with only one arc unit, i.e. two control points and one bulge.</documentation>
</annotation>
<complexContent>
<restriction base="gml:ArcStringByBulgeType">
<sequence>
<choice>
<annotation>
<documentation>GML supports two different ways to specify the control points of a curve segment.
1. A sequence of "pos" (DirectPositionType) or "pointProperty" (PointPropertyType) elements. "pos" elements are control points that are only part of this curve segment, "pointProperty" elements contain a point that may be referenced from other geometry elements or reference another point defined outside of this curve segment (reuse of existing points).
2. The "posList" element allows for a compact way to specifiy the coordinates of the control points, if all control points are in the same coordinate reference systems and belong to this curve segment only. The number of direct positions in the list must be two.</documentation>
</annotation>
<choice minOccurs="2" maxOccurs="2">
<element ref="gml:pos"/>
<element ref="gml:pointProperty"/>
<element ref="gml:pointRep">
<annotation>
<documentation>Deprecated with GML version 3.1.0. Use "pointProperty" instead. Included for backwards compatibility with GML 3.0.0.</documentation>
</annotation>
</element>
</choice>
<element ref="gml:posList"/>
<element ref="gml:coordinates">
<annotation>
<documentation>Deprecated with GML version 3.1.0. Use "posList" instead.</documentation>
</annotation>
</element>
</choice>
<element name="bulge" type="double">
<annotation>
<documentation>The bulge controls the offset of each arc's midpoint. The "bulge" is the real number multiplier for the normal that determines the offset direction of the midpoint of each arc. The length of the bulge sequence is exactly 1 less than the length of the control point array, since a bulge is needed for each pair of adjacent points in the control point array. The bulge is not given by a distance, since it is simply a multiplier for the normal.
The midpoint of the resulting arc is given by: midPoint = ((startPoint + endPoint)/2.0) + bulge*normal</documentation>
</annotation>
</element>
<element name="normal" type="gml:VectorType">
<annotation>
<documentation>The attribute "normal" is a vector normal (perpendicular) to the chord of the arc, the line joining the first and last
point of the arc. In a 2D coordinate system, there are only two possible directions for the normal, and it is often given as a signed real, indicating its length, with a positive sign indicating a left turn angle from the chord line, and a negative sign indicating a right turn from the chord. In 3D, the normal determines the plane of the arc, along with the start and endPoint of the arc.
The normal is usually a unit vector, but this is not absolutely necessary. If the normal is a zero vector, the geometric object becomes equivalent to the straight line between the two end points. The length of the normal sequence is exactly the same as for the bulge sequence, 1 less than the control point sequence length.</documentation>
</annotation>
</element>
</sequence>
<attribute name="numArc" type="integer" use="optional" fixed="1">
<annotation>
<documentation>An arc is an arc string consiting of a single arc, the attribute is fixed to "1".</documentation>
</annotation>
</attribute>
</restriction>
</complexContent>
</complexType>
<!-- =========== global element in "_CurveSegment" substitution group ================ -->
<element name="ArcByCenterPoint" type="gml:ArcByCenterPointType" substitutionGroup="gml:_CurveSegment"/>
<!-- =========================================================== -->
<complexType name="ArcByCenterPointType">
<annotation>
<documentation>This variant of the arc requires that the points on the arc have to be computed instead of storing the coordinates directly. The control point is the center point of the arc plus the radius and the bearing at start and end. This represenation can be used only in 2D.</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractCurveSegmentType">
<sequence>
<choice>
<annotation>
<documentation>GML supports two different ways to specify the control points of a curve segment.
1. A "pos" (DirectPositionType) or "pointProperty" (PointPropertyType) element. The "pos" element contains a center point that is only part of this curve segment, a "pointProperty" element contains a point that may be referenced from other geometry elements or reference another point defined outside of this curve segment (reuse of existing points).
2. The "posList" element can be used to specifiy the coordinates of the center point, too. The number of direct positions in the list must be one.</documentation>
</annotation>
<choice>
<element ref="gml:pos"/>
<element ref="gml:pointProperty"/>
<element ref="gml:pointRep">
<annotation>
<documentation>Deprecated with GML version 3.1.0. Use "pointProperty" instead. Included for backwards compatibility with GML 3.0.0.</documentation>
</annotation>
</element>
</choice>
<element ref="gml:posList"/>
<element ref="gml:coordinates">
<annotation>
<documentation>Deprecated with GML version 3.1.0. Use "posList" instead.</documentation>
</annotation>
</element>
</choice>
<element name="radius" type="gml:LengthType">
<annotation>
<documentation>The radius of the arc.</documentation>
</annotation>
</element>
<element name="startAngle" type="gml:AngleType" minOccurs="0">
<annotation>
<documentation>The bearing of the arc at the start.</documentation>
</annotation>
</element>
<element name="endAngle" type="gml:AngleType" minOccurs="0">
<annotation>
<documentation>The bearing of the arc at the end.</documentation>
</annotation>
</element>
</sequence>
<attribute name="interpolation" type="gml:CurveInterpolationType" fixed="circularArcCenterPointWithRadius">
<annotation>
<documentation>The attribute "interpolation" specifies the curve interpolation mechanism used for this segment. This mechanism
uses the control points and control parameters to determine the position of this curve segment. For an ArcByCenterPoint the interpolation is fixed as "circularArcCenterPointWithRadius".</documentation>
</annotation>
</attribute>
<attribute name="numArc" type="integer" use="required" fixed="1">
<annotation>
<documentation>Since this type describes always a single arc, the attribute is fixed to "1".</documentation>
</annotation>
</attribute>
</extension>
</complexContent>
</complexType>
<!-- =========== global element in "_CurveSegment" substitution group ================ -->
<element name="CircleByCenterPoint" type="gml:CircleByCenterPointType" substitutionGroup="gml:ArcByCenterPoint"/>
<!-- =========================================================== -->
<complexType name="CircleByCenterPointType">
<annotation>
<documentation>A CircleByCenterPoint is an ArcByCenterPoint with identical start and end angle to form a full circle. Again, this represenation can be used only in 2D.</documentation>
</annotation>
<complexContent>
<extension base="gml:ArcByCenterPointType"/>
</complexContent>
</complexType>
<!-- ================================================================================ -->
<element name="OffsetCurve" type="gml:OffsetCurveType" substitutionGroup="gml:_CurveSegment"/>
<!-- ================================================================================ -->
<complexType name="OffsetCurveType">
<annotation>
<documentation>An offset curve is a curve at a constant
distance from the basis curve. They can be useful as a cheap
and simple alternative to constructing curves that are offsets
by definition.</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractCurveSegmentType">
<sequence>
<element name="offsetBase" type="gml:CurvePropertyType">
<annotation>
<documentation>offsetBase is a reference to thecurve from which this
curve is define as an offset.</documentation>
</annotation>
</element>
<element name="distance" type="gml:LengthType">
<annotation>
<documentation>distance is the distance at which the
offset curve is generated from the basis curve. In 2D systems, positive distances
are to be to the left of the basis curve, and the negative distances are to be to the
right of the basis curve.</documentation>
</annotation>
</element>
<element name="refDirection" type="gml:VectorType" minOccurs="0">
<annotation>
<documentation>refDistance is used to define the vector
direction of the offset curve from the basis curve. It can
be omitted in the 2D case, where the distance can be
positive or negative. In that case, distance defines left
side (positive distance) or right side (negative distance)
with respect to the tangent to the basis curve.
In 3D the basis curve shall have a well defined tangent
direction for every point. The offset curve at any point
in 3D, the basis curve shall have a well-defined tangent
direction for every point. The offset curve at any point
(parameter) on the basis curve c is in the direction
- - - -
s = v x t where v = c.refDirection()
and
-
t = c.tangent()
-
For the offset direction to be well-defined, v shall not
on any point of the curve be in the same, or opposite,
direction as
-
t.
The default value of the refDirection shall be the local
co-ordinate axis vector for elevation, which indicates up for
the curve in a geographic sense.
NOTE! If the refDirection is the positive tangent to the
local elevation axis ("points upward"), then the offset
vector points to the left of the curve when viewed from
above.</documentation>
</annotation>
</element>
</sequence>
</extension>
</complexContent>
</complexType>
<!-- ====================================================== -->
<element name="AffinePlacement" type="gml:AffinePlacementType"/>
<!-- ====================================================== -->
<complexType name="AffinePlacementType">
<annotation>
<documentation>A placement takes a standard geometric
construction and places it in geographic space. It defines a
transformation from a constructive parameter space to the
co-ordinate space of the co-ordinate reference system being used.
Parameter spaces in formulae in this International Standard are
given as (u, v) in 2D and(u, v, w) in 3D. Co-ordinate reference
systems positions are given in formulae, in this International
Standard, by either (x, y) in 2D, or (x, y, z) in 3D.
Affine placements are defined by linear transformations from
parameter space to the target co-ordiante space. 2-dimensional
Cartesian parameter space,(u,v) transforms into 3-dimensional co-
ordinate reference systems,(x,y,z) by using an affine
transformation,(u,v)->(x,y,z) which is defined :
x ux vx x0
u
y = uy vy + y0
v
x uz vz z0
Then, given this equation, the location element of the
AffinePlacement is the direct position (x0, y0, z0), which is the
target position of the origin in (u, v). The two reference
directions (ux, uy, uz) and (vx, vy, vz) are the target
directions of the unit vectors at the origin in (u, v).</documentation>
</annotation>
<sequence>
<element name="location" type="gml:DirectPositionType">
<annotation>
<documentation>The location property gives
the target of the parameter space origin. This is the vector
(x0, y0, z0) in the formulae above.</documentation>
</annotation>
</element>
<element name="refDirection" type="gml:VectorType" maxOccurs="unbounded">
<annotation>
<documentation>The attribute refDirection gives the
target directions for the co-ordinate basis vectors of the
parameter space. These are the columns of the matrix in the
formulae given above. The number of directions given shall be
inDimension. The dimension of the directions shall be
outDimension.</documentation>
</annotation>
</element>
<element name="inDimension" type="positiveInteger">
<annotation>
<documentation>Dimension of the constructive parameter
space.</documentation>
</annotation>
</element>
<element name="outDimension" type="positiveInteger">
<annotation>
<documentation>Dimension of the co-ordinate space.</documentation>
</annotation>
</element>
</sequence>
</complexType>
<!-- = global element in "_CurveSegment" substitution group ========================== -->
<element name="Clothoid" type="gml:ClothoidType" substitutionGroup="gml:_CurveSegment"/>
<!-- ======================================================================= -->
<complexType name="ClothoidType">
<annotation>
<documentation>A clothoid, or Cornu's spiral, is plane
curve whose curvature is a fixed function of its length.
In suitably chosen co-ordinates it is given by Fresnel's
integrals.
x(t) = 0-integral-t cos(AT*T/2)dT
y(t) = 0-integral-t sin(AT*T/2)dT
This geometry is mainly used as a transition curve between
curves of type straight line to circular arc or circular arc
to circular arc. With this curve type it is possible to
achieve a C2-continous transition between the above mentioned
curve types. One formula for the Clothoid is A*A = R*t where
A is constant, R is the varying radius of curvature along the
the curve and t is the length along and given in the Fresnel
integrals.</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractCurveSegmentType">
<sequence>
<element name="refLocation">
<complexType>
<sequence>
<element ref="gml:AffinePlacement">
<annotation>
<documentation>The "refLocation" is an affine mapping
that places the curve defined by the Fresnel Integrals
into the co-ordinate reference system of this object.</documentation>
</annotation>
</element>
</sequence>
</complexType>
</element>
<element name="scaleFactor" type="decimal">
<annotation>
<documentation>The element gives the value for the
constant in the Fresnel's integrals.</documentation>
</annotation>
</element>
<element name="startParameter" type="double">
<annotation>
<documentation>The startParameter is the arc length
distance from the inflection point that will be the start
point for this curve segment. This shall be lower limit
used in the Fresnel integral and is the value of the
constructive parameter of this curve segment at its start
point. The startParameter can either be positive or
negative.
NOTE! If 0.0 (zero), lies between the startParameter and
the endParameter of the clothoid, then the curve goes
through the clothoid's inflection point, and the direction
of its radius of curvature, given by the second
derivative vector, changes sides with respect to the
tangent vector. The term length distance for the</documentation>
</annotation>
</element>
<element name="endParameter" type="double">
<annotation>
<documentation>The endParameter is the arc length
distance from the inflection point that will be the end
point for this curve segment. This shall be upper limit
used in the Fresnel integral and is the value of the
constructive parameter of this curve segment at its
start point. The startParameter can either be positive
or negative.</documentation>
</annotation>
</element>
</sequence>
</extension>
</complexContent>
</complexType>
<!-- = global element in "_CurveSegment" substitution group = -->
<element name="GeodesicString" type="gml:GeodesicStringType" substitutionGroup="gml:_CurveSegment"/>
<!-- ======================================================== -->
<complexType name="GeodesicStringType">
<annotation>
<documentation>A GeodesicString consists of sequence of
geodesic segments. The type essentially combines a sequence of
Geodesic into a single object.
The GeodesicString is computed from two or more positions and an
interpolation using geodesics defined from the geoid (or
ellipsoid) of the co-ordinate reference system being used.</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractCurveSegmentType">
<choice>
<element ref="gml:posList"/>
<group ref="gml:geometricPositionGroup" minOccurs="2" maxOccurs="unbounded"/>
</choice>
<attribute name="interpolation" type="gml:CurveInterpolationType" fixed="geodesic">
<annotation>
<documentation>The attribute "interpolation" specifies the
curve interpolation mechanism used for this segment. This
mechanism uses the control points and control parameters to
determine the position of this curve segment. For an
GeodesicString the interpolation is fixed as "geodesic".</documentation>
</annotation>
</attribute>
</extension>
</complexContent>
</complexType>
<!-- = global element in "_CurveSegment" substitution group = -->
<element name="Geodesic" type="gml:GeodesicType" substitutionGroup="gml:GeodesicString"/>
<!-- ======================================================== -->
<complexType name="GeodesicType">
<annotation>
<documentation>A Geodesic consists of two distinct
positions joined by a geodesic curve. The control points of
a Geodesic shall lie on the geodesic between its start
point and end points. Between these two points, a geodesic
curve defined from ellipsoid or geoid model used by the
co-ordinate reference systems may be used to interpolate
other positions. Any other point in the controlPoint array
must fall on this geodesic.</documentation>
</annotation>
<complexContent>
<extension base="gml:GeodesicStringType"/>
</complexContent>
</complexType>
<!-- =========== global element in "_CurveSegment" substitution group ================ -->
<element name="CubicSpline" type="gml:CubicSplineType" substitutionGroup="gml:_CurveSegment"/>
<!-- =========================================================== -->
<complexType name="CubicSplineType">
<annotation>
<documentation>Cubic splines are similar to line strings in that they are a sequence of segments each with its own defining function. A cubic spline uses the control points and a set of derivative parameters to define a piecewise 3rd degree polynomial interpolation. Unlike line-strings, the parameterization by arc length is not necessarily still a polynomial.
The function describing the curve must be C2, that is, have a continuous 1st and 2nd derivative at all points, and pass through the controlPoints in the order given. Between the control points, the curve segment is defined by a cubic polynomial. At each control point, the polynomial changes in such a manner that the 1st and 2nd derivative vectors are the same from either side. The control parameters record must contain vectorAtStart, and vectorAtEnd which are the unit tangent vectors at controlPoint[1] and controlPoint[n] where n = controlPoint.count.
Note: only the direction of the vectors is relevant, not their length.</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractCurveSegmentType">
<sequence>
<choice>
<annotation>
<documentation>GML supports two different ways to specify the control points of a curve segment.
1. A sequence of "pos" (DirectPositionType) or "pointProperty" (PointPropertyType) elements. "pos" elements are control points that are only part of this curve segment, "pointProperty" elements contain a point that may be referenced from other geometry elements or reference another point defined outside of this curve segment (reuse of existing points).
2. The "posList" element allows for a compact way to specifiy the coordinates of the control points, if all control points are in the same coordinate reference systems and belong to this curve segment only. The number of direct positions in the list must be at least three.</documentation>
</annotation>
<choice minOccurs="2" maxOccurs="unbounded">
<element ref="gml:pos"/>
<element ref="gml:pointProperty"/>
<element ref="gml:pointRep">
<annotation>
<documentation>Deprecated with GML version 3.1.0. Use "pointProperty" instead. Included for backwards compatibility with GML 3.0.0.</documentation>
</annotation>
</element>
</choice>
<element ref="gml:posList"/>
<element ref="gml:coordinates">
<annotation>
<documentation>Deprecated with GML version 3.1.0. Use "posList" instead.</documentation>
</annotation>
</element>
</choice>
<element name="vectorAtStart" type="gml:VectorType">
<annotation>
<documentation>"vectorAtStart" is the unit tangent vector at the start point of the spline.</documentation>
</annotation>
</element>
<element name="vectorAtEnd" type="gml:VectorType">
<annotation>
<documentation>"vectorAtEnd" is the unit tangent vector at the end point of the spline.</documentation>
</annotation>
</element>
</sequence>
<attribute name="interpolation" type="gml:CurveInterpolationType" fixed="cubicSpline">
<annotation>
<documentation>The attribute "interpolation" specifies the curve interpolation mechanism used for this segment. This mechanism
uses the control points and control parameters to determine the position of this curve segment. For a CubicSpline the interpolation is fixed as "cubicSpline".</documentation>
</annotation>
</attribute>
<attribute name="degree" type="integer" fixed="3">
<annotation>
<documentation>The degree for a cubic spline is "3".</documentation>
</annotation>
</attribute>
</extension>
</complexContent>
</complexType>
<!-- =========================================================== -->
<complexType name="KnotType">
<annotation>
<documentation>A knot is a breakpoint on a piecewise spline curve.</documentation>
</annotation>
<sequence>
<element name="value" type="double">
<annotation>
<documentation>The property "value" is the value of the parameter at the knot of the spline. The sequence of knots shall be a non-decreasing sequence. That is, each knot's value in the sequence shall be equal to or greater than the previous knot's value. The use of equal consecutive knots is normally handled using the multiplicity.</documentation>
</annotation>
</element>
<element name="multiplicity" type="nonNegativeInteger">
<annotation>
<documentation>The property "multiplicity" is the multiplicity of this knot used in the definition of the spline (with the same weight).</documentation>
</annotation>
</element>
<element name="weight" type="double">
<annotation>
<documentation>The property "weight" is the value of the averaging weight used for this knot of the spline.</documentation>
</annotation>
</element>
</sequence>
</complexType>
<!-- =========================================================== -->
<complexType name="KnotPropertyType">
<annotation>
<documentation>Encapsulates a knot to use it in a geometric type.</documentation>
</annotation>
<sequence>
<element name="Knot" type="gml:KnotType"/>
</sequence>
</complexType>
<!-- =========== global element in "_CurveSegment" substitution group ================ -->
<element name="BSpline" type="gml:BSplineType" substitutionGroup="gml:_CurveSegment"/>
<!-- =========================================================== -->
<complexType name="BSplineType">
<annotation>
<documentation>A B-Spline is a piecewise parametric polynomial or rational curve described in terms of control points and basis functions. Knots are breakpoints on the curve that connect its pieces. They are given as a non-decreasing sequence of real numbers. If the weights in the knots are equal then it is a polynomial spline. The degree is the algebraic degree of the basis functions.</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractCurveSegmentType">
<sequence>
<choice>
<annotation>
<documentation>GML supports two different ways to specify the control points of a curve segment.
1. A sequence of "pos" (DirectPositionType) or "pointProperty" (PointPropertyType) elements. "pos" elements are control points that are only part of this curve segment, "pointProperty" elements contain a point that may be referenced from other geometry elements or reference another point defined outside of this curve segment (reuse of existing points).
2. The "posList" element allows for a compact way to specifiy the coordinates of the control points, if all control points are in the same coordinate reference systems and belong to this curve segment only.</documentation>
</annotation>
<choice minOccurs="0" maxOccurs="unbounded">
<element ref="gml:pos"/>
<element ref="gml:pointProperty"/>
<element ref="gml:pointRep">
<annotation>
<documentation>Deprecated with GML version 3.1.0. Use "pointProperty" instead. Included for backwards compatibility with GML 3.0.0.</documentation>
</annotation>
</element>
</choice>
<element ref="gml:posList"/>
<element ref="gml:coordinates">
<annotation>
<documentation>Deprecated with GML version 3.1.0. Use "posList" instead.</documentation>
</annotation>
</element>
</choice>
<element name="degree" type="nonNegativeInteger">
<annotation>
<documentation>The attribute "degree" shall be the degree of the polynomial used for interpolation in this spline.</documentation>
</annotation>
</element>
<element name="knot" type="gml:KnotPropertyType" minOccurs="2" maxOccurs="unbounded">
<annotation>
<documentation>The property "knot" shall be the sequence of distinct knots used to define the spline basis functions.</documentation>
</annotation>
</element>
</sequence>
<attribute name="interpolation" type="gml:CurveInterpolationType" default="polynomialSpline">
<annotation>
<documentation>The attribute "interpolation" specifies the curve interpolation mechanism used for this segment. This mechanism
uses the control points and control parameters to determine the position of this curve segment. For a BSpline the interpolation can be either "polynomialSpline" or "rationalSpline", default is "polynomialSpline".</documentation>
</annotation>
</attribute>
<attribute name="isPolynomial" type="boolean" use="optional">
<annotation>
<documentation>The attribute isPolynomial is set to true if this is a polynomial spline.</documentation>
</annotation>
</attribute>
<attribute name="knotType" type="gml:KnotTypesType" use="optional">
<annotation>
<documentation>The attribute "knotType" gives the type of knot distribution used in defining this spline. This is for information only
and is set according to the different construction-functions.</documentation>
</annotation>
</attribute>
</extension>
</complexContent>
</complexType>
<!-- =========== global element in "_CurveSegment" substitution group ================ -->
<element name="Bezier" type="gml:BezierType" substitutionGroup="gml:BSpline"/>
<!-- =========================================================== -->
<complexType name="BezierType">
<annotation>
<documentation>Bezier curves are polynomial splines that use Bezier or Bernstein polynomials for interpolation purposes. It is a special case of the B-Spline curve with two knots.</documentation>
</annotation>
<complexContent>
<restriction base="gml:BSplineType">
<sequence>
<choice>
<annotation>
<documentation>GML supports two different ways to specify the control points of a curve segment.
1. A sequence of "pos" (DirectPositionType) or "pointProperty" (PointPropertyType) elements. "pos" elements are control points that are only part of this curve segment, "pointProperty" elements contain a point that may be referenced from other geometry elements or reference another point defined outside of this curve segment (reuse of existing points).
2. The "posList" element allows for a compact way to specifiy the coordinates of the control points, if all control points are in the same coordinate reference systems and belong to this curve segment only.</documentation>
</annotation>
<choice minOccurs="0" maxOccurs="unbounded">
<element ref="gml:pos"/>
<element ref="gml:pointProperty"/>
<element ref="gml:pointRep">
<annotation>
<documentation>Deprecated with GML version 3.1.0. Use "pointProperty" instead. Included for backwards compatibility with GML 3.0.0.</documentation>
</annotation>
</element>
</choice>
<element ref="gml:posList"/>
<element ref="gml:coordinates">
<annotation>
<documentation>Deprecated with GML version 3.1.0. Use "posList" instead.</documentation>
</annotation>
</element>
</choice>
<element name="degree" type="nonNegativeInteger">
<annotation>
<documentation>The attribute "degree" shall be the degree of the polynomial used for interpolation in this spline.</documentation>
</annotation>
</element>
<element name="knot" type="gml:KnotPropertyType" minOccurs="2" maxOccurs="2">
<annotation>
<documentation>The property "knot" shall be the sequence of distinct knots used to define the spline basis functions.</documentation>
</annotation>
</element>
</sequence>
<attribute name="interpolation" type="gml:CurveInterpolationType" fixed="polynomialSpline">
<annotation>
<documentation>The attribute "interpolation" specifies the curve interpolation mechanism used for this segment. This mechanism
uses the control points and control parameters to determine the position of this curve segment. For a Bezier the interpolation is fixed as "polynomialSpline".</documentation>
</annotation>
</attribute>
<attribute name="isPolynomial" type="boolean" fixed="true">
<annotation>
<documentation>The attribute isPolynomial is set to true as this is a polynomial spline.</documentation>
</annotation>
</attribute>
<attribute name="knotType" type="gml:KnotTypesType" use="prohibited">
<annotation>
<documentation>The property "knotType" is not relevant for Bezier curve segments.</documentation>
</annotation>
</attribute>
</restriction>
</complexContent>
</complexType>
<!-- =========================================================== -->
<element name="Surface" type="gml:SurfaceType" substitutionGroup="gml:_Surface"/>
<!-- =========================================================== -->
<complexType name="SurfaceType">
<annotation>
<documentation>A Surface is a 2-dimensional primitive and is composed of one or more surface patches. The surface patches are connected to one another.
The orientation of the surface is positive ("up"). The orientation of a surface chooses an "up" direction through the choice of the upward normal, which, if the surface is not a cycle, is the side of the surface from which the exterior boundary appears counterclockwise. Reversal of the surface orientation reverses the curve orientation of each boundary component, and interchanges the conceptual "up" and "down" direction of the surface. If the surface is the boundary of a solid, the "up" direction is usually outward. For closed surfaces, which have no boundary, the up direction is that of the surface patches, which must be consistent with one another. Its included surface patches describe the interior structure of the Surface.</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractSurfaceType">
<sequence>
<element ref="gml:patches">
<annotation>
<documentation>This element encapsulates the patches of the surface.</documentation>
</annotation>
</element>
</sequence>
</extension>
</complexContent>
</complexType>
<!-- =========================================================== -->
<element name="baseSurface" type="gml:SurfacePropertyType">
<annotation>
<appinfo>
<sch:pattern name="Check either href or content not both">
<sch:rule context="gml:baseSurface">
<sch:extends rule="hrefOrContent"/>
</sch:rule>
</sch:pattern>
</appinfo>
<documentation>This property element either references a surface via the XLink-attributes or contains the surface element. A surface element is any element which is substitutable for "_Surface".</documentation>
</annotation>
</element>
<!-- =========================================================== -->
<element name="OrientableSurface" type="gml:OrientableSurfaceType" substitutionGroup="gml:_Surface"/>
<!-- =========================================================== -->
<complexType name="OrientableSurfaceType">
<annotation>
<documentation>OrientableSurface consists of a surface and an orientation. If the orientation is "+", then the OrientableSurface is identical to the baseSurface. If the orientation is "-", then the OrientableSurface is a reference to a Surface with an up-normal that reverses the direction for this OrientableSurface, the sense of "the top of the surface".</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractSurfaceType">
<sequence>
<element ref="gml:baseSurface">
<annotation>
<documentation>References or contains the base surface (positive orientation).</documentation>
</annotation>
</element>
</sequence>
<attribute name="orientation" type="gml:SignType" default="+">
<annotation>
<documentation>If the orientation is "+", then the OrientableSurface is identical to the baseSurface. If the orientation is "-", then the OrientableSurface is a reference to a Surface with an up-normal that reverses the direction for this OrientableSurface, the sense of "the top of the surface". "+" is the default value.</documentation>
</annotation>
</attribute>
</extension>
</complexContent>
</complexType>
<!-- =========================================================== -->
<!-- surface patches (2-dimensional) -->
<!-- =========================================================== -->
<!-- =========================================================== -->
<element name="_SurfacePatch" type="gml:AbstractSurfacePatchType" abstract="true">
<annotation>
<documentation>The "_SurfacePatch" element is the abstract head of the substituition group for all surface pach elements describing a continuous portion of a surface.</documentation>
</annotation>
</element>
<!-- =========================================================== -->
<complexType name="AbstractSurfacePatchType" abstract="true">
<annotation>
<documentation>A surface patch defines a homogenuous portion of a surface.</documentation>
</annotation>
<sequence/>
</complexType>
<!-- =========================================================== -->
<element name="patches" type="gml:SurfacePatchArrayPropertyType">
<annotation>
<documentation>This property element contains a list of surface patches. The order of the elements is significant and shall be preserved when processing the array.</documentation>
</annotation>
</element>
<!-- =========================================================== -->
<complexType name="SurfacePatchArrayPropertyType">
<annotation>
<documentation>A container for an array of surface patches.</documentation>
</annotation>
<sequence minOccurs="0" maxOccurs="unbounded">
<element ref="gml:_SurfacePatch"/>
</sequence>
</complexType>
<!-- =========================================================== -->
<element name="PolygonPatch" type="gml:PolygonPatchType" substitutionGroup="gml:_SurfacePatch"/>
<!-- =========================================================== -->
<complexType name="PolygonPatchType">
<annotation>
<documentation>A PolygonPatch is a surface patch that is defined by a set of boundary curves and an underlying surface to which these curves adhere. The curves are coplanar and the polygon uses planar interpolation in its interior. Implements GM_Polygon of ISO 19107.</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractSurfacePatchType">
<sequence>
<element ref="gml:exterior" minOccurs="0"/>
<element ref="gml:interior" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
<attribute name="interpolation" type="gml:SurfaceInterpolationType" fixed="planar">
<annotation>
<documentation>The attribute "interpolation" specifies the interpolation mechanism used for this surface patch. Currently only planar surface patches are defined in GML 3, the attribute is fixed to "planar", i.e. the interpolation method shall return points on a single plane. The boundary of the patch shall be contained within that plane.</documentation>
</annotation>
</attribute>
</extension>
</complexContent>
</complexType>
<!-- =========================================================== -->
<element name="Triangle" type="gml:TriangleType" substitutionGroup="gml:_SurfacePatch"/>
<!-- =========================================================== -->
<complexType name="TriangleType">
<annotation>
<documentation>Represents a triangle as a surface with an outer boundary consisting of a linear ring. Note that this is a polygon (subtype) with no inner boundaries. The number of points in the linear ring must be four.</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractSurfacePatchType">
<sequence>
<element ref="gml:exterior">
<annotation>
<documentation>Constraint: The Ring shall be a LinearRing and must form a triangle, the first and the last position must be co-incident.</documentation>
</annotation>
</element>
</sequence>
<attribute name="interpolation" type="gml:SurfaceInterpolationType" fixed="planar">
<annotation>
<documentation>The attribute "interpolation" specifies the interpolation mechanism used for this surface patch. Currently only planar surface patches are defined in GML 3, the attribute is fixed to "planar", i.e. the interpolation method shall return points on a single plane. The boundary of the patch shall be contained within that plane.</documentation>
</annotation>
</attribute>
</extension>
</complexContent>
</complexType>
<!-- =========================================================== -->
<element name="Rectangle" type="gml:RectangleType" substitutionGroup="gml:_SurfacePatch"/>
<!-- =========================================================== -->
<complexType name="RectangleType">
<annotation>
<documentation>Represents a rectangle as a surface with an outer boundary consisting of a linear ring. Note that this is a polygon (subtype) with no inner boundaries. The number of points in the linear ring must be five.</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractSurfacePatchType">
<sequence>
<element ref="gml:exterior">
<annotation>
<documentation>Constraint: The Ring shall be a LinearRing and must form a rectangle; the first and the last position must be co-incident.</documentation>
</annotation>
</element>
</sequence>
<attribute name="interpolation" type="gml:SurfaceInterpolationType" fixed="planar">
<annotation>
<documentation>The attribute "interpolation" specifies the interpolation mechanism used for this surface patch. Currently only planar surface patches are defined in GML 3, the attribute is fixed to "planar", i.e. the interpolation method shall return points on a single plane. The boundary of the patch shall be contained within that plane.</documentation>
</annotation>
</attribute>
</extension>
</complexContent>
</complexType>
<!-- =========================================================== -->
<element name="curveMember" type="gml:CurvePropertyType">
<annotation>
<documentation>This property element either references a curve via the XLink-attributes or contains the curve element. A curve element is any element which is substitutable for "_Curve".</documentation>
</annotation>
</element>
<!-- =========================================================== -->
<element name="Ring" type="gml:RingType" substitutionGroup="gml:_Ring"/>
<!-- =========================================================== -->
<complexType name="RingType">
<annotation>
<documentation>A Ring is used to represent a single connected component of a surface boundary. It consists of a sequence of curves connected in a cycle (an object whose boundary is empty).
A Ring is structurally similar to a composite curve in that the endPoint of each curve in the sequence is the startPoint of the next curve in the Sequence. Since the sequence is circular, there is no exception to this rule. Each ring, like all boundaries, is a cycle and each ring is simple.
NOTE: Even though each Ring is simple, the boundary need not be simple. The easiest case of this is where one of the interior rings of a surface is tangent to its exterior ring.</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractRingType">
<sequence>
<element ref="gml:curveMember" maxOccurs="unbounded">
<annotation>
<documentation>This element references or contains one curve in the composite curve. The curves are contiguous, the collection of curves is ordered.
NOTE: This definition allows for a nested structure, i.e. a CompositeCurve may use, for example, another CompositeCurve as a curve member.</documentation>
</annotation>
</element>
</sequence>
</extension>
</complexContent>
</complexType>
<!-- =========================================================== -->
<complexType name="RingPropertyType">
<annotation>
<documentation>Encapsulates a ring to represent properties in features or geometry collections.</documentation>
</annotation>
<sequence>
<element ref="gml:Ring"/>
</sequence>
</complexType>
<!-- =========================================================== -->
<group name="PointGrid">
<annotation>
<documentation>Reference points which are organised
into sequences or grids(sequences of equal length sequences).</documentation>
</annotation>
<sequence>
<element name="row" maxOccurs="unbounded">
<complexType>
<sequence>
<group ref="gml:geometricPositionListGroup"/>
</sequence>
</complexType>
</element>
</sequence>
</group>
<!-- ====================================================== -->
<element name="_ParametricCurveSurface" type="gml:AbstractParametricCurveSurfaceType" abstract="true" substitutionGroup="gml:_SurfacePatch"/>
<!-- ====================================================== -->
<complexType name="AbstractParametricCurveSurfaceType">
<annotation>
<documentation>
</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractSurfacePatchType"/>
</complexContent>
</complexType>
<!-- ======================================================== -->
<element name="_GriddedSurface" type="gml:AbstractGriddedSurfaceType" abstract="true" substitutionGroup="gml:_ParametricCurveSurface"/>
<!-- ======================================================== -->
<complexType name="AbstractGriddedSurfaceType">
<annotation>
<documentation>A gridded surface is a parametric curve
surface derived from a rectangular grid in the parameter
space. The rows from this grid are control points for
horizontal surface curves; the columns are control points
for vertical surface curves. The working assumption is that
for a pair of parametric co-ordinates (s, t) that the
horizontal curves for each integer offset are calculated
and evaluated at "s". The defines a sequence of control
points:
cn(s) : s 1 .....columns
From this sequence a vertical curve is calculated for "s",
and evaluated at "t". In most cases, the order of
calculation (horizontal-vertical vs. vertical-horizontal)
does not make a difference. Where it does, the horizontal-
vertical order shall be the one used.
Logically, any pair of curve interpolation types can lead
to a subtype of GriddedSurface. The following clauses
define some most commonly encountered surfaces that can
be represented in this manner.</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractParametricCurveSurfaceType">
<sequence>
<group ref="gml:PointGrid">
<annotation>
<documentation>This is the double indexed sequence
of control points, given in row major form.
NOTE! There in no assumption made about the shape
of the grid.
For example, the positions need not effect a "21/2D"
surface, consecutive points may be equal in any or all
of the ordinates. Further, the curves in either or both
directions may close.</documentation>
</annotation>
</group>
<element name="rows" type="integer" minOccurs="0">
<annotation>
<documentation>The attribute rows gives the number
of rows in the parameter grid.</documentation>
</annotation>
</element>
<element name="columns" type="integer" minOccurs="0">
<annotation>
<documentation>The attribute columns gives the number
of columns in the parameter grid.</documentation>
</annotation>
</element>
</sequence>
</extension>
</complexContent>
</complexType>
<!-- ======================================================== -->
<element name="Cone" type="gml:ConeType" substitutionGroup="gml:_GriddedSurface"/>
<!-- ======================================================== -->
<complexType name="ConeType">
<annotation>
<documentation>A cone is a gridded surface given as a
family of conic sections whose control points vary linearly.
NOTE! A 5-point ellipse with all defining positions identical
is a point. Thus, a truncated elliptical cone can be given as a
2x5 set of control points
((P1, P1, P1, P1, P1), (P2, P3, P4, P5, P6)). P1 is the apex
of the cone. P2, P3,P4, P5 and P6 are any five distinct points
around the base ellipse of the cone. If the horizontal curves
are circles as opposed to ellipses, the a circular cone can
be constructed using ((P1, P1, P1),(P2, P3, P4)). The apex most
not coinside with the other plane.</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractGriddedSurfaceType">
<attribute name="horizontalCurveType" type="gml:CurveInterpolationType" fixed="circularArc3Points"/>
<attribute name="verticalCurveType" type="gml:CurveInterpolationType" fixed="linear"/>
</extension>
</complexContent>
</complexType>
<!-- ======================================================== -->
<element name="Cylinder" type="gml:CylinderType" substitutionGroup="gml:_GriddedSurface"/>
<!-- ======================================================== -->
<complexType name="CylinderType">
<annotation>
<documentation>A cylinder is a gridded surface given as a
family of circles whose positions vary along a set of parallel
lines, keeping the cross sectional horizontal curves of a
constant shape.
NOTE! Given the same working assumptions as in the previous
note, a Cylinder can be given by two circles, giving us the
control points of the form ((P1, P2, P3),(P4, P5, P6)).</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractGriddedSurfaceType">
<attribute name="horizontalCurveType" type="gml:CurveInterpolationType" fixed="circularArc3Points"/>
<attribute name="verticalCurveType" type="gml:CurveInterpolationType" fixed="linear"/>
</extension>
</complexContent>
</complexType>
<!-- ======================================================== -->
<element name="Sphere" type="gml:SphereType" substitutionGroup="gml:_GriddedSurface"/>
<!-- ======================================================== -->
<complexType name="SphereType">
<annotation>
<documentation>A sphere is a gridded surface given as a
family of circles whose positions vary linearly along the
axis of the sphere, and whise radius varies in proportions to
the cosine function of the central angle. The horizontal
circles resemble lines of constant latitude, and the vertical
arcs resemble lines of constant longitude.
NOTE! If the control points are sorted in terms of increasing
longitude, and increasing latitude, the upNormal of a sphere
is the outward normal.
EXAMPLE If we take a gridded set of latitudes and longitudes
in degrees,(u,v) such as
(-90,-180) (-90,-90) (-90,0) (-90, 90) (-90, 180)
(-45,-180) (-45,-90) (-45,0) (-45, 90) (-45, 180)
( 0,-180) ( 0,-90) ( 0,0) ( 0, 90) ( 0, 180)
( 45,-180) ( 45,-90) ( 45,0) ( 45, -90) ( 45, 180)
( 90,-180) ( 90,-90) ( 90,0) ( 90, -90) ( 90, 180)
And map these points to 3D using the usual equations (where R
is the radius of the required sphere).
z = R sin u
x = (R cos u)(sin v)
y = (R cos u)(cos v)
We have a sphere of Radius R, centred at (0,0), as a gridded
surface. Notice that the entire first row and the entire last
row of the control points map to a single point in each 3D
Euclidean space, North and South poles respectively, and that
each horizontal curve closes back on itself forming a
geometric cycle. This gives us a metrically bounded (of finite
size), topologically unbounded (not having a boundary, a
cycle) surface.</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractGriddedSurfaceType">
<attribute name="horizontalCurveType" type="gml:CurveInterpolationType" fixed="circularArc3Points"/>
<attribute name="verticalCurveType" type="gml:CurveInterpolationType" fixed="circularArc3Points"/>
</extension>
</complexContent>
</complexType>
<!-- ======================================================== -->
<element name="PolyhedralSurface" type="gml:PolyhedralSurfaceType" substitutionGroup="gml:Surface"/>
<!-- ======================================================== -->
<complexType name="PolyhedralSurfaceType">
<annotation>
<documentation>A polyhedral surface is a surface composed
of polygon surfaces connected along their common boundary
curves. This differs from the surface type only in the
restriction on the types of surface patches acceptable.</documentation>
</annotation>
<complexContent>
<restriction base="gml:SurfaceType">
<sequence>
<group ref="gml:StandardObjectProperties"/>
<element ref="gml:polygonPatches">
<annotation>
<documentation>This property encapsulates the patches of
the polyhedral surface.</documentation>
</annotation>
</element>
</sequence>
</restriction>
</complexContent>
</complexType>
<!-- ======================================================== -->
<element name="polygonPatches" type="gml:PolygonPatchArrayPropertyType" substitutionGroup="gml:patches">
<annotation>
<documentation>This property element contains a list of
polygon patches. The order of the patches is significant and
shall be preserved when processing the list.</documentation>
</annotation>
</element>
<!-- ======================================================== -->
<complexType name="PolygonPatchArrayPropertyType">
<annotation>
<documentation>This type defines a container for an array of
polygon patches.</documentation>
</annotation>
<complexContent>
<restriction base="gml:SurfacePatchArrayPropertyType">
<sequence minOccurs="0" maxOccurs="unbounded">
<element ref="gml:PolygonPatch"/>
</sequence>
</restriction>
</complexContent>
</complexType>
<!-- ======================================================== -->
<element name="trianglePatches" type="gml:TrianglePatchArrayPropertyType" substitutionGroup="gml:patches">
<annotation>
<documentation>This property element contains a list of
triangle patches. The order of the patches is significant and
shall be preserved when processing the list.</documentation>
</annotation>
</element>
<!-- ======================================================== -->
<complexType name="TrianglePatchArrayPropertyType">
<annotation>
<documentation>This type defines a container for an array of
triangle patches.</documentation>
</annotation>
<complexContent>
<restriction base="gml:SurfacePatchArrayPropertyType">
<sequence minOccurs="0" maxOccurs="unbounded">
<element ref="gml:Triangle"/>
</sequence>
</restriction>
</complexContent>
</complexType>
<!-- ======================================================== -->
<element name="TriangulatedSurface" type="gml:TriangulatedSurfaceType" substitutionGroup="gml:Surface"/>
<!-- ======================================================== -->
<complexType name="TriangulatedSurfaceType">
<annotation>
<documentation>A triangulated surface is a polyhedral
surface that is composed only of triangles. There is no
restriction on how the triangulation is derived.</documentation>
</annotation>
<complexContent>
<restriction base="gml:SurfaceType">
<sequence>
<group ref="gml:StandardObjectProperties"/>
<element ref="gml:trianglePatches">
<annotation>
<documentation>This property encapsulates the patches of
the triangulated surface.</documentation>
</annotation>
</element>
</sequence>
</restriction>
</complexContent>
</complexType>
<!-- ======================================================== -->
<element name="Tin" type="gml:TinType" substitutionGroup="gml:TriangulatedSurface"/>
<!-- ======================================================== -->
<complexType name="TinType">
<annotation>
<documentation>A tin is a triangulated surface that uses
the Delauny algorithm or a similar algorithm complemented with
consideration of breaklines, stoplines, and maximum length of
triangle sides. These networks satisfy the Delauny's criterion
away from the modifications: Fore each triangle in the
network, the circle passing through its vertices does not
contain, in its interior, the vertex of any other triangle.</documentation>
</annotation>
<complexContent>
<extension base="gml:TriangulatedSurfaceType">
<sequence>
<element name="stopLines" type="gml:LineStringSegmentArrayPropertyType" minOccurs="0" maxOccurs="unbounded">
<annotation>
<documentation>Stoplines are lines where the local
continuity or regularity of the surface is questionable.
In the area of these pathologies, triangles intersecting
a stopline shall be removed from the tin surface, leaving
holes in the surface. If coincidence occurs on surface
boundary triangles, the result shall be a change of the
surface boundary. Stoplines contains all these
pathological segments as a set of line strings.</documentation>
</annotation>
</element>
<element name="breakLines" type="gml:LineStringSegmentArrayPropertyType" minOccurs="0" maxOccurs="unbounded">
<annotation>
<documentation>Breaklines are lines of a critical
nature to the shape of the surface, representing local
ridges, or depressions (such as drainage lines) in the
surface. As such their constituent segments must be
included in the tin eve if doing so
violates the Delauny criterion. Break lines contains these
critical segments as a set of line strings.</documentation>
</annotation>
</element>
<element name="maxLength" type="gml:LengthType">
<annotation>
<documentation>Areas of the surface where data is not
sufficiently dense to assure reasonable calculation shall be
removed by adding a retention criterion for triangles based
on the length of their sides. For many triangle sides
exceeding maximum length, the adjacent triangles to that
triangle side shall be removed from the surface.</documentation>
</annotation>
</element>
<element name="controlPoint">
<annotation>
<documentation>The corners of the triangles in the TIN
are often referred to as pots. ControlPoint shall contain a
set of the GM_Position used as posts for this TIN. Since each
TIN contains triangles, there must be at least 3 posts. The
order in which these points are given does not affect the
surface that is represented. Application schemas may add
information based on ordering of control points to facilitate
the reconstruction of the TIN from the control points.</documentation>
</annotation>
<complexType>
<choice>
<element ref="gml:posList"/>
<group ref="gml:geometricPositionGroup" minOccurs="3" maxOccurs="unbounded"/>
</choice>
</complexType>
</element>
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="LineStringSegmentArrayPropertyType">
<sequence>
<element ref="gml:LineStringSegment" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</complexType>
<!-- =========================================================== -->
<!-- primitive geometry objects (3-dimensional) -->
<!-- =========================================================== -->
<!-- =========================================================== -->
<element name="_Solid" type="gml:AbstractSolidType" abstract="true" substitutionGroup="gml:_GeometricPrimitive">
<annotation>
<documentation>The "_Solid" element is the abstract head of the substituition group for all (continuous) solid elements.</documentation>
</annotation>
</element>
<!-- =========================================================== -->
<complexType name="AbstractSolidType">
<annotation>
<documentation>An abstraction of a solid to support the different levels of complexity. A solid is always contiguous.</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractGeometricPrimitiveType"/>
</complexContent>
</complexType>
<!-- =========================================================== -->
<element name="solidProperty" type="gml:SolidPropertyType">
<annotation>
<appinfo>
<sch:pattern name="Check either href or content not both">
<sch:rule context="gml:solidProperty">
<sch:extends rule="hrefOrContent"/>
</sch:rule>
</sch:pattern>
</appinfo>
<documentation>This property element either references a solid via the XLink-attributes or contains the solid element. solidProperty is the predefined property which can be used by GML Application Schemas whenever a GML Feature has a property with a value that is substitutable for _Solid.</documentation>
</annotation>
</element>
<!-- =========================================================== -->
<complexType name="SolidPropertyType">
<annotation>
<documentation>A property that has a solid as its value domain can either be an appropriate geometry element encapsulated in an element of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located elsewhere in the same document). Either the reference or the contained element must be given, but neither both nor none.</documentation>
</annotation>
<sequence minOccurs="0">
<element ref="gml:_Solid"/>
</sequence>
<attributeGroup ref="gml:AssociationAttributeGroup">
<annotation>
<documentation>This attribute group includes the XLink attributes (see xlinks.xsd). XLink is used in GML to reference remote resources (including those elsewhere in the same document). A simple link element can be constructed by including a specific set of XLink attributes. The XML Linking Language (XLink) is currently a Proposed Recommendation of the World Wide Web Consortium. XLink allows elements to be inserted into XML documents so as to create sophisticated links between resources; such links can be used to reference remote properties.
A simple link element can be used to implement pointer functionality, and this functionality has been built into various GML 3 elements by including the gml:AssociationAttributeGroup.</documentation>
</annotation>
</attributeGroup>
</complexType>
<!-- =========================================================== -->
<element name="solidArrayProperty" type="gml:SolidArrayPropertyType"/>
<!-- =========================================================== -->
<complexType name="SolidArrayPropertyType">
<annotation>
<documentation>A container for an array of solids. The elements are always contained in the array property, referencing geometry elements or arrays of geometry elements is not supported.</documentation>
</annotation>
<sequence minOccurs="0" maxOccurs="unbounded">
<element ref="gml:_Solid"/>
</sequence>
</complexType>
<!-- =========================================================== -->
<element name="Solid" type="gml:SolidType" substitutionGroup="gml:_Solid"/>
<!-- =========================================================== -->
<complexType name="SolidType">
<annotation>
<documentation>A solid is the basis for 3-dimensional geometry. The extent of a solid is defined by the boundary surfaces (shells). A shell is represented by a composite surface, where every shell is used to represent a single connected component of the boundary of a solid. It consists of a composite surface (a list of orientable surfaces) connected in a topological cycle (an object whose boundary is empty). Unlike a Ring, a Shell's elements have no natural sort order. Like Rings, Shells are simple.</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractSolidType">
<sequence>
<element name="exterior" type="gml:SurfacePropertyType" minOccurs="0">
<annotation>
<appinfo>
<sch:pattern name="Check either href or content not both">
<sch:rule context="gml:exterior">
<sch:extends rule="hrefOrContent"/>
</sch:rule>
</sch:pattern>
</appinfo>
<documentation>Boundaries of solids are similar to surface boundaries. In normal 3-dimensional Euclidean space, one (composite) surface is distinguished as the exterior. In the more general case, this is not always possible.</documentation>
</annotation>
</element>
<element name="interior" type="gml:SurfacePropertyType" minOccurs="0" maxOccurs="unbounded">
<annotation>
<appinfo>
<sch:pattern name="Check either href or content not both">
<sch:rule context="gml:interior">
<sch:extends rule="hrefOrContent"/>
</sch:rule>
</sch:pattern>
</appinfo>
<documentation>Boundaries of solids are similar to surface boundaries.</documentation>
</annotation>
</element>
</sequence>
</extension>
</complexContent>
</complexType>
<!-- =========================================================== -->
<!-- predefined simple types (enumerations, simple typed arrays) -->
<!-- =========================================================== -->
<simpleType name="CurveInterpolationType">
<annotation>
<documentation>CurveInterpolationType is a list of codes that may be used to identify the interpolation mechanisms specified by an
application schema.</documentation>
</annotation>
<restriction base="string">
<enumeration value="linear"/>
<enumeration value="geodesic"/>
<enumeration value="circularArc3Points"/>
<enumeration value="circularArc2PointWithBulge"/>
<enumeration value="circularArcCenterPointWithRadius"/>
<enumeration value="elliptical"/>
<enumeration value="clothoid"/>
<enumeration value="conic"/>
<enumeration value="polynomialSpline"/>
<enumeration value="cubicSpline"/>
<enumeration value="rationalSpline"/>
</restriction>
</simpleType>
<!-- =========================================================== -->
<simpleType name="SurfaceInterpolationType">
<annotation>
<documentation>SurfaceInterpolationType is a list of codes that may be used to identify the interpolation mechanisms specified by an
application schema.</documentation>
</annotation>
<restriction base="string">
<enumeration value="none"/>
<enumeration value="planar"/>
<enumeration value="spherical"/>
<enumeration value="elliptical"/>
<enumeration value="conic"/>
<enumeration value="tin"/>
<enumeration value="parametricCurve"/>
<enumeration value="polynomialSpline"/>
<enumeration value="rationalSpline"/>
<enumeration value="triangulatedSpline"/>
</restriction>
</simpleType>
<!-- =========================================================== -->
<simpleType name="KnotTypesType">
<annotation>
<documentation>Defines allowed values for the knots` type. Uniform knots implies that all knots are of multiplicity 1 and they differ by a positive constant from the preceding knot. Knots are quasi-uniform iff they are of multiplicity (degree + 1) at the ends, of multiplicity 1 elsewhere, and they differ by a positive constant from the preceding knot.</documentation>
</annotation>
<restriction base="string">
<enumeration value="uniform"/>
<enumeration value="quasiUniform"/>
<enumeration value="piecewiseBezier"/>
</restriction>
</simpleType>
<!-- =========================================================== -->
</schema>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="http://www.opengis.net/gml" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:sch="http://www.ascc.net/xml/schematron" xmlns:gml="http://www.opengis.net/gml"
xmlns:xlink="http://www.w3.org/1999/xlink" elementFormDefault="qualified" attributeFormDefault="unqualified" version="3.1.1">
<annotation>
<appinfo source="urn:opengis:specification:gml:schema-xsd:gml:3.1.1">gml.xsd</appinfo>
<documentation>Top level GML schema
Copyright (c) 2002-2005 OGC, All Rights Reserved.
For conditions, see OGC Software Notice http://www.opengeospatial.org/about/?page=ipr</documentation>
</annotation>
<!-- ====================================================================== -->
<include schemaLocation="dynamicFeature.xsd"/>
<include schemaLocation="topology.xsd"/>
<include schemaLocation="coverage.xsd"/>
<include schemaLocation="coordinateReferenceSystems.xsd"/>
<include schemaLocation="observation.xsd"/>
<include schemaLocation="defaultStyle.xsd"/>
<include schemaLocation="temporalReferenceSystems.xsd"/>
<!-- ====================================================================== -->
</schema>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<schema jaxb:version="2.1" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" targetNamespace="http://www.opengis.net/gml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:gml="http://www.opengis.net/gml"
xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sch="http://www.ascc.net/xml/schematron"
xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" version="3.1.1">
<annotation>
<appinfo source="urn:opengis:specification:gml:schema-xsd:gmlBase:3.1.1">
<sch:title>Schematron validation</sch:title>
<sch:ns prefix="gml" uri="http://www.opengis.net/gml"/>
<sch:ns prefix="xlink" uri="http://www.w3.org/1999/xlink"/>
<sch:pattern name="Check either href or content not both">
<sch:rule abstract="true" id="hrefOrContent">
<sch:report test="@xlink:href and (*|text())">Property element may not carry both a reference to an object and
contain an object.</sch:report>
<sch:assert test="@xlink:href | (*|text())">Property element must either carry a reference to an object or
contain an object.</sch:assert>
</sch:rule>
</sch:pattern>
</appinfo>
<documentation>GML base schema for GML 3 Components to support the GML encoding model. The abstract Schematron rules can
be used by any schema that includes gmlBase. Copyright (c) 2001-2005 OGC, All Rights Reserved. For conditions, see OGC
Software Notice http://www.opengeospatial.org/about/?page=ipr</documentation>
</annotation>
<!-- ==============================================================
includes and imports
============================================================== -->
<include schemaLocation="basicTypes.xsd"/>
<import namespace="http://www.w3.org/1999/xlink" schemaLocation="../xlink/xlinks.xsd"/>
<!-- =========================================================== -->
<!-- ==================== Objects ================================ -->
<!-- =========================================================== -->
<!-- =========== Abstract "Object" is "anyType" ============= -->
<!-- ===== Global element at the head of the "Object" substitution group ======== -->
<element name="_Object" abstract="true">
<annotation>
<documentation>This abstract element is the head of a substitutionGroup hierararchy which may contain either
simpleContent or complexContent elements. It is used to assert the model position of "class" elements declared in
other GML schemas.</documentation>
</annotation>
</element>
<!-- =========================================================== -->
<!-- =========== Abstract "ADEComponent" is "anyType" ============= -->
<!-- ===== Global element representing CityGML ADE elements ======== -->
<element name="_ADEComponent" abstract="true">
<annotation>
<appinfo>
<jaxb:dom/>
</appinfo>
</annotation>
</element>
<!-- ============================================================= -->
<!-- =========== Abstract "GMLobject" supertype ========================= -->
<element name="_GML" type="gml:AbstractGMLType" abstract="true" substitutionGroup="gml:_Object">
<annotation>
<documentation>Global element which acts as the head of a substitution group that may include any element which is a
GML feature, object, geometry or complex value</documentation>
</annotation>
</element>
<!-- =========================================================== -->
<group name="StandardObjectProperties">
<annotation>
<documentation>This content model group makes it easier to construct types that derive from AbstractGMLType and its
descendents "by restriction". A reference to the group saves having to enumerate the standard object
properties.</documentation>
</annotation>
<sequence>
<element ref="gml:metaDataProperty" minOccurs="0" maxOccurs="unbounded"/>
<element ref="gml:description" minOccurs="0"/>
<element ref="gml:name" minOccurs="0" maxOccurs="unbounded">
<annotation>
<documentation>Multiple names may be provided. These will often be distinguished by being assigned by
different authorities, as indicated by the value of the codeSpace attribute. In an instance document there
will usually only be one name per authority.</documentation>
</annotation>
</element>
</sequence>
</group>
<!-- =========================================================== -->
<complexType name="AbstractGMLType" abstract="true">
<annotation>
<documentation>All complexContent GML elements are directly or indirectly derived from this abstract supertype to
establish a hierarchy of GML types that may be distinguished from other XML types by their ancestry. Elements in
this hierarchy may have an ID and are thus referenceable.</documentation>
</annotation>
<sequence>
<group ref="gml:StandardObjectProperties"/>
</sequence>
<attribute ref="gml:id" use="optional"/>
</complexType>
<!-- =========================================================== -->
<!-- =========== Concrete "Collection" supertype ========================= -->
<element name="Bag" type="gml:BagType" substitutionGroup="gml:_GML">
<annotation>
<documentation>Generic GML element to contain a heterogeneous collection of GML _Objects</documentation>
</annotation>
</element>
<!-- =========================================================== -->
<complexType name="BagType">
<annotation>
<documentation>A non-abstract generic collection type that can be used as a document element for a collection of any
GML types - Geometries, Topologies, Features ... FeatureCollections may only contain Features. GeometryCollections
may only contain Geometrys. Bags are less constrained they must contain objects that are substitutable for
gml:_Object. This may mix several levels, including Features, Definitions, Dictionaries, Geometries etc. The
content model would ideally be member 0..* members 0..1 member 0..* for maximum flexibility in building a
collection from both homogeneous and distinct components: included "member" elements each contain a single Object
an included "members" element contains a set of Objects However, this is non-deterministic, thus prohibited by
XSD.</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractGMLType">
<sequence>
<element ref="gml:member" minOccurs="0" maxOccurs="unbounded"/>
<element ref="gml:members" minOccurs="0"/>
</sequence>
</extension>
</complexContent>
</complexType>
<!-- =========================================================== -->
<!-- =========== Concrete "Array" supertype ========================= -->
<element name="Array" type="gml:ArrayType" substitutionGroup="gml:_GML">
<annotation>
<documentation>Generic GML element to contain a homogeneous array of GML _Objects</documentation>
</annotation>
</element>
<!-- ======================================================================= -->
<complexType name="ArrayType">
<annotation>
<documentation>A non-abstract generic collection type that can be used as a document element for a homogeneous
collection of any GML types - Geometries, Topologies, Features ...</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractGMLType">
<sequence>
<element ref="gml:members" minOccurs="0"/>
</sequence>
</extension>
</complexContent>
</complexType>
<!-- =========================================================== -->
<!-- =========== Abstract Metadata supertype ========================= -->
<element name="_MetaData" type="gml:AbstractMetaDataType" abstract="true" substitutionGroup="gml:_Object">
<annotation>
<documentation>Abstract element which acts as the head of a substitution group for packages of MetaData
properties.</documentation>
</annotation>
</element>
<!-- =========================================================== -->
<complexType name="AbstractMetaDataType" abstract="true" mixed="true">
<annotation>
<documentation>An abstract base type for complex metadata types.</documentation>
</annotation>
<attribute ref="gml:id" use="optional"/>
</complexType>
<!-- =========================================================== -->
<!-- =========== Container for Generic Metadata ========================= -->
<element name="GenericMetaData" type="gml:GenericMetaDataType" substitutionGroup="gml:_MetaData">
<annotation>
<documentation>Concrete element in the _MetaData substitution group, which permits any well-formed XML content.
Intended to act as a container for metadata defined in external schemas, for which it is not possible to add the
concrete components to the GML _MetaData substitution group directly. Deprecated with GML version
3.1.0.</documentation>
</annotation>
</element>
<!-- =========================================================== -->
<complexType name="GenericMetaDataType" mixed="true">
<annotation>
<documentation>Deprecated with GML version 3.1.0.</documentation>
</annotation>
<complexContent mixed="true">
<extension base="gml:AbstractMetaDataType">
<sequence>
<any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</extension>
</complexContent>
</complexType>
<!-- ================================================================== -->
<!-- ================== Base Property Types ============================== -->
<!-- ================================================================== -->
<!-- ==== property types for unspecified association - by Value or by Reference ==== -->
<!-- ====== single Objects - by Value or by Reference ======== -->
<element name="_association" type="gml:AssociationType" abstract="true"/>
<!-- =========================================================== -->
<element name="_strictAssociation" type="gml:AssociationType" abstract="true">
<annotation>
<appinfo>
<sch:pattern name="refAndContent co-occurence prohibited">
<sch:rule context="gml:_strictAssociation">
<sch:extends rule="hrefOrContent"/>
</sch:rule>
</sch:pattern>
</appinfo>
<documentation>must carry a reference to an object or contain an object but not both</documentation>
</annotation>
</element>
<!-- =========================================================== -->
<element name="member" type="gml:AssociationType"/>
<!-- =========================================================== -->
<complexType name="AssociationType">
<annotation>
<documentation>A pattern or base for derived types used to specify complex types corresponding to an unspecified UML
association - either composition or aggregation. Restricts the cardinality of Objects contained in the association
to a maximum of one. An instance of this type can contain an element representing an Object, or serve as a pointer
to a remote Object. Descendents of this type can be restricted in an application schema to * allow only specified
classes as valid participants in the aggregation * allow only association by reference (i.e. empty the content
model) or by value (i.e. remove the xlinks). When used for association by reference, the value of the
gml:remoteSchema attribute can be used to locate a schema fragment that constrains the target instance. In many
cases it is desirable to impose the constraint prohibiting the occurence of both reference and value in the same
instance, as that would be ambiguous. This is accomplished by adding a directive in the annotation element of the
element declaration. This directive can be in the form of normative prose, or can use a Schematron pattern to
automatically constrain co-occurrence - see the declaration for _strictAssociation below. If co-occurence is not
prohibited, then both a link and content may be present. If this occurs in an instance, then the rule for
interpretation is that the instance found by traversing the href provides the normative value of the property, and
should be used when possible. The value(s) included as content may be used if the remote instance cannot be
resolved. This may be considered to be a "cached" version of the value(s).</documentation>
</annotation>
<sequence minOccurs="0">
<element ref="gml:_Object"/>
<element ref="gml:_ADEComponent" minOccurs="0"/>
</sequence>
<attributeGroup ref="gml:AssociationAttributeGroup"/>
</complexType>
<!-- =========================================================== -->
<element name="_reference" type="gml:ReferenceType" abstract="true"/>
<!-- =========================================================== -->
<complexType name="ReferenceType">
<annotation>
<documentation>A pattern or base for derived types used to specify complex types corresponding to a UML aggregation
association. An instance of this type serves as a pointer to a remote Object.</documentation>
</annotation>
<sequence/>
<attributeGroup ref="gml:AssociationAttributeGroup"/>
</complexType>
<!-- =========================================================== -->
<!-- ========= multiple objects - by Value or by Reference ================== -->
<element name="members" type="gml:ArrayAssociationType"/>
<!-- =========================================================== -->
<complexType name="ArrayAssociationType">
<annotation>
<documentation>A base for derived types used to specify complex types containing an array of objects, by unspecified
UML association - either composition or aggregation. An instance of this type contains elements representing
Objects. Ideally this type would be derived by extension of AssociationType. However, this leads to a
non-deterministic content model, since both the base and the extension have minOccurs="0", and is thus prohibited
in XML Schema.</documentation>
</annotation>
<sequence>
<element ref="gml:_Object" minOccurs="0" maxOccurs="unbounded"/>
<element ref="gml:_ADEComponent" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</complexType>
<!-- =========================================================== -->
<!-- =========== Abstract "property" supertype ========================= -->
<element name="metaDataProperty" type="gml:MetaDataPropertyType">
<annotation>
<documentation>Contains or refers to a metadata package that contains metadata properties.</documentation>
</annotation>
</element>
<!-- =========================================================== -->
<complexType name="MetaDataPropertyType">
<annotation>
<documentation>Base type for complex metadata property types.</documentation>
</annotation>
<sequence minOccurs="0">
<any processContents="lax">
<annotation>
<appinfo>
<jaxb:dom/>
</appinfo>
</annotation>
</any>
<!-- <element ref="gml:_MetaData"/> -->
</sequence>
<attributeGroup ref="gml:AssociationAttributeGroup"/>
<attribute name="about" type="anyURI" use="optional"/>
</complexType>
<!-- =========================================================== -->
<!-- ==========================================================
global attribute, attribute group and element declarations
============================================================ -->
<attribute name="id" type="ID">
<annotation>
<documentation>Database handle for the object. It is of XML type ID, so is constrained to be unique in the XML
document within which it occurs. An external identifier for the object in the form of a URI may be constructed
using standard XML and XPointer methods. This is done by concatenating the URI for the document, a fragment
separator, and the value of the id attribute.</documentation>
</annotation>
</attribute>
<!-- =========================================================== -->
<attribute name="remoteSchema" type="anyURI">
<annotation>
<documentation>Reference to an XML Schema fragment that specifies the content model of the propertys value. This is in
conformance with the XML Schema Section 4.14 Referencing Schemas from Elsewhere.</documentation>
</annotation>
</attribute>
<!-- =========================================================== -->
<attributeGroup name="AssociationAttributeGroup">
<annotation>
<documentation>Attribute group used to enable property elements to refer to their value remotely. It contains the
simple link components from xlinks.xsd, with all members optional, and the remoteSchema attribute, which is also
optional. These attributes can be attached to any element, thus allowing it to act as a pointer. The
'remoteSchema' attribute allows an element that carries link attributes to indicate that the element is declared
in a remote schema rather than by the schema that constrains the current document instance.</documentation>
</annotation>
<attributeGroup ref="xlink:simpleLink"/>
<attribute ref="gml:remoteSchema" use="optional"/>
</attributeGroup>
<!-- =========================================================== -->
<element name="name" type="gml:CodeType">
<annotation>
<documentation>Label for the object, normally a descriptive name. An object may have several names, typically assigned
by different authorities. The authority for a name is indicated by the value of its (optional) codeSpace
attribute. The name may or may not be unique, as determined by the rules of the organization responsible for the
codeSpace.</documentation>
</annotation>
</element>
<!-- =========================================================== -->
<element name="description" type="gml:StringOrRefType">
<annotation>
<documentation>Contains a simple text description of the object, or refers to an external description.</documentation>
</annotation>
</element>
<!-- ===================================================== -->
<complexType name="StringOrRefType">
<annotation>
<documentation>This type is available wherever there is a need for a "text" type property. It is of string type, so
the text can be included inline, but the value can also be referenced remotely via xlinks from the
AssociationAttributeGroup. If the remote reference is present, then the value obtained by traversing the link
should be used, and the string content of the element can be used for an annotation.</documentation>
</annotation>
<simpleContent>
<extension base="string">
<attributeGroup ref="gml:AssociationAttributeGroup"/>
</extension>
</simpleContent>
</complexType>
<!-- ===================================================== -->
</schema>
<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="http://www.opengis.net/gml" xmlns:gml="http://www.opengis.net/gml" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xlink="http://www.w3.org/1999/xlink" elementFormDefault="qualified" version="3.1.1">
<annotation>
<appinfo source="urn:opengis:specification:gml:schema-xsd:grids:3.1.1">grids.xsd</appinfo>
<documentation xml:lang="en">Grid geometries
A subset of implicit geometries
Designed for use with GML Coverage schema, but maybe useful elsewhere as well.
Copyright (c) 2002-2005 OGC, All Rights Reserved.
For conditions, see OGC Software Notice http://www.opengeospatial.org/about/?page=ipr</documentation>
</annotation>
<!-- ==============================================================
includes and imports
============================================================== -->
<include schemaLocation="geometryBasic0d1d.xsd"/>
<!-- ==============================================================
global elements
============================================================== -->
<element name="_ImplicitGeometry" type="gml:AbstractGeometryType" abstract="true" substitutionGroup="gml:_Geometry"/>
<!-- =========================================================== -->
<element name="Grid" type="gml:GridType" substitutionGroup="gml:_ImplicitGeometry"/>
<!-- =========================================================== -->
<complexType name="GridType">
<annotation>
<documentation>An unrectified grid, which is a network composed of two or more sets of equally spaced parallel lines in which the members of each set intersect the members of the other sets at right angles.</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractGeometryType">
<sequence>
<element name="limits" type="gml:GridLimitsType"/>
<element name="axisName" type="string" maxOccurs="unbounded"/>
</sequence>
<attribute name="dimension" type="positiveInteger" use="required"/>
</extension>
</complexContent>
</complexType>
<!-- =========================================================== -->
<complexType name="GridLimitsType">
<sequence>
<element name="GridEnvelope" type="gml:GridEnvelopeType"/>
</sequence>
</complexType>
<!-- =========================================================== -->
<complexType name="GridEnvelopeType">
<annotation>
<documentation>Provides grid coordinate values for the diametrically opposed corners of an envelope that bounds a section of grid. The value of a single coordinate is the number of offsets from the origin of the grid in the direction of a specific axis.</documentation>
</annotation>
<sequence>
<element name="low" type="gml:integerList"/>
<element name="high" type="gml:integerList"/>
</sequence>
</complexType>
<!-- =========================================================== -->
<element name="RectifiedGrid" type="gml:RectifiedGridType" substitutionGroup="gml:_ImplicitGeometry">
<annotation>
<documentation>Should be substitutionGroup="gml:Grid" but changed in order to accomplish Xerces-J schema validation</documentation>
</annotation>
</element>
<!-- =========================================================== -->
<complexType name="RectifiedGridType">
<annotation>
<documentation>A rectified grid has an origin and vectors that define its post locations.</documentation>
</annotation>
<complexContent>
<extension base="gml:GridType">
<sequence>
<element name="origin" type="gml:PointPropertyType"/>
<element name="offsetVector" type="gml:VectorType" maxOccurs="unbounded"/>
</sequence>
</extension>
</complexContent>
</complexType>
<!-- =========================================================== -->
</schema>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="http://www.opengis.net/gml" elementFormDefault="qualified" attributeFormDefault="unqualified" version="3.1.1" xml:lang="en" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:gml="http://www.opengis.net/gml">
<annotation>
<appinfo source="urn:opengis:specification:gml:schema-measures:3.1.1"/>
<documentation>Extends the units.xsd and basicTypes.xsd schemas with types for recording measures using specific types of units, especially the measures and units needed for coordinate reference systems and coordinate operations. The specific unit types encoded are length, angle, scale factor, time, area, volume, speed, and grid length. This schema allows angle values to be recorded as single numbers or in degree-minute-second format.
Copyright (c) 2002-2005 OGC, All Rights Reserved. For conditions, see OGC Software Notice http://www.opengeospatial.org/about/?page=ipr
Parts of this schema are based on Subclause 6.5.7 of ISO/CD 19103 Geographic information - Conceptual schema language, on Subclause A.5.2.2.3 of ISO/CD 19118 Geographic information - Encoding, and on Subclause 4.7 of OpenGIS Recommendation Paper OGC 02-007r4 Units of Measure Use and Definition Recommendations.</documentation>
</annotation>
<!-- ==============================================================
includes and imports
============================================================== -->
<include schemaLocation="units.xsd"/>
<!-- ==============================================================
elements and types
============================================================== -->
<!-- This schema uses the gml:MeasureType defined in basicTypes.xsd with the modified meaning:
<documentation>Value of a quantity, with its units. This element uses the XML Schema primitive data type "double" because it supports both decimal and scientific notation, and thus offers flexibility and precision. However, there is no requirement to store values using any particular format, and applications receiving elements of this type may choose to coerce the data to any other type as convenient. The XML attribute uom references the units or scale by which the amount should be multiplied. For a reference within the same XML document, the abbreviated XPointer prefix "#" symbol should be used, followed by a text abbreviation of the unit name. However, the "#" symbol may be optional, and still may be interpreted as a reference. </documentation> -->
<!-- =========================================================== -->
<element name="measure" type="gml:MeasureType"/>
<!-- =========================================================== -->
<complexType name="LengthType">
<annotation>
<documentation>Value of a length (or distance) quantity, with its units. Uses the MeasureType with the restriction that the unit of measure referenced by uom must be suitable for a length, such as metres or feet.</documentation>
</annotation>
<simpleContent>
<restriction base="gml:MeasureType"/>
</simpleContent>
</complexType>
<!-- =========================================================== -->
<complexType name="ScaleType">
<annotation>
<documentation>Value of a scale factor (or ratio) that has no physical unit. Uses the MeasureType with the restriction that the unit of measure referenced by uom must be suitable for a scale factor, such as percent, permil, or parts-per-million.</documentation>
</annotation>
<simpleContent>
<restriction base="gml:MeasureType"/>
</simpleContent>
</complexType>
<!-- =========================================================== -->
<complexType name="TimeType">
<annotation>
<documentation>Value of a time or temporal quantity, with its units. Uses the MeasureType with the restriction that the unit of measure referenced by uom must be suitable for a time value, such as seconds or weeks.</documentation>
</annotation>
<simpleContent>
<restriction base="gml:MeasureType"/>
</simpleContent>
</complexType>
<!-- =========================================================== -->
<complexType name="GridLengthType">
<annotation>
<documentation>Value of a length (or distance) quantity in a grid, where the grid spacing does not have any associated physical units, or does not have a constant physical spacing. This grid length will often be used in a digital image grid, where the base units are likely to be pixel spacings. Uses the MeasureType with the restriction that the unit of measure referenced by uom must be suitable for length along the axes of a grid, such as pixel spacings or grid spacings.</documentation>
</annotation>
<simpleContent>
<restriction base="gml:MeasureType"/>
</simpleContent>
</complexType>
<!-- =========================================================== -->
<complexType name="AreaType">
<annotation>
<documentation>Value of a spatial area quantity, with its units. Uses the MeasureType with the restriction that the unit of measure referenced by uom must be suitable for an area, such as square metres or square miles.</documentation>
</annotation>
<simpleContent>
<restriction base="gml:MeasureType"/>
</simpleContent>
</complexType>
<!-- =========================================================== -->
<complexType name="VolumeType">
<annotation>
<documentation>Value of a spatial volume quantity, with its units. Uses the MeasureType with the restriction that the unit of measure referenced by uom must be suitable for a volume, such as cubic metres or cubic feet.</documentation>
</annotation>
<simpleContent>
<restriction base="gml:MeasureType"/>
</simpleContent>
</complexType>
<!-- =========================================================== -->
<complexType name="SpeedType">
<annotation>
<documentation>Value of a speed, with its units. Uses the MeasureType with the restriction that the unit of measure referenced by uom must be suitable for a velocity, such as metres per second or miles per hour.</documentation>
</annotation>
<simpleContent>
<restriction base="gml:MeasureType"/>
</simpleContent>
</complexType>
<!-- =========================================================== -->
<complexType name="AngleChoiceType">
<annotation>
<documentation>Value of an angle quantity provided in either degree-minute-second format or single value format.</documentation>
</annotation>
<choice>
<element ref="gml:angle"/>
<element ref="gml:dmsAngle"/>
</choice>
</complexType>
<!-- =========================================================== -->
<element name="angle" type="gml:MeasureType"/>
<!-- =========================================================== -->
<complexType name="AngleType">
<annotation>
<documentation>Value of an angle quantity recorded as a single number, with its units. Uses the MeasureType with the restriction that the unit of measure referenced by uom must be suitable for an angle, such as degrees or radians.</documentation>
</annotation>
<simpleContent>
<restriction base="gml:MeasureType"/>
</simpleContent>
</complexType>
<!-- =========================================================== -->
<element name="dmsAngle" type="gml:DMSAngleType"/>
<!-- =========================================================== -->
<complexType name="DMSAngleType">
<annotation>
<documentation>Angle value provided in degree-minute-second or degree-minute format.</documentation>
</annotation>
<sequence>
<element ref="gml:degrees"/>
<choice minOccurs="0">
<element ref="gml:decimalMinutes"/>
<sequence>
<element ref="gml:minutes"/>
<element ref="gml:seconds" minOccurs="0"/>
</sequence>
</choice>
</sequence>
</complexType>
<!-- =========================================================== -->
<element name="degrees" type="gml:DegreesType"/>
<!-- =========================================================== -->
<complexType name="DegreesType">
<annotation>
<documentation>Integer number of degrees, plus the angle direction. This element can be used for geographic Latitude and Longitude. For Latitude, the XML attribute direction can take the values "N" or "S", meaning North or South of the equator. For Longitude, direction can take the values "E" or "W", meaning East or West of the prime meridian. This element can also be used for other angles. In that case, the direction can take the values "+" or "-" (of SignType), in the specified rotational direction from a specified reference direction.</documentation>
</annotation>
<simpleContent>
<extension base="gml:DegreeValueType">
<attribute name="direction">
<simpleType>
<union>
<simpleType>
<restriction base="string">
<enumeration value="N"/>
<enumeration value="E"/>
<enumeration value="S"/>
<enumeration value="W"/>
</restriction>
</simpleType>
<simpleType>
<restriction base="gml:SignType"/>
</simpleType>
</union>
</simpleType>
</attribute>
</extension>
</simpleContent>
</complexType>
<!-- =========================================================== -->
<simpleType name="DegreeValueType">
<annotation>
<documentation>Integer number of degrees in a degree-minute-second or degree-minute angular value, without indication of direction.</documentation>
</annotation>
<restriction base="nonNegativeInteger">
<maxInclusive value="359"/>
</restriction>
</simpleType>
<!-- =========================================================== -->
<element name="decimalMinutes" type="gml:DecimalMinutesType"/>
<!-- =========================================================== -->
<simpleType name="DecimalMinutesType">
<annotation>
<documentation>Decimal number of arc-minutes in a degree-minute angular value.</documentation>
</annotation>
<restriction base="decimal">
<minInclusive value="0.00"/>
<maxExclusive value="60.00"/>
</restriction>
</simpleType>
<!-- =========================================================== -->
<element name="minutes" type="gml:ArcMinutesType"/>
<!-- =========================================================== -->
<simpleType name="ArcMinutesType">
<annotation>
<documentation>Integer number of arc-minutes in a degree-minute-second angular value.</documentation>
</annotation>
<restriction base="nonNegativeInteger">
<maxInclusive value="59"/>
</restriction>
</simpleType>
<!-- =========================================================== -->
<element name="seconds" type="gml:ArcSecondsType"/>
<!-- =========================================================== -->
<simpleType name="ArcSecondsType">
<annotation>
<documentation>Number of arc-seconds in a degree-minute-second angular value.</documentation>
</annotation>
<restriction base="decimal">
<minInclusive value="0.00"/>
<maxExclusive value="60.00"/>
</restriction>
</simpleType>
<!-- =========================================================== -->
</schema>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="http://www.opengis.net/gml" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:gml="http://www.opengis.net/gml" elementFormDefault="qualified" version="3.1.1">
<annotation>
<appinfo source="urn:opengis:specification:gml:schema-xsd:observation:3.1.1">observation.xsd</appinfo>
<documentation>Observation schema for GML 3.1
Copyright (c) 2002-2005 OGC, All Rights Reserved.
For conditions, see OGC Software Notice http://www.opengeospatial.org/about/?page=ipr</documentation>
</annotation>
<!-- =================================================================== -->
<!-- === includes and imports ============================================ -->
<include schemaLocation="feature.xsd"/>
<include schemaLocation="direction.xsd"/>
<include schemaLocation="valueObjects.xsd"/>
<!-- =================================================================== -->
<!-- =================== properties =================================== -->
<element name="using" type="gml:FeaturePropertyType">
<annotation>
<documentation>This element contains or points to a description of a sensor, instrument or procedure used for the observation</documentation>
</annotation>
</element>
<!-- =================================================================== -->
<element name="target" type="gml:TargetPropertyType">
<annotation>
<documentation>This element contains or points to the specimen, region or station which is the object of the observation</documentation>
</annotation>
</element>
<!-- =================================================================== -->
<element name="subject" type="gml:TargetPropertyType" substitutionGroup="gml:target">
<annotation>
<documentation>Synonym for target - common word used for photographs</documentation>
</annotation>
</element>
<!-- =================================================================== -->
<complexType name="TargetPropertyType">
<annotation>
<documentation>Container for an object representing the target or subject of an observation.</documentation>
</annotation>
<sequence minOccurs="0">
<choice>
<element ref="gml:_Feature"/>
<element ref="gml:_Geometry"/>
</choice>
</sequence>
<attributeGroup ref="gml:AssociationAttributeGroup"/>
</complexType>
<!-- =================================================================== -->
<element name="resultOf" type="gml:AssociationType">
<annotation>
<documentation>The result of the observation: an image, external object, etc</documentation>
</annotation>
</element>
<!-- =================================================================== -->
<!-- ===================== Features =========================== -->
<element name="Observation" type="gml:ObservationType" substitutionGroup="gml:_Feature"/>
<!-- =========================================================== -->
<complexType name="ObservationType">
<complexContent>
<extension base="gml:AbstractFeatureType">
<sequence>
<element ref="gml:validTime"/>
<element ref="gml:using" minOccurs="0"/>
<element ref="gml:target" minOccurs="0"/>
<element ref="gml:resultOf"/>
</sequence>
</extension>
</complexContent>
</complexType>
<!-- =========================================================== -->
<element name="DirectedObservation" type="gml:DirectedObservationType" substitutionGroup="gml:Observation"/>
<!-- =========================================================== -->
<complexType name="DirectedObservationType">
<complexContent>
<extension base="gml:ObservationType">
<sequence>
<element ref="gml:direction"/>
</sequence>
</extension>
</complexContent>
</complexType>
<!-- =========================================================== -->
<element name="DirectedObservationAtDistance" type="gml:DirectedObservationAtDistanceType" substitutionGroup="gml:DirectedObservation"/>
<!-- =========================================================== -->
<complexType name="DirectedObservationAtDistanceType">
<complexContent>
<extension base="gml:DirectedObservationType">
<sequence>
<element name="distance" type="gml:MeasureType"/>
</sequence>
</extension>
</complexContent>
</complexType>
<!-- =========================================================== -->
</schema>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="http://www.opengis.net/gml" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:gml="http://www.opengis.net/gml" elementFormDefault="qualified" version="3.1.1" xml:lang="en">
<annotation>
<appinfo source="urn:opengis:specification:gml:schema-xsd:referenceSystems:3.1.1"/>
<documentation>How to encode reference system definitions. Builds on several other parts of GML 3 to encode the data needed to define reference systems.
Copyright (c) 2002-2005 OGC, All Rights Reserved. For conditions, see OGC Software Notice http://www.opengeospatial.org/about/?page=ipr
This schema encodes the Reference System (RS_) package of the extended UML Model for OGC Abstract Specification Topic 2: Spatial Referencing by Coordinates. That UML model is adapted from ISO 19111 - Spatial referencing by coordinates, as described in Annex C of Topic 2. The SC_CRS class is also encoded here, to eliminate the (circular) references from coordinateOperations.xsd to coordinateReferenceSystems.xsd. The RS_SpatialReferenceSystemUsingGeographicIdentifier class is not encoded, since it is not applicable to coordinate positions. The CI_Citation class is not directly encoded, since such information can be included as metaDataProperty elements which are optionally allowed. A modified version of the EX_Extent (DataType) class from ISO 19115 is currently encoded here, using GML 3 schema types. (A more extensive version of the EX_Extent package might be XML encoded in the future, probably in a separate extent.xsd schema.)
Caution: The CRS package in GML 3.1 and GML 3.1.1 is preliminary, and is expected to undergo some modifications that are not backward compatible during the development of GML 3.2 (ISO 19136). The GML 3.2 package will implement the model described in the revised version of ISO 19111.</documentation>
</annotation>
<!-- ======================================================
includes and imports
====================================================== -->
<include schemaLocation="geometryBasic2d.xsd"/>
<include schemaLocation="temporal.xsd"/>
<!-- ======================================================
elements and types
====================================================== -->
<element name="_ReferenceSystem" type="gml:AbstractReferenceSystemType" abstract="true" substitutionGroup="gml:Definition"/>
<!-- =================================================== -->
<complexType name="AbstractReferenceSystemBaseType" abstract="true">
<annotation>
<documentation>Basic encoding for reference system objects, simplifying and restricting the DefinitionType as needed.</documentation>
</annotation>
<complexContent>
<restriction base="gml:DefinitionType">
<sequence>
<element ref="gml:metaDataProperty" minOccurs="0" maxOccurs="unbounded"/>
<element ref="gml:srsName"/>
</sequence>
<attribute ref="gml:id" use="required"/>
</restriction>
</complexContent>
</complexType>
<!-- =================================================== -->
<element name="srsName" type="gml:CodeType" substitutionGroup="gml:name">
<annotation>
<documentation>The name by which this reference system is identified.</documentation>
</annotation>
</element>
<!-- =================================================== -->
<complexType name="AbstractReferenceSystemType" abstract="true">
<annotation>
<documentation>Description of a spatial and/or temporal reference system used by a dataset.</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractReferenceSystemBaseType">
<sequence>
<element ref="gml:srsID" minOccurs="0" maxOccurs="unbounded">
<annotation>
<documentation>Set of alterative identifications of this reference system. The first srsID, if any, is normally the primary identification code, and any others are aliases.</documentation>
</annotation>
</element>
<element ref="gml:remarks" minOccurs="0">
<annotation>
<documentation>Comments on or information about this reference system, including source information.</documentation>
</annotation>
</element>
<element ref="gml:validArea" minOccurs="0"/>
<element ref="gml:scope" minOccurs="0"/>
</sequence>
</extension>
</complexContent>
</complexType>
<!-- =================================================== -->
<element name="srsID" type="gml:IdentifierType">
<annotation>
<documentation>An identification of a reference system.</documentation>
</annotation>
</element>
<!-- =================================================== -->
<element name="referenceSystemRef" type="gml:ReferenceSystemRefType"/>
<!-- =================================================== -->
<complexType name="ReferenceSystemRefType">
<annotation>
<documentation>Association to a reference system, either referencing or containing the definition of that reference system.</documentation>
</annotation>
<sequence minOccurs="0">
<element ref="gml:_ReferenceSystem"/>
</sequence>
<attributeGroup ref="gml:AssociationAttributeGroup"/>
</complexType>
<!-- =================================================== -->
<element name="_CRS" type="gml:AbstractReferenceSystemType" abstract="true" substitutionGroup="gml:_ReferenceSystem">
<annotation>
<documentation>Abstract coordinate reference system, usually defined by a coordinate system and a datum. This abstract complexType shall not be used, extended, or restricted, in an Application Schema, to define a concrete subtype with a meaning equivalent to a concrete subtype specified in this document.</documentation>
</annotation>
</element>
<!-- =================================================== -->
<element name="crsRef" type="gml:CRSRefType"/>
<!-- =================================================== -->
<complexType name="CRSRefType">
<annotation>
<documentation>Association to a CRS abstract coordinate reference system, either referencing or containing the definition of that CRS.</documentation>
</annotation>
<sequence minOccurs="0">
<element ref="gml:_CRS"/>
</sequence>
<attributeGroup ref="gml:AssociationAttributeGroup"/>
</complexType>
<!-- =================================================== -->
<!-- =================================================== -->
<complexType name="IdentifierType">
<annotation>
<documentation>An identification of a CRS object. The first use of the IdentifierType for an object, if any, is normally the primary identification code, and any others are aliases.</documentation>
</annotation>
<sequence>
<element ref="gml:name">
<annotation>
<documentation>The code or name for this Identifier, often from a controlled list or pattern defined by a code space. The optional codeSpace attribute is normally included to identify or reference a code space within which one or more codes are defined. This code space is often defined by some authority organization, where one organization may define multiple code spaces. The range and format of each Code Space identifier is defined by that code space authority. Information about that code space authority can be included as metaDataProperty elements which are optionally allowed in all CRS objects.</documentation>
</annotation>
</element>
<element ref="gml:version" minOccurs="0"/>
<element ref="gml:remarks" minOccurs="0">
<annotation>
<documentation>Remarks about this code or alias.</documentation>
</annotation>
</element>
</sequence>
</complexType>
<!-- =================================================== -->
<element name="version" type="string">
<annotation>
<documentation>Identifier of the version of the associated codeSpace or code, as specified by the codeSpace or code authority. This version is included only when the "code" or "codeSpace" uses versions. When appropriate, the version is identified by the effective date, coded using ISO 8601 date format.</documentation>
</annotation>
</element>
<!-- =================================================== -->
<element name="remarks" type="gml:StringOrRefType">
<annotation>
<documentation>Information about this object or code. Contains text or refers to external text.</documentation>
</annotation>
</element>
<!-- =================================================== -->
<element name="scope" type="string">
<annotation>
<documentation>Description of domain of usage, or limitations of usage, for which this CRS object is valid.</documentation>
</annotation>
</element>
<!-- =================================================== -->
<element name="validArea" type="gml:ExtentType">
<annotation>
<documentation>Area or region in which this CRS object is valid.</documentation>
</annotation>
</element>
<!-- =================================================== -->
<complexType name="ExtentType">
<annotation>
<documentation>Information about the spatial, vertical, and/or temporal extent of a reference system object. Constraints: At least one of the elements "description", "boundingBox", "boundingPolygon", "verticalExtent", and temporalExtent" must be included, but more that one can be included when appropriate. Furthermore, more than one "boundingBox", "boundingPolygon", "verticalExtent", and/or temporalExtent" element can be included, with more than one meaning the union of the individual domains.</documentation>
</annotation>
<sequence>
<element ref="gml:description" minOccurs="0">
<annotation>
<documentation>Description of spatial and/or temporal extent of this object.</documentation>
</annotation>
</element>
<choice>
<annotation>
<documentation>Geographic domain of this reference system object.</documentation>
</annotation>
<element ref="gml:boundingBox" minOccurs="0" maxOccurs="unbounded">
<annotation>
<documentation>Unordered list of bounding boxes (or envelopes) whose union describes the spatial domain of this object.</documentation>
</annotation>
</element>
<element ref="gml:boundingPolygon" minOccurs="0" maxOccurs="unbounded">
<annotation>
<documentation>Unordered list of bounding polygons whose union describes the spatial domain of this object.</documentation>
</annotation>
</element>
</choice>
<element ref="gml:verticalExtent" minOccurs="0" maxOccurs="unbounded">
<annotation>
<documentation>Unordered list of vertical intervals whose union describes the spatial domain of this object.</documentation>
</annotation>
</element>
<element ref="gml:temporalExtent" minOccurs="0" maxOccurs="unbounded">
<annotation>
<documentation>Unordered list of time periods whose union describes the spatial domain of this object.</documentation>
</annotation>
</element>
</sequence>
</complexType>
<!-- =================================================== -->
<element name="boundingBox" type="gml:EnvelopeType">
<annotation>
<documentation>A bounding box (or envelope) defining the spatial domain of this object.</documentation>
</annotation>
</element>
<!-- =================================================== -->
<element name="boundingPolygon" type="gml:PolygonType">
<annotation>
<documentation>A bounding polygon defining the horizontal spatial domain of this object.</documentation>
</annotation>
</element>
<!-- =================================================== -->
<element name="verticalExtent" type="gml:EnvelopeType">
<annotation>
<documentation>An interval defining the vertical spatial domain of this object.</documentation>
</annotation>
</element>
<!-- =================================================== -->
<element name="temporalExtent" type="gml:TimePeriodType">
<annotation>
<documentation>A time period defining the temporal domain of this object.</documentation>
</annotation>
</element>
<!-- =================================================== -->
</schema>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="http://www.opengis.net/gml" xmlns:gml="http://www.opengis.net/gml" xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" version="3.1.1">
<annotation>
<appinfo source="urn:opengis:specification:gml:schema-xsd:temporal:3.1.1"/>
<documentation xml:lang="en">The temporal schema for GML 3.1 provides constructs for handling time-varying spatial data.
This schema reflects a partial implementation of the model described in ISO 19108:2002.
Copyright (c) 2002-2005 OGC, All Rights Reserved.
For conditions, see OGC Software Notice http://www.opengeospatial.org/about/?page=ipr</documentation>
</annotation>
<!-- ================================================================== -->
<include schemaLocation="gmlBase.xsd"/>
<!-- ================================================================== -->
<!-- ==== Time Object ===== -->
<!-- ================================================================== -->
<element name="_TimeObject" type="gml:AbstractTimeObjectType" abstract="true" substitutionGroup="gml:_GML">
<annotation>
<documentation xml:lang="en">This abstract element acts as the head of the substitution group for temporal primitives and complexes.</documentation>
</annotation>
</element>
<!-- ===================================== -->
<complexType name="AbstractTimeObjectType" abstract="true">
<annotation>
<documentation xml:lang="en">The abstract supertype for temporal objects.</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractGMLType"/>
</complexContent>
</complexType>
<!-- ================================================================== -->
<!-- ==== Time Primitive ===== -->
<!-- ================================================================== -->
<element name="_TimePrimitive" type="gml:AbstractTimePrimitiveType" abstract="true" substitutionGroup="gml:_TimeObject">
<annotation>
<documentation xml:lang="en">This abstract element acts as the head of the substitution group for temporal primitives.</documentation>
</annotation>
</element>
<!-- ===================================== -->
<complexType name="AbstractTimePrimitiveType" abstract="true">
<annotation>
<documentation xml:lang="en">The abstract supertype for temporal primitives.</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractTimeObjectType">
<sequence>
<element name="relatedTime" type="gml:RelatedTimeType" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</extension>
</complexContent>
</complexType>
<!-- ================================================================== -->
<complexType name="TimePrimitivePropertyType">
<sequence minOccurs="0">
<element ref="gml:_TimePrimitive"/>
</sequence>
<attributeGroup ref="gml:AssociationAttributeGroup"/>
</complexType>
<!-- ================================================================== -->
<complexType name="RelatedTimeType">
<complexContent>
<extension base="gml:TimePrimitivePropertyType">
<attribute name="relativePosition">
<simpleType>
<restriction base="string">
<enumeration value="Before"/>
<enumeration value="After"/>
<enumeration value="Begins"/>
<enumeration value="Ends"/>
<enumeration value="During"/>
<enumeration value="Equals"/>
<enumeration value="Contains"/>
<enumeration value="Overlaps"/>
<enumeration value="Meets"/>
<enumeration value="OverlappedBy"/>
<enumeration value="MetBy"/>
<enumeration value="BegunBy"/>
<enumeration value="EndedBy"/>
</restriction>
</simpleType>
</attribute>
</extension>
</complexContent>
</complexType>
<!-- ================================================================== -->
<!-- ==== Time Complex ===== -->
<!-- ================================================================== -->
<element name="_TimeComplex" type="gml:AbstractTimeComplexType" abstract="true" substitutionGroup="gml:_TimeObject">
<annotation>
<documentation xml:lang="en">This abstract element acts as the head of the substitution group for temporal complexes.
Temporal complex is an aggregation of temporal primitives as its components,
represents a temporal geometric complex and a temporal topology complex.
N.B. Temporal geometric complex is not defined in this schema.</documentation>
</annotation>
</element>
<!-- ================================================================== -->
<complexType name="AbstractTimeComplexType" abstract="true">
<annotation>
<documentation xml:lang="en">The abstract supertype for temporal complexes.</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractTimeObjectType"/>
</complexContent>
</complexType>
<!-- ================================================================== -->
<!-- ==== Time Geometric Primitive ===== -->
<!-- ================================================================== -->
<element name="_TimeGeometricPrimitive" type="gml:AbstractTimeGeometricPrimitiveType" abstract="true" substitutionGroup="gml:_TimePrimitive">
<annotation>
<documentation xml:lang="en">This abstract element acts as the head of the substitution group for temporal geometric primitives.</documentation>
</annotation>
</element>
<!-- ===================================== -->
<complexType name="AbstractTimeGeometricPrimitiveType" abstract="true">
<annotation>
<documentation xml:lang="en">The abstract supertype for temporal geometric primitives.
A temporal geometry must be associated with a temporal reference system via URI.
The Gregorian calendar with UTC is the default reference system, following ISO
8601. Other reference systems in common use include the GPS calendar and the
Julian calendar.</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractTimePrimitiveType">
<attribute name="frame" type="anyURI" use="optional" default="#ISO-8601"/>
</extension>
</complexContent>
</complexType>
<!-- ================================================================== -->
<complexType name="TimeGeometricPrimitivePropertyType">
<sequence minOccurs="0">
<element ref="gml:_TimeGeometricPrimitive"/>
</sequence>
<attributeGroup ref="gml:AssociationAttributeGroup"/>
</complexType>
<!-- ================================================================== -->
<!-- ==== Time Instant ===== -->
<!-- ================================================================== -->
<element name="TimeInstant" type="gml:TimeInstantType" substitutionGroup="gml:_TimeGeometricPrimitive"/>
<!-- ===================================== -->
<complexType name="TimeInstantType">
<annotation>
<documentation>Omit back-pointers begunBy, endedBy.</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractTimeGeometricPrimitiveType">
<sequence>
<element ref="gml:timePosition"/>
</sequence>
</extension>
</complexContent>
</complexType>
<!-- ================================================================== -->
<complexType name="TimeInstantPropertyType">
<sequence minOccurs="0">
<element ref="gml:TimeInstant"/>
</sequence>
<attributeGroup ref="gml:AssociationAttributeGroup"/>
</complexType>
<!-- ================================================================== -->
<!-- ==== Time Period ===== -->
<!-- ================================================================== -->
<element name="TimePeriod" type="gml:TimePeriodType" substitutionGroup="gml:_TimeGeometricPrimitive"/>
<!-- ===================================== -->
<complexType name="TimePeriodType">
<complexContent>
<extension base="gml:AbstractTimeGeometricPrimitiveType">
<sequence>
<choice>
<element name="beginPosition" type="gml:TimePositionType"/>
<element name="begin" type="gml:TimeInstantPropertyType"/>
</choice>
<choice>
<element name="endPosition" type="gml:TimePositionType"/>
<element name="end" type="gml:TimeInstantPropertyType"/>
</choice>
<group ref="gml:timeLength" minOccurs="0"/>
</sequence>
</extension>
</complexContent>
</complexType>
<!-- ================================================================== -->
<complexType name="TimePeriodPropertyType">
<sequence minOccurs="0">
<element ref="gml:TimePeriod"/>
</sequence>
<attributeGroup ref="gml:AssociationAttributeGroup"/>
</complexType>
<!-- ================================================================== -->
<!-- ==== duration & interval ===== -->
<!-- ================================================================== -->
<group name="timeLength">
<annotation>
<documentation>This model group is provided as an alternative to the abstract susbstitutionGroup head _timeLength.
ISO 19136 comment 411</documentation>
</annotation>
<choice>
<element ref="gml:duration"/>
<element ref="gml:timeInterval"/>
</choice>
</group>
<!-- ================================================================== -->
<element name="duration" type="duration">
<annotation>
<documentation xml:lang="en">This element is an instance of the primitive xsd:duration simple type to
enable use of the ISO 8601 syntax for temporal length (e.g. P5DT4H30M).
It is a valid subtype of TimeDurationType according to section 3.14.6,
rule 2.2.4 in XML Schema, Part 1.</documentation>
</annotation>
</element>
<!-- ================================================================== -->
<element name="timeInterval" type="gml:TimeIntervalLengthType">
<annotation>
<documentation>This element is a valid subtype of TimeDurationType
according to section 3.14.6, rule 2.2.4 in XML Schema, Part 1.</documentation>
</annotation>
</element>
<!-- ===================================== -->
<complexType name="TimeIntervalLengthType" final="#all">
<annotation>
<documentation xml:lang="en">This type extends the built-in xsd:decimal simple type to allow floating-point
values for temporal length. According to the ISO 11404 model you have to use
positiveInteger together with appropriate values for radix and factor. The
resolution of the time interval is to one radix ^(-factor) of the specified
time unit (e.g. unit="second", radix="10", factor="3" specifies a resolution
of milliseconds). It is a subtype of TimeDurationType.</documentation>
</annotation>
<simpleContent>
<extension base="decimal">
<attribute name="unit" type="gml:TimeUnitType" use="required"/>
<attribute name="radix" type="positiveInteger" use="optional"/>
<attribute name="factor" type="integer" use="optional"/>
</extension>
</simpleContent>
</complexType>
<!-- ================================================================== -->
<simpleType name="TimeUnitType">
<annotation>
<documentation xml:lang="en">Standard units for measuring time intervals (see ISO 31-1).</documentation>
</annotation>
<union>
<simpleType>
<restriction base="string">
<enumeration value="year"/>
<enumeration value="day"/>
<enumeration value="hour"/>
<enumeration value="minute"/>
<enumeration value="second"/>
</restriction>
</simpleType>
<simpleType>
<restriction base="string">
<pattern value="other:\w{2,}"/>
</restriction>
</simpleType>
</union>
</simpleType>
<!-- ================================================================== -->
<!-- ==== Time Position ===== -->
<!-- ================================================================== -->
<element name="timePosition" type="gml:TimePositionType">
<annotation>
<documentation>Direct representation of a temporal position</documentation>
</annotation>
</element>
<!-- ================================================================== -->
<complexType name="TimePositionType" final="#all">
<annotation>
<documentation xml:lang="en">Direct representation of a temporal position.
Indeterminate time values are also allowed, as described in ISO 19108. The indeterminatePosition
attribute can be used alone or it can qualify a specific value for temporal position (e.g. before
2002-12, after 1019624400).
For time values that identify position within a calendar, the calendarEraName attribute provides
the name of the calendar era to which the date is referenced (e.g. the Meiji era of the Japanese calendar).</documentation>
</annotation>
<simpleContent>
<extension base="gml:TimePositionUnion">
<attribute name="frame" type="anyURI" use="optional" default="#ISO-8601"/>
<attribute name="calendarEraName" type="string" use="optional"/>
<attribute name="indeterminatePosition" type="gml:TimeIndeterminateValueType" use="optional"/>
</extension>
</simpleContent>
</complexType>
<!-- ================================================================== -->
<simpleType name="TimePositionUnion">
<annotation>
<documentation xml:lang="en">The ISO 19108:2002 hierarchy of subtypes for temporal position are collapsed
by defining a union of XML Schema simple types for indicating temporal position relative
to a specific reference system.
Dates and dateTime may be indicated with varying degrees of precision.
dateTime by itself does not allow right-truncation, except for fractions of seconds.
When used with non-Gregorian calendars based on years, months, days,
the same lexical representation should still be used, with leading zeros added if the
year value would otherwise have fewer than four digits.
An ordinal position may be referenced via URI identifying the definition of an ordinal era.
A time coordinate value is indicated as a decimal (e.g. UNIX time, GPS calendar).</documentation>
</annotation>
<union memberTypes="gml:CalDate time dateTime anyURI decimal"/>
</simpleType>
<!-- ================================================================== -->
<simpleType name="CalDate">
<annotation>
<documentation xml:lang="en">Calendar dates may be indicated with varying degrees of precision,
using year, year-month, date.
When used with non-Gregorian calendars based on years, months, days,
the same lexical representation should still be used, with leading zeros added if the
year value would otherwise have fewer than four digits.
time is used for a position that recurs daily (see clause 5.4.4.2 of ISO 19108:2002).</documentation>
</annotation>
<union memberTypes="date gYearMonth gYear"/>
</simpleType>
<!-- ================================================================== -->
<simpleType name="TimeIndeterminateValueType">
<annotation>
<documentation xml:lang="en">This enumerated data type specifies values for indeterminate positions.</documentation>
</annotation>
<restriction base="string">
<enumeration value="after"/>
<enumeration value="before"/>
<enumeration value="now"/>
<enumeration value="unknown"/>
</restriction>
</simpleType>
<!-- ================================================================== -->
<!-- ==== Convenience properties ==== -->
<!-- ================================================================== -->
<element name="validTime" type="gml:TimePrimitivePropertyType"/>
<!-- ===================================== -->
</schema>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="http://www.opengis.net/gml" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:gml="http://www.opengis.net/gml" elementFormDefault="qualified" version="3.1.1">
<annotation>
<appinfo source="urn:opengis:specification:gml:schema-xsd:temporalReferenceSystems:3.1.1"/>
<documentation xml:lang="en">The Temporal Reference Systems schema for GML 3.1 provides constructs for handling various styles of temporal reference system.
This schema reflects a partial implementation of the model described in ISO 19108:2002.
Copyright (c) 2002-2005 OGC, All Rights Reserved.
For conditions, see OGC Software Notice http://www.opengeospatial.org/about/?page=ipr</documentation>
</annotation>
<!-- ================================================================== -->
<include schemaLocation="temporalTopology.xsd"/>
<include schemaLocation="dictionary.xsd"/>
<!-- ================================================================== -->
<!-- == Time Reference System == -->
<!-- ================================================================== -->
<element name="_TimeReferenceSystem" type="gml:AbstractTimeReferenceSystemType" abstract="true" substitutionGroup="gml:Definition">
<annotation>
<documentation>Abstract element serves primarily as the head of a substitution group for temporal reference systems.</documentation>
</annotation>
</element>
<!-- ===================================== -->
<complexType name="AbstractTimeReferenceSystemType" abstract="true">
<annotation>
<documentation xml:lang="en">A value in the time domain is measured relative to a temporal reference system. Common
types of reference systems include calendars, ordinal temporal reference systems, and
temporal coordinate systems (time elapsed since some epoch, e.g. UNIX time).</documentation>
</annotation>
<complexContent>
<extension base="gml:DefinitionType">
<sequence>
<element name="domainOfValidity" type="string" minOccurs="0"/>
</sequence>
</extension>
</complexContent>
</complexType>
<!-- ================================================================== -->
<!-- == Time Coordinate System == -->
<!-- ================================================================== -->
<element name="TimeCoordinateSystem" type="gml:TimeCoordinateSystemType" substitutionGroup="gml:_TimeReferenceSystem"/>
<!-- ===================================== -->
<complexType name="TimeCoordinateSystemType">
<annotation>
<documentation xml:lang="en">A temporal coordinate system is based on a continuous interval scale defined in terms of a single time interval.</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractTimeReferenceSystemType">
<sequence>
<choice>
<element name="originPosition" type="gml:TimePositionType"/>
<element name="origin" type="gml:TimeInstantPropertyType"/>
</choice>
<element name="interval" type="gml:TimeIntervalLengthType"/>
</sequence>
</extension>
</complexContent>
</complexType>
<!-- ================================================================== -->
<!-- == Time Ordinal System == -->
<!-- ================================================================== -->
<element name="TimeOrdinalReferenceSystem" type="gml:TimeOrdinalReferenceSystemType" substitutionGroup="gml:_TimeReferenceSystem"/>
<!-- ===================================== -->
<complexType name="TimeOrdinalReferenceSystemType">
<annotation>
<documentation xml:lang="en">In an ordinal reference system the order of events in time can be well
established, but the magnitude of the intervals between them can not be
accurately determined (e.g. a stratigraphic sequence).</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractTimeReferenceSystemType">
<sequence>
<element name="component" type="gml:TimeOrdinalEraPropertyType" maxOccurs="unbounded"/>
</sequence>
</extension>
</complexContent>
</complexType>
<!-- ================================================================== -->
<element name="TimeOrdinalEra" type="gml:TimeOrdinalEraType"/>
<!-- ===================================== -->
<complexType name="TimeOrdinalEraType">
<annotation>
<documentation xml:lang="en">Ordinal temporal reference systems are often hierarchically structured
such that an ordinal era at a given level of the hierarchy includes a
sequence of shorter, coterminous ordinal eras. This captured using the member/group properties.
Note that in this schema, TIme Ordinal Era is patterned on TimeEdge, which is a variation from ISO 19108.
This is in order to fulfill the requirements of ordinal reference systems based on eras delimited by
named points or nodes, which are common in geology, archeology, etc.
This change is subject of a change proposal to ISO</documentation>
</annotation>
<complexContent>
<extension base="gml:DefinitionType">
<sequence>
<element name="relatedTime" type="gml:RelatedTimeType" minOccurs="0" maxOccurs="unbounded"/>
<element name="start" type="gml:TimeNodePropertyType"/>
<element name="end" type="gml:TimeNodePropertyType"/>
<element name="extent" type="gml:TimePeriodPropertyType" minOccurs="0"/>
<element name="member" type="gml:TimeOrdinalEraPropertyType" minOccurs="0" maxOccurs="unbounded">
<annotation>
<documentation>An Era may be composed of several member Eras. The "member" element implements the association to the Era at the next level down the hierarchy. "member" follows the standard GML property pattern whereby its (complex) value may be either described fully inline, or may be the target of a link carried on the member element and described fully elsewhere, either in the same document or from another service.</documentation>
</annotation>
</element>
<element name="group" type="gml:ReferenceType" minOccurs="0">
<annotation>
<documentation>In a particular Time System, an Era may be a member of a group. The "group" element implements the back-pointer to the Era at the next level up in the hierarchy.
If the hierarchy is represented by describing the nested components fully in the their nested position inside "member" elements, then the parent can be easily inferred, so the group property is unnecessary.
However, if the hierarchy is represented by links carried on the "member" property elements, pointing to Eras described fully elsewhere, then it may be useful for a child (member) era to carry an explicit pointer back to its parent (group) Era.</documentation>
</annotation>
</element>
</sequence>
</extension>
</complexContent>
</complexType>
<!-- ================================================================== -->
<complexType name="TimeOrdinalEraPropertyType">
<sequence minOccurs="0">
<element ref="gml:TimeOrdinalEra"/>
</sequence>
<attributeGroup ref="gml:AssociationAttributeGroup"/>
</complexType>
<!-- ================================================================== -->
<!-- == Calendar == -->
<!-- ================================================================== -->
<element name="TimeCalendar" type="gml:TimeCalendarType" substitutionGroup="gml:_TimeReferenceSystem"/>
<!-- ===================================== -->
<complexType name="TimeCalendarType">
<annotation>
<documentation xml:lang="en">A calendar is a discrete temporal reference system
that provides a basis for defining temporal position to a resolution of one day.
A single calendar may reference more than one calendar era.</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractTimeReferenceSystemType">
<sequence>
<element name="referenceFrame" type="gml:TimeCalendarEraPropertyType" maxOccurs="unbounded">
<annotation>
<documentation>Link to the CalendarEras that it uses as a reference for dating.</documentation>
</annotation>
</element>
</sequence>
</extension>
</complexContent>
</complexType>
<!-- ================================================================== -->
<complexType name="TimeCalendarPropertyType">
<sequence minOccurs="0">
<element ref="gml:TimeCalendar"/>
</sequence>
<attributeGroup ref="gml:AssociationAttributeGroup"/>
</complexType>
<!-- ================================================================== -->
<element name="TimeCalendarEra" type="gml:TimeCalendarEraType" substitutionGroup="gml:Definition"/>
<!-- ===================================== -->
<complexType name="TimeCalendarEraType">
<annotation>
<documentation xml:lang="en">In every calendar, years are numbered relative to the date of a
reference event that defines a calendar era.
In this implementation, we omit the back-pointer "datingSystem".</documentation>
</annotation>
<complexContent>
<extension base="gml:DefinitionType">
<sequence>
<element name="referenceEvent" type="gml:StringOrRefType">
<annotation>
<documentation>Name or description of a mythical or historic event which fixes the position of the base scale of the calendar era.</documentation>
</annotation>
</element>
<element name="referenceDate" type="date" default="0001-01-01" minOccurs="0">
<annotation>
<documentation>Date of the referenceEvent expressed as a date in the given calendar.
In most calendars, this date is the origin (i.e., the first day) of the scale, but this is not always true.</documentation>
</annotation>
</element>
<element name="julianReference" type="decimal">
<annotation>
<documentation>Julian date that corresponds to the reference date.
The Julian day numbering system is a temporal coordinate system that has an
origin earlier than any known calendar,
at noon on 1 January 4713 BC in the Julian proleptic calendar.
The Julian day number is an integer value;
the Julian date is a decimal value that allows greater resolution.
Transforming calendar dates to and from Julian dates provides a
relatively simple basis for transforming dates from one calendar to another.</documentation>
</annotation>
</element>
<element name="epochOfUse" type="gml:TimePeriodPropertyType">
<annotation>
<documentation>Period for which the calendar era was used as a basis for dating.</documentation>
</annotation>
</element>
</sequence>
</extension>
</complexContent>
</complexType>
<!-- ================================================================== -->
<complexType name="TimeCalendarEraPropertyType">
<sequence minOccurs="0">
<element ref="gml:TimeCalendarEra"/>
</sequence>
<attributeGroup ref="gml:AssociationAttributeGroup"/>
</complexType>
<!-- ================================================================== -->
<!-- == Clock == -->
<!-- ================================================================== -->
<element name="TimeClock" type="gml:TimeClockType" substitutionGroup="gml:_TimeReferenceSystem"/>
<!-- ===================================== -->
<complexType name="TimeClockType" final="#all">
<annotation>
<documentation xml:lang="en">A clock provides a basis for defining temporal position within a day.
A clock must be used with a calendar in order to provide a complete description of a temporal position
within a specific day.</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractTimeReferenceSystemType">
<sequence>
<element name="referenceEvent" type="gml:StringOrRefType">
<annotation>
<documentation>Name or description of an event, such as solar noon or sunrise,
which fixes the position of the base scale of the clock.</documentation>
</annotation>
</element>
<element name="referenceTime" type="time">
<annotation>
<documentation>time of day associated with the reference event expressed as
a time of day in the given clock. The reference time is usually the origin of the clock scale.</documentation>
</annotation>
</element>
<element name="utcReference" type="time">
<annotation>
<documentation>24 hour local or UTC time that corresponds to the reference time.</documentation>
</annotation>
</element>
<element name="dateBasis" type="gml:TimeCalendarPropertyType" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</extension>
</complexContent>
</complexType>
<!-- ================================================================== -->
<complexType name="TimeClockPropertyType">
<sequence minOccurs="0">
<element ref="gml:TimeClock"/>
</sequence>
<attributeGroup ref="gml:AssociationAttributeGroup"/>
</complexType>
<!-- ================================================================== -->
</schema>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="http://www.opengis.net/gml" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" elementFormDefault="qualified" version="3.1.1">
<annotation>
<appinfo source="urn:opengis:specification:gml:schema-xsd:temporalTopology:3.1.1"/>
<documentation xml:lang="en">The temporal topology schema for ISO19136 provides constructs for handling topological complexes and
temporal feature relationships.
Temporal geometric characteristics of features are represented as instants and periods.
While, temporal context of features that does not relate to the position of time is described as connectivity relationships
among instants and periods. These relationships are called temporal topology as they do not change in time,
as long as the direction of time does not change.
It is used effectively in the case of describing a family tree expressing evolution of species, an ecological cycle,
a lineage of lands or buildings, or a history of separation and merger of administrative boundaries.
This schema reflects a partial yet consistent implementation of the model described in ISO 19108:2002.
Copyright (c) 2002-2005 OGC, All Rights Reserved.
For conditions, see OGC Software Notice http://www.opengeospatial.org/about/?page=ipr</documentation>
</annotation>
<!-- ===================================== -->
<include schemaLocation="temporal.xsd"/>
<!-- ===================================== -->
<!-- ================================================================== -->
<!-- == TimeTopologyComplex == -->
<!-- ================================================================== -->
<element name="TimeTopologyComplex" type="gml:TimeTopologyComplexType" substitutionGroup="gml:_TimeComplex">
<annotation>
<documentation xml:lang="en">This element represents temporal topology complex. It shall be the connected acyclic directed graph composed of time nodes and time edges.</documentation>
</annotation>
</element>
<!-- ================================================================== -->
<complexType name="TimeTopologyComplexType">
<annotation>
<documentation xml:lang="en">A temporal topology complex.</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractTimeComplexType">
<sequence>
<element name="primitive" type="gml:TimeTopologyPrimitivePropertyType" maxOccurs="unbounded"/>
</sequence>
</extension>
</complexContent>
</complexType>
<!-- ================================================================== -->
<complexType name="TimeTopologyComplexPropertyType">
<annotation>
<documentation>A time topology complex property can either be any time topology complex element
encapsulated in an element of this type or an XLink reference to a remote time topology complex element
(where remote includes elements located elsewhere in the same document).
Note that either the reference or the contained element must be given, but not both or none.</documentation>
</annotation>
<sequence minOccurs="0">
<element ref="gml:TimeTopologyComplex"/>
</sequence>
<attributeGroup ref="gml:AssociationAttributeGroup"/>
</complexType>
<!-- ================================================================== -->
<!-- == TimeTopologyPrimitive == -->
<!-- ================================================================== -->
<element name="_TimeTopologyPrimitive" type="gml:AbstractTimeTopologyPrimitiveType" abstract="true" substitutionGroup="gml:_TimePrimitive">
<annotation>
<documentation xml:lang="en">This abstract element acts as the head of the substitution group for temporal topology primitives.</documentation>
</annotation>
</element>
<!-- ================================================================== -->
<complexType name="AbstractTimeTopologyPrimitiveType" abstract="true">
<annotation>
<documentation xml:lang="en">The element "complex" carries a reference to the complex containing this primitive.</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractTimePrimitiveType">
<sequence>
<element name="complex" type="gml:ReferenceType" minOccurs="0"/>
</sequence>
</extension>
</complexContent>
</complexType>
<!-- ================================================================== -->
<complexType name="TimeTopologyPrimitivePropertyType">
<annotation>
<documentation>A time topology primitive property can either hold any time topology complex element
eor carry an XLink reference to a remote time topology complex element
(where remote includes elements located elsewhere in the same document).
Note that either the reference or the contained element must be given, but not both or none.</documentation>
</annotation>
<sequence minOccurs="0">
<element ref="gml:_TimeTopologyPrimitive"/>
</sequence>
<attributeGroup ref="gml:AssociationAttributeGroup"/>
</complexType>
<!-- ================================================================== -->
<!-- ======= TimeNode ======= -->
<!-- ================================================================== -->
<element name="TimeNode" type="gml:TimeNodeType" substitutionGroup="gml:_TimeTopologyPrimitive">
<annotation>
<documentation xml:lang="en">"TimeNode" is a zero dimensional temporal topology primitive,
expresses a position in topological time, and is a start and an end of time edge, which represents states of time.
Time node may be isolated. However, it cannot describe the ordering relationships with other primitives.
An isolated node may not be an element of any temporal topology complex.</documentation>
</annotation>
</element>
<!-- ================================================================== -->
<complexType name="TimeNodeType">
<annotation>
<documentation xml:lang="en">Type declaration of the element "TimeNode".</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractTimeTopologyPrimitiveType">
<sequence>
<element name="previousEdge" type="gml:TimeEdgePropertyType" minOccurs="0" maxOccurs="unbounded"/>
<element name="nextEdge" type="gml:TimeEdgePropertyType" minOccurs="0" maxOccurs="unbounded"/>
<element name="position" type="gml:TimeInstantPropertyType" minOccurs="0"/>
</sequence>
</extension>
</complexContent>
</complexType>
<!-- ================================================================== -->
<complexType name="TimeNodePropertyType">
<annotation>
<documentation>A time node property can either be any time node element encapsulated in an element of this type
or an XLink reference to a remote time node element (where remote includes elements located elsewhere in the same document).
Note that either the reference or the contained element must be given, but not both or none.</documentation>
</annotation>
<sequence minOccurs="0">
<element ref="gml:TimeNode"/>
</sequence>
<attributeGroup ref="gml:AssociationAttributeGroup"/>
</complexType>
<!-- ================================================================== -->
<!-- ======= TimeEdge ======= -->
<!-- ================================================================== -->
<element name="TimeEdge" type="gml:TimeEdgeType" substitutionGroup="gml:_TimeTopologyPrimitive">
<annotation>
<documentation xml:lang="en">TimeEdge is one dimensional temporal topology primitive,
expresses a state in topological time. It has an orientation from its start toward the end,
and its boundaries shall associate with two different time nodes.</documentation>
</annotation>
</element>
<!-- ================================================================== -->
<complexType name="TimeEdgeType">
<annotation>
<documentation xml:lang="en">Type declaration of the element "TimeEdge".</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractTimeTopologyPrimitiveType">
<sequence>
<element name="start" type="gml:TimeNodePropertyType"/>
<element name="end" type="gml:TimeNodePropertyType"/>
<element name="extent" type="gml:TimePeriodPropertyType" minOccurs="0"/>
</sequence>
</extension>
</complexContent>
</complexType>
<!-- ================================================================== -->
<complexType name="TimeEdgePropertyType">
<annotation>
<documentation>A time edge property can either be any time edge element encapsulated in an element of this type
or an XLink reference to a remote time edge element (where remote includes elements located elsewhere in the same document).
Note that either the reference or the contained element must be given, but not both or none.</documentation>
</annotation>
<sequence minOccurs="0">
<element ref="gml:TimeEdge"/>
</sequence>
<attributeGroup ref="gml:AssociationAttributeGroup"/>
</complexType>
<!-- ================================================================== -->
<!-- === Succession === -->
<!-- ================================================================== -->
<simpleType name="SuccessionType">
<annotation>
<documentation>Feature succession is a semantic relationship derived from evaluation of observer, and
Feature Substitution, Feature Division and Feature Fusion are defined as associations between
previous features and next features in the temporal context.
Successions shall be represented in either following two ways.
* define a temporal topological complex element as a feature element
* define an association same as temporal topological complex between features.</documentation>
</annotation>
<restriction base="string">
<enumeration value="substitution"/>
<enumeration value="division"/>
<enumeration value="fusion"/>
<enumeration value="initiation"/>
</restriction>
</simpleType>
<!-- ================================================================== -->
</schema>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="http://www.opengis.net/gml" elementFormDefault="qualified" version="3.1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:sch="http://www.ascc.net/xml/schematron" xmlns="http://www.w3.org/2001/XMLSchema">
<annotation>
<appinfo source="urn:opengis:specification:gml:schema-xsd:topology:3.1.1">topology.xsd</appinfo>
<documentation>
Copyright (c) 2002-2005 OGC, All Rights Reserved.
For conditions, see OGC Software Notice http://www.opengeospatial.org/about/?page=ipr
</documentation>
</annotation>
<include schemaLocation="geometryComplexes.xsd"/>
<!-- ==============================================================
abstract supertype for topology objects
=============================================================== -->
<!-- ========================================================== -->
<element name="_Topology" type="gml:AbstractTopologyType" abstract="true" substitutionGroup="gml:_GML"/>
<!-- ========================================================== -->
<complexType name="AbstractTopologyType" abstract="true">
<complexContent>
<extension base="gml:AbstractGMLType"/>
</complexContent>
</complexType>
<!-- ========================================================== -->
<element name="_TopoPrimitive" type="gml:AbstractTopoPrimitiveType" abstract="true" substitutionGroup="gml:_Topology">
<annotation>
<documentation>Substitution group branch for Topo Primitives, used by TopoPrimitiveArrayAssociationType</documentation>
</annotation>
</element>
<!-- ========================================================== -->
<complexType name="AbstractTopoPrimitiveType" abstract="true">
<complexContent>
<extension base="gml:AbstractTopologyType">
<sequence>
<element ref="gml:isolated" minOccurs="0" maxOccurs="unbounded"/>
<element ref="gml:container" minOccurs="0"/>
</sequence>
</extension>
</complexContent>
</complexType>
<!-- ========================================================== -->
<element name="isolated" type="gml:IsolatedPropertyType">
<annotation>
<appinfo>
<sch:pattern name="refAndContent co-occurence prohibited">
<sch:rule context="gml:isolated">
<sch:extends rule="hrefOrContent"/>
</sch:rule>
</sch:pattern>
</appinfo>
</annotation>
</element>
<!-- ========================================================== -->
<complexType name="IsolatedPropertyType">
<choice minOccurs="0">
<element ref="gml:Node"/>
<element ref="gml:Edge"/>
</choice>
<attributeGroup ref="gml:AssociationAttributeGroup"/>
</complexType>
<!-- ========================================================== -->
<element name="container" type="gml:ContainerPropertyType">
<annotation>
<appinfo>
<sch:pattern name="refAndContent co-occurence prohibited">
<sch:rule context="gml:containerProperty">
<sch:extends rule="hrefOrContent"/>
</sch:rule>
</sch:pattern>
</appinfo>
</annotation>
</element>
<!-- ========================================================== -->
<complexType name="ContainerPropertyType">
<sequence minOccurs="0">
<choice>
<element ref="gml:Face"/>
<element ref="gml:TopoSolid"/>
</choice>
</sequence>
<attributeGroup ref="gml:AssociationAttributeGroup"/>
</complexType>
<!-- =========================================================== -->
<!-- primitive topology objects -->
<!-- ========================================================== -->
<element name="Node" type="gml:NodeType" substitutionGroup="gml:_TopoPrimitive"/>
<!-- =========================================================== -->
<complexType name="NodeType">
<annotation>
<documentation>Its optional co-boundary is a set of connected directedEdges. The orientation of one of these dirEdges is "+" if the Node is the "to" node of the Edge, and "-" if it is the "from" node.</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractTopoPrimitiveType">
<sequence>
<element ref="gml:directedEdge" minOccurs="0" maxOccurs="unbounded"/>
<element ref="gml:pointProperty" minOccurs="0"/>
<!-- <element name="geometry" type="gml:PointPropertyType" minOccurs="0"/> -->
</sequence>
</extension>
</complexContent>
</complexType>
<!-- ===== Property for topology association - by Value or by Reference ===== -->
<element name="directedNode" type="gml:DirectedNodePropertyType">
<annotation>
<appinfo>
<sch:pattern name="refAndContent co-occurence prohibited">
<sch:rule context="gml:directedNode">
<sch:extends rule="hrefOrContent"/>
</sch:rule>
</sch:pattern>
</appinfo>
</annotation>
</element>
<!-- =========================================================== -->
<complexType name="DirectedNodePropertyType">
<sequence minOccurs="0">
<element ref="gml:Node"/>
</sequence>
<attribute name="orientation" type="gml:SignType" default="+"/>
<attributeGroup ref="gml:AssociationAttributeGroup"/>
</complexType>
<!-- ========================================================== -->
<!-- primitive topology objects (1-dimensional) -->
<!-- ========================================================== -->
<element name="Edge" type="gml:EdgeType" substitutionGroup="gml:_TopoPrimitive"/>
<!-- ========================================================== -->
<complexType name="EdgeType">
<annotation>
<documentation>There is precisely one positively directed and one negatively directed node in the boundary of every edge. The negatively and positively directed nodes correspond to the start and end nodes respectively. The optional coboundary of an edge is a circular sequence of directed faces which are incident on this edge in document order. Faces which use a particular boundary edge in its positive orientation appear with positive orientation on the coboundary of the same edge. In the 2D case, the orientation of the face on the left of the edge is "+"; the orientation of the face on the right on its right is "-". An edge may optionally be realised by a 1-dimensional (curve) geometric primitive.</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractTopoPrimitiveType">
<sequence>
<element ref="gml:directedNode" minOccurs="2" maxOccurs="2"/>
<element ref="gml:directedFace" minOccurs="0" maxOccurs="unbounded"/>
<element ref="gml:curveProperty" minOccurs="0"/>
</sequence>
</extension>
</complexContent>
</complexType>
<!-- ===== Property for topology association - by Value or by Reference ===== -->
<element name="directedEdge" type="gml:DirectedEdgePropertyType">
<annotation>
<appinfo>
<sch:pattern name="refAndContent co-occurence prohibited">
<sch:rule context="gml:directedEdge">
<sch:extends rule="hrefOrContent"/>
</sch:rule>
</sch:pattern>
</appinfo>
</annotation>
</element>
<!-- =========================================================== -->
<complexType name="DirectedEdgePropertyType">
<sequence minOccurs="0">
<element ref="gml:Edge"/>
</sequence>
<attribute name="orientation" type="gml:SignType" default="+"/>
<attributeGroup ref="gml:AssociationAttributeGroup"/>
</complexType>
<!-- ========================================================== -->
<!-- primitive topology objects (2-dimensional) -->
<!-- ========================================================== -->
<element name="Face" type="gml:FaceType" substitutionGroup="gml:_TopoPrimitive"/>
<!-- ========================================================== -->
<complexType name="FaceType">
<annotation>
<documentation>. The topological boundary of a face consists of a set of directed edges. Note that all edges associated with a Face, including dangling and interior edges, appear in the boundary. Dangling and interior edges are each referenced by pairs of directedEdges with opposing orientations. The optional coboundary of a face is a pair of directed solids which are bounded by this face. If present, there is precisely one positively directed and one negatively directed solid in the coboundary of every face. The positively directed solid corresponds to the solid which lies in the direction of the positively directed normal to the face in any geometric realisation. A face may optionally be realised by a 2-dimensional (surface) geometric primitive.</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractTopoPrimitiveType">
<sequence>
<element ref="gml:directedEdge" maxOccurs="unbounded"/>
<element ref="gml:directedTopoSolid" minOccurs="0" maxOccurs="2"/>
<element ref="gml:surfaceProperty" minOccurs="0"/>
</sequence>
</extension>
</complexContent>
</complexType>
<!-- ===== Property for topology association - by Value or by Reference ===== -->
<element name="directedFace" type="gml:DirectedFacePropertyType">
<annotation>
<appinfo>
<sch:pattern name="refAndContent co-occurence prohibited">
<sch:rule context="gml:directedFace">
<sch:extends rule="hrefOrContent"/>
</sch:rule>
</sch:pattern>
</appinfo>
</annotation>
</element>
<!-- =========================================================== -->
<complexType name="DirectedFacePropertyType">
<sequence minOccurs="0">
<element ref="gml:Face"/>
</sequence>
<attribute name="orientation" type="gml:SignType" default="+"/>
<attributeGroup ref="gml:AssociationAttributeGroup"/>
</complexType>
<!-- ========================================================== -->
<!-- primitive topology objects (3-dimensional) -->
<!-- ========================================================== -->
<element name="TopoSolid" type="gml:TopoSolidType" substitutionGroup="gml:_TopoPrimitive"/>
<!-- ============================================================= -->
<complexType name="TopoSolidType">
<annotation>
<documentation>The topological boundary of a TopoSolid consists of a set of directed faces. Note that all faces associated with the TopoSolid, including dangling faces, appear in the boundary. The coboundary of a TopoSolid is empty and hence requires no representation.</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractTopoPrimitiveType">
<sequence>
<element ref="gml:directedFace" maxOccurs="unbounded"/>
</sequence>
</extension>
</complexContent>
</complexType>
<!-- ========================================================== -->
<!-- ===== Property for topology association - by Value or by Reference ===== -->
<element name="directedTopoSolid" type="gml:DirectedTopoSolidPropertyType">
<annotation>
<appinfo>
<sch:pattern name="refAndContent co-occurence prohibited">
<sch:rule context="gml:directedTopoSolid">
<sch:extends rule="hrefOrContent"/>
</sch:rule>
</sch:pattern>
</appinfo>
</annotation>
</element>
<!-- ============================================================= -->
<complexType name="DirectedTopoSolidPropertyType">
<sequence minOccurs="0">
<element ref="gml:TopoSolid"/>
</sequence>
<attribute name="orientation" type="gml:SignType" default="+"/>
<attributeGroup ref="gml:AssociationAttributeGroup"/>
</complexType>
<!-- ========================================================== -->
<element name="TopoPoint" type="gml:TopoPointType"/>
<!-- ========================================================== -->
<complexType name="TopoPointType">
<annotation>
<documentation>The intended use of TopoPoint is to appear within a point feature to express the structural and possibly geometric relationships of this point to other features via shared node definitions. Note the orientation assigned to the directedNode has no meaning in this context. It is preserved for symmetry with the types and elements which follow.</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractTopologyType">
<sequence>
<element ref="gml:directedNode"/>
</sequence>
</extension>
</complexContent>
</complexType>
<!-- ========================================================== -->
<!-- ============================================================= -->
<!-- ===== Property for topology association - by Value ===== -->
<element name="topoPointProperty" type="gml:TopoPointPropertyType"/>
<!-- ============================================================= -->
<complexType name="TopoPointPropertyType">
<sequence>
<element ref="gml:TopoPoint"/>
</sequence>
</complexType>
<!-- ========================================================== -->
<!-- ========================================================== -->
<element name="TopoCurve" type="gml:TopoCurveType"/>
<!-- ============================================================= -->
<complexType name="TopoCurveType">
<annotation>
<documentation>The end Node of each directedEdge of a TopoCurveType
is the start Node of the next directedEdge of the TopoCurveType in document order. The TopoCurve type and element represent a homogeneous topological expression, a list of directed edges, which if realised are isomorphic to a geometric curve primitive. The intended use of TopoCurve is to appear within a line feature instance to express the structural and geometric relationships of this line to other features via the shared edge definitions.</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractTopologyType">
<sequence>
<element ref="gml:directedEdge" maxOccurs="unbounded"/>
</sequence>
</extension>
</complexContent>
</complexType>
<!-- ========================================================== -->
<!-- ===== Property for topology association - by Value ===== -->
<element name="topoCurveProperty" type="gml:TopoCurvePropertyType"/>
<!-- ============================================================= -->
<complexType name="TopoCurvePropertyType">
<sequence>
<element ref="gml:TopoCurve"/>
</sequence>
</complexType>
<!-- ========================================================== -->
<!-- ========================================================== -->
<element name="TopoSurface" type="gml:TopoSurfaceType"/>
<!-- ============================================================= -->
<complexType name="TopoSurfaceType">
<annotation>
<documentation>The TopoSurface type and element represent a homogeneous topological expression, a set of directed faces, which if realised are isomorphic to a geometric surface primitive. The intended use of TopoSurface is to appear within a surface feature instance to express the structural and possibly geometric relationships of this surface to other features via the shared face definitions.</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractTopologyType">
<sequence>
<element ref="gml:directedFace" maxOccurs="unbounded"/>
</sequence>
</extension>
</complexContent>
</complexType>
<!-- ========================================================== -->
<!-- ===== Property for topology association - by Value ===== -->
<element name="topoSurfaceProperty" type="gml:TopoSurfacePropertyType"/>
<!-- ============================================================= -->
<complexType name="TopoSurfacePropertyType">
<sequence>
<element ref="gml:TopoSurface"/>
</sequence>
</complexType>
<!-- ========================================================== -->
<element name="TopoVolume" type="gml:TopoVolumeType"/>
<!-- ============================================================= -->
<complexType name="TopoVolumeType">
<annotation>
<documentation>The TopoVolume type and element represent a homogeneous topological expression, a set of directed TopoSolids, which if realised are isomorphic to a geometric solid primitive. The intended use of TopoVolume is to appear within a 3D solid feature instance to express the structural and geometric relationships of this solid to other features via the shared TopoSolid definitions. . Note the orientation assigned to the directedSolid has no meaning in three dimensions. It is preserved for symmetry with the preceding types and elements.</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractTopologyType">
<sequence>
<element ref="gml:directedTopoSolid" maxOccurs="unbounded"/>
</sequence>
</extension>
</complexContent>
</complexType>
<!-- ========================================================== -->
<!-- ===== Property for topology association - by Value ===== -->
<element name="topoVolumeProperty" type="gml:TopoVolumePropertyType"/>
<!-- ============================================================= -->
<complexType name="TopoVolumePropertyType">
<sequence>
<element ref="gml:TopoVolume"/>
</sequence>
</complexType>
<!-- ========================================================== -->
<!-- ========================================================== -->
<element name="TopoComplex" type="gml:TopoComplexType" substitutionGroup="gml:_Topology"/>
<!-- ========================================================== -->
<complexType name="TopoComplexType">
<annotation>
<documentation>This type represents a TP_Complex capable of holding topological primitives.</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractTopologyType">
<sequence>
<element ref="gml:maximalComplex"/>
<element ref="gml:superComplex" minOccurs="0" maxOccurs="unbounded"/>
<element ref="gml:subComplex" minOccurs="0" maxOccurs="unbounded"/>
<element ref="gml:topoPrimitiveMember" minOccurs="0" maxOccurs="unbounded"/>
<element ref="gml:topoPrimitiveMembers" minOccurs="0"/>
</sequence>
<attribute name="isMaximal" type="boolean" default="false"/>
</extension>
</complexContent>
</complexType>
<!-- ===== Property for topology association - by Value or Reference ===== -->
<element name="topoComplexProperty" type="gml:TopoComplexMemberType"/>
<!-- ========================================================== -->
<element name="subComplex" type="gml:TopoComplexMemberType">
<annotation>
<appinfo>
<sch:pattern name="refAndContent co-occurence prohibited">
<sch:rule context="gml:subComplex">
<sch:extends rule="hrefOrContent"/>
</sch:rule>
</sch:pattern>
</appinfo>
</annotation>
</element>
<!-- ========================================================== -->
<element name="superComplex" type="gml:TopoComplexMemberType">
<annotation>
<appinfo>
<sch:pattern name="refAndContent co-occurence prohibited">
<sch:rule context="gml:superComplex">
<sch:extends rule="hrefOrContent"/>
</sch:rule>
</sch:pattern>
</appinfo>
</annotation>
</element>
<!-- ========================================================== -->
<element name="maximalComplex" type="gml:TopoComplexMemberType">
<annotation>
<appinfo>
<sch:pattern name="refAndContent co-occurence prohibited">
<sch:rule context="gml:subComplex">
<sch:extends rule="hrefOrContent"/>
</sch:rule>
</sch:pattern>
</appinfo>
<documentation>Need schamatron test here that isMaximal attribute value is true</documentation>
</annotation>
</element>
<!-- ============================================================= -->
<complexType name="TopoComplexMemberType">
<annotation>
<documentation>This Property can be used to embed a TopoComplex in a feature collection.</documentation>
</annotation>
<sequence>
<element ref="gml:TopoComplex" minOccurs="0"/>
</sequence>
<attributeGroup ref="gml:AssociationAttributeGroup"/>
</complexType>
<!-- ========================================================== -->
<!-- ===== Property for topology association - by Value or Reference ===== -->
<element name="topoPrimitiveMember" type="gml:TopoPrimitiveMemberType">
<annotation>
<appinfo>
<sch:pattern name="refAndContent co-occurence prohibited">
<sch:rule context="gml:topoPrimitiveMember">
<sch:extends rule="hrefOrContent"/>
</sch:rule>
</sch:pattern>
</appinfo>
</annotation>
</element>
<!-- ============================================================= -->
<complexType name="TopoPrimitiveMemberType">
<annotation>
<documentation>This type supports embedding topological primitives in a TopoComplex.</documentation>
</annotation>
<sequence>
<element ref="gml:_TopoPrimitive" minOccurs="0"/>
</sequence>
<attributeGroup ref="gml:AssociationAttributeGroup"/>
</complexType>
<!-- ========================================================== -->
<!-- ===== Property for topology association - by Value ===== -->
<element name="topoPrimitiveMembers" type="gml:TopoPrimitiveArrayAssociationType">
<annotation>
<appinfo>
<sch:pattern name="refAndContent co-occurence prohibited">
<sch:rule context="gml:topoPrimitiveMember">
<sch:extends rule="hrefOrContent"/>
</sch:rule>
</sch:pattern>
</appinfo>
</annotation>
</element>
<!-- ========================================================== -->
<complexType name="TopoPrimitiveArrayAssociationType">
<annotation>
<documentation>This type supports embedding an array of topological primitives in a TopoComplex</documentation>
</annotation>
<!-- <complexContent>
<restriction base="gml:ArrayAssociationType"> -->
<sequence>
<choice minOccurs="0" maxOccurs="unbounded">
<element ref="gml:_TopoPrimitive"/>
</choice>
</sequence>
<!-- </restriction>
</complexContent> -->
</complexType>
<!-- ========================================================== -->
</schema>
<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="http://www.opengis.net/gml" xmlns:gml="http://www.opengis.net/gml" xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" version="3.1.1" xml:lang="en">
<annotation>
<appinfo source="urn:opengis:specification:gml:schema-units:3.1.1"/>
<documentation>Builds on gmlBase.xsd to encode units of measure (or uom), including definitions of units of measure and dictionaries of such definitions. GML 3.0 candidate schema, primary editor: Arliss Whiteside. Last updated 2005-06-22.
Copyright (c) 2002-2005 OGC, All Rights Reserved.
For conditions, see OGC Software Notice http://www.opengeospatial.org/about/?page=ipr
Parts of this schema are based on Subclause 6.5.7 of ISO/CD 19103 Geographic information - Conceptual schema language, on Subclause A.5.2.2.3 of ISO/CD 19118 Geographic information - Encoding, and on most of OpenGIS Recommendation Paper OGC 02-007r4 Units of Measure Use and Definition Recommendations.</documentation>
</annotation>
<!-- ==============================================================
includes and imports
============================================================== -->
<include schemaLocation="dictionary.xsd"/>
<!-- ==============================================================
elements and types
============================================================== -->
<element name="unitOfMeasure" type="gml:UnitOfMeasureType"/>
<!-- =========================================================== -->
<complexType name="UnitOfMeasureType">
<annotation>
<documentation>Reference to a unit of measure definition that applies to all the numerical values described by the element containing this element. Notice that a complexType which needs to include the uom attribute can do so by extending this complexType. Alternately, this complexType can be used as a pattern for a new complexType.</documentation>
</annotation>
<sequence/>
<attribute name="uom" type="anyURI" use="required">
<annotation>
<documentation>Reference to a unit of measure definition, usually within the same XML document but possibly outside the XML document which contains this reference. For a reference within the same XML document, the "#" symbol should be used, followed by a text abbreviation of the unit name. However, the "#" symbol may be optional, and still may be interpreted as a reference.</documentation>
</annotation>
</attribute>
</complexType>
<!-- =========================================================== -->
<element name="UnitDefinition" type="gml:UnitDefinitionType" substitutionGroup="gml:Definition"/>
<!-- =========================================================== -->
<complexType name="UnitDefinitionType">
<annotation>
<documentation>Definition of a unit of measure (or uom). The definition includes a quantityType property, which indicates the phenomenon to which the units apply, and a catalogSymbol, which gives the short symbol used for this unit. This element is used when the relationship of this unit to other units or units systems is unknown.</documentation>
</annotation>
<complexContent>
<extension base="gml:DefinitionType">
<sequence>
<element ref="gml:quantityType"/>
<element ref="gml:catalogSymbol" minOccurs="0"/>
</sequence>
</extension>
</complexContent>
</complexType>
<!-- =========================================================== -->
<element name="BaseUnit" type="gml:BaseUnitType" substitutionGroup="gml:UnitDefinition"/>
<!-- =========================================================== -->
<complexType name="BaseUnitType">
<annotation>
<documentation>Definition of a unit of measure which is a base unit from the system of units. A base unit cannot be derived by combination of other base units within this system. Sometimes known as "fundamental unit".</documentation>
</annotation>
<complexContent>
<extension base="gml:UnitDefinitionType">
<sequence>
<element name="unitsSystem" type="gml:ReferenceType"/>
</sequence>
</extension>
</complexContent>
</complexType>
<!-- =========================================================== -->
<element name="DerivedUnit" type="gml:DerivedUnitType" substitutionGroup="gml:UnitDefinition"/>
<!-- ============================================================ -->
<complexType name="DerivedUnitType">
<annotation>
<documentation>Definition of a unit of measure which is defined through algebraic combination of more primitive units, which are usually base units from a particular system of units. Derived units based directly on base units are usually preferred for quantities other than the base units or fundamental quantities within a system. If a derived unit is not the preferred unit, the ConventionalUnit element should be used instead.</documentation>
</annotation>
<complexContent>
<extension base="gml:UnitDefinitionType">
<sequence>
<element ref="gml:derivationUnitTerm" maxOccurs="unbounded"/>
</sequence>
</extension>
</complexContent>
</complexType>
<!-- =========================================================== -->
<element name="ConventionalUnit" type="gml:ConventionalUnitType" substitutionGroup="gml:UnitDefinition"/>
<!-- =========================================================== -->
<complexType name="ConventionalUnitType">
<annotation>
<documentation>Definition of a unit of measure which is related to a preferred unit for this quantity type through a conversion formula. A method for deriving this unit by algebraic combination of more primitive units, may also be provided.</documentation>
</annotation>
<complexContent>
<extension base="gml:UnitDefinitionType">
<sequence>
<choice>
<element ref="gml:conversionToPreferredUnit"/>
<element ref="gml:roughConversionToPreferredUnit"/>
</choice>
<element ref="gml:derivationUnitTerm" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</extension>
</complexContent>
</complexType>
<!-- =========================================================== -->
<element name="quantityType" type="gml:StringOrRefType">
<annotation>
<documentation>Informal description of the phenomenon or type of quantity that is measured or observed. For example, "length", "angle", "time", "pressure", or "temperature". When the quantity is the result of an observation or measurement, this term is known as Observable Type or Measurand.</documentation>
</annotation>
</element>
<!-- =========================================================== -->
<element name="catalogSymbol" type="gml:CodeType">
<annotation>
<documentation>For global understanding of a unit of measure, it is often possible to reference an item in a catalog of units, using a symbol in that catalog. The "codeSpace" attribute in "CodeType" identifies a namespace for the catalog symbol value, and might reference the catalog. The "string" value in "CodeType" contains the value of a symbol that is unique within this catalog namespace. This symbol often appears explicitly in the catalog, but it could be a combination of symbols using a specified algebra of units. For example, the symbol "cm" might indicate that it is the "m" symbol combined with the "c" prefix.</documentation>
</annotation>
</element>
<!-- =========================================================== -->
<element name="derivationUnitTerm" type="gml:DerivationUnitTermType"/>
<!-- =========================================================== -->
<complexType name="DerivationUnitTermType">
<annotation>
<documentation>Definition of one unit term for a derived unit of measure. This unit term references another unit of measure (uom) and provides an integer exponent applied to that unit in defining the compound unit. The exponent can be positive or negative, but not zero.</documentation>
</annotation>
<complexContent>
<extension base="gml:UnitOfMeasureType">
<attribute name="exponent" type="integer"/>
</extension>
</complexContent>
</complexType>
<!-- =========================================================== -->
<element name="conversionToPreferredUnit" type="gml:ConversionToPreferredUnitType">
<annotation>
<documentation>This element is included when this unit has an accurate conversion to the preferred unit for this quantity type.</documentation>
</annotation>
</element>
<!-- =========================================================== -->
<element name="roughConversionToPreferredUnit" type="gml:ConversionToPreferredUnitType">
<annotation>
<documentation>This element is included when the correct definition of this unit is unknown, but this unit has a rough or inaccurate conversion to the preferred unit for this quantity type.</documentation>
</annotation>
</element>
<!-- =========================================================== -->
<complexType name="ConversionToPreferredUnitType">
<annotation>
<documentation>Relation of a unit to the preferred unit for this quantity type, specified by an arithmetic conversion (scaling and/or offset). A preferred unit is either a base unit or a derived unit selected for all units of one quantity type. The mandatory attribute "uom" shall reference the preferred unit that this conversion applies to. The conversion is specified by one of two alternative elements: "factor" or "formula".</documentation>
</annotation>
<complexContent>
<extension base="gml:UnitOfMeasureType">
<choice>
<element name="factor" type="double">
<annotation>
<documentation>Specification of the scale factor by which a value using this unit of measure can be multiplied to obtain the corresponding value using the preferred unit of measure.</documentation>
</annotation>
</element>
<element name="formula" type="gml:FormulaType">
<annotation>
<documentation>Specification of the formula by which a value using this unit of measure can be converted to obtain the corresponding value using the preferred unit of measure.</documentation>
</annotation>
</element>
</choice>
</extension>
</complexContent>
</complexType>
<!-- =========================================================== -->
<complexType name="FormulaType">
<annotation>
<documentation>Paremeters of a simple formula by which a value using this unit of measure can be converted to the corresponding value using the preferred unit of measure. The formula element contains elements a, b, c and d, whose values use the XML Schema type "double". These values are used in the formula y = (a + bx) / (c + dx), where x is a value using this unit, and y is the corresponding value using the preferred unit. The elements a and d are optional, and if values are not provided, those parameters are considered to be zero. If values are not provided for both a and d, the formula is equivalent to a fraction with numerator and denominator parameters.</documentation>
</annotation>
<sequence>
<element name="a" type="double" minOccurs="0"/>
<element name="b" type="double"/>
<element name="c" type="double"/>
<element name="d" type="double" minOccurs="0"/>
</sequence>
</complexType>
<!-- =========================================================== -->
</schema>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:sch="http://www.ascc.net/xml/schematron" xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified" version="3.1.1">
<annotation>
<appinfo source="urn:opengis:specification:gml:schema-xsd:valueObjects:3.1.1">valueObjects.xsd</appinfo>
<documentation>GML conformant schema for Values in which the
* scalar Value types and lists have their values recorded in simpleContent elements
* complex Value types are built recursively
Copyright (c) 2002-2005 OGC, All Rights Reserved.
For conditions, see OGC Software Notice http://www.opengeospatial.org/about/?page=ipr</documentation>
</annotation>
<!-- ====================================================================== -->
<!-- geometry and temporal included so that _Geometry and _TimeObject can be added to Value choice group -->
<include schemaLocation="geometryBasic0d1d.xsd"/>
<include schemaLocation="temporal.xsd"/>
<!-- ====================================================================== -->
<group name="Value">
<annotation>
<documentation>Utility choice group which unifies generic Values defined in this schema document with
Geometry and Temporal objects and the Measures described above,
so that any of these may be used within aggregate Values.</documentation>
</annotation>
<choice>
<!-- <element ref="gml:_Value"/> -->
<group ref="gml:ValueObject"/>
<element ref="gml:_Object"/>
<!-- <element ref="gml:_Geometry"/>
<element ref="gml:_TimeObject"/> -->
<element ref="gml:Null"/>
</choice>
</group>
<!-- ====================================================================== -->
<group name="ValueObject">
<choice>
<group ref="gml:ScalarValue"/>
<group ref="gml:ScalarValueList"/>
<group ref="gml:ValueExtent"/>
<element ref="gml:CompositeValue"/>
</choice>
</group>
<!-- ======================================================================
<element name="_Value" abstract="true" substitutionGroup="gml:_Object">
<annotation>
<documentation>Abstract element which acts as the head of a substitution group which contains _ScalarValue, _ScalarValueList and CompositeValue and (transitively) the elements in their substitution groups. This element may be used in an application schema as a variable, so that in an XML instance document any member of its substitution group may occur.</documentation>
</annotation>
</element> -->
<!-- ====================================================================== -->
<!-- ================== Scalar Values =========================
<element name="_ScalarValue" abstract="true" substitutionGroup="gml:_Value">
<annotation>
<documentation>Abstract element which acts as the head of a substitution group which contains Boolean, Category, Count and Quantity, and (transitively) the elements in their substitution groups. This element may be used in an application schema as a variable, so that in an XML instance document any member of its substitution group may occur.</documentation>
</annotation>
</element> -->
<group name="ScalarValue">
<choice>
<element ref="gml:Boolean"/>
<element ref="gml:Category"/>
<element ref="gml:Quantity"/>
<element ref="gml:Count"/>
</choice>
</group>
<!-- ======================================================================
<element name="_ScalarValueList" abstract="true" substitutionGroup="gml:_Value">
<annotation>
<documentation>Abstract element which acts as the head of a substitution group which contains the compact encodings BooleanList, CategoryList, CountList and QuantityList, and (transitively) the elements in their substitution groups. This element may be used in an application schema as a variable, so that in an XML instance document any member of its substitution group may occur.</documentation>
</annotation>
</element> -->
<group name="ScalarValueList">
<choice>
<element ref="gml:BooleanList"/>
<element ref="gml:CategoryList"/>
<element ref="gml:QuantityList"/>
<element ref="gml:CountList"/>
</choice>
</group>
<!-- ====================================================================== -->
<!-- ======================= Boolean ========================
<element name="Boolean" type="boolean" substitutionGroup="gml:_ScalarValue"> -->
<element name="Boolean" type="boolean">
<annotation>
<documentation>A value from two-valued logic, using the XML Schema boolean type. An instance may take the values {true, false, 1, 0}.</documentation>
</annotation>
</element>
<!--
<element name="BooleanList" type="gml:booleanOrNullList" substitutionGroup="gml:_ScalarValueList"> -->
<element name="BooleanList" type="gml:booleanOrNullList">
<annotation>
<documentation>XML List based on XML Schema boolean type. An element of this type contains a space-separated list of boolean values {0,1,true,false}</documentation>
</annotation>
</element>
<!-- ====================================================================== -->
<!-- ======================= Category ==========================
<element name="Category" type="gml:CodeType" substitutionGroup="gml:_ScalarValue"> -->
<element name="Category" type="gml:CodeType">
<annotation>
<documentation>A term representing a classification. It has an optional XML attribute codeSpace, whose value is a URI which identifies a dictionary, codelist or authority for the term.</documentation>
</annotation>
</element>
<!--
<element name="CategoryList" type="gml:CodeOrNullListType" substitutionGroup="gml:_ScalarValueList"> -->
<element name="CategoryList" type="gml:CodeOrNullListType">
<annotation>
<documentation>A space-separated list of terms or nulls. A single XML attribute codeSpace may be provided, which authorises all the terms in the list.</documentation>
</annotation>
</element>
<!-- ====================================================================== -->
<!-- =========================== Quantity ============================
<element name="Quantity" type="gml:MeasureType" substitutionGroup="gml:_ScalarValue"> -->
<element name="Quantity" type="gml:MeasureType">
<annotation>
<documentation>A numeric value with a scale. The content of the element is an amount using the XML Schema type double which permits decimal or scientific notation. An XML attribute uom (unit of measure) is required, whose value is a URI which identifies the definition of the scale or units by which the numeric value must be multiplied.</documentation>
</annotation>
</element>
<!--
<element name="QuantityList" type="gml:MeasureOrNullListType" substitutionGroup="gml:_ScalarValueList"> -->
<element name="QuantityList" type="gml:MeasureOrNullListType">
<annotation>
<documentation>A space separated list of amounts or nulls. The amounts use the XML Schema type double. A single XML attribute uom (unit of measure) is required, whose value is a URI which identifies the definition of the scale or units by which all the amounts in the list must be multiplied.</documentation>
</annotation>
</element>
<!-- ====================================================================== -->
<!-- ========================== Count ==========================
<element name="Count" type="integer" substitutionGroup="gml:_ScalarValue"> -->
<element name="Count" type="integer">
<annotation>
<documentation>An integer representing a frequency of occurrence.</documentation>
</annotation>
</element>
<!--
<element name="CountList" type="gml:integerOrNullList" substitutionGroup="gml:_ScalarValueList"> -->
<element name="CountList" type="gml:integerOrNullList">
<annotation>
<documentation>A space-separated list of integers or nulls.</documentation>
</annotation>
</element>
<!-- ====================================================================== -->
<!-- aggregate Value types -->
<!-- ====================================================================== -->
<!-- ===================== ValueCollection ========================== -->
<complexType name="CompositeValueType">
<annotation>
<documentation>Aggregate value built from other Values using the Composite pattern. It contains zero or an arbitrary number of valueComponent elements, and zero or one valueComponents elements. It may be used for strongly coupled aggregates (vectors, tensors) or for arbitrary collections of values.</documentation>
</annotation>
<complexContent>
<extension base="gml:AbstractGMLType">
<sequence>
<element ref="gml:valueComponent" minOccurs="0" maxOccurs="unbounded"/>
<element ref="gml:valueComponents" minOccurs="0"/>
</sequence>
</extension>
</complexContent>
</complexType>
<!-- <element name="CompositeValue" type="gml:CompositeValueType" substitutionGroup="gml:_Value"> -->
<element name="CompositeValue" type="gml:CompositeValueType">
<annotation>
<documentation>Aggregate value built using the Composite pattern.</documentation>
</annotation>
</element>
<!-- ====================================================================== -->
<!-- ========================= ValueArray ========================== -->
<complexType name="ValueArrayType">
<annotation>
<documentation>A Value Array is used for homogeneous arrays of primitive and aggregate values. The member values may be scalars, composites, arrays or lists. ValueArray has the same content model as CompositeValue, but the member values must be homogeneous. The element declaration contains a Schematron constraint which expresses this restriction precisely. Since the members are homogeneous, the referenceSystem (uom, codeSpace) may be specified on the ValueArray itself and implicitly inherited by all the members if desired. Note that a_ScalarValueList is preferred for arrays of Scalar Values since this is a more efficient encoding.</documentation>
</annotation>
<complexContent>
<extension base="gml:CompositeValueType">
<attributeGroup ref="gml:referenceSystem"/>
</extension>
</complexContent>
</complexType>
<!-- -->
<element name="ValueArray" type="gml:ValueArrayType" substitutionGroup="gml:CompositeValue">
<annotation>
<appinfo>
<sch:pattern name="Check either codeSpace or uom not both">
<sch:rule context="gml:ValueArray">
<sch:report test="@codeSpace and @uom">ValueArray may not carry both a reference to a codeSpace and a uom</sch:report>
</sch:rule>
</sch:pattern>
<sch:pattern name="Check components are homogeneous">
<sch:rule context="gml:ValueArray">
<sch:assert test="count(gml:valueComponent/*) = count(gml:valueComponent/*[name() = name(../../gml:valueComponent[1]/*[1])])">All components of <sch:name/> must be of the same type</sch:assert>
<sch:assert test="count(gml:valueComponents/*) = count(gml:valueComponents/*[name() = name(../*[1])])">All components of <sch:name/> must be of the same type</sch:assert>
</sch:rule>
</sch:pattern>
</appinfo>
<documentation>A Value Array is used for homogeneous arrays of primitive and aggregate values. _ScalarValueList is preferred for arrays of Scalar Values since this is more efficient. Since "choice" is not available for attribute groups, an external constraint (e.g. Schematron) would be required to enforce the selection of only one of these through schema validation</documentation>
</annotation>
</element>
<!-- attribute group required for ValueArray -->
<attributeGroup name="referenceSystem">
<attribute name="codeSpace" type="anyURI" use="optional"/>
<attribute name="uom" type="anyURI" use="optional"/>
</attributeGroup>
<!-- ====================================================================== -->
<!-- ====================== Typed ValueExtents ============================ -->
<group name="ValueExtent">
<choice>
<element ref="gml:CategoryExtent"/>
<element ref="gml:QuantityExtent"/>
<element ref="gml:CountExtent"/>
</choice>
</group>
<!-- ======================================================================
<element name="QuantityExtent" type="gml:QuantityExtentType" substitutionGroup="gml:_Value"> -->
<element name="QuantityExtent" type="gml:QuantityExtentType">
<annotation>
<documentation>Utility element to store a 2-point range of numeric values. If one member is a null, then this is a single ended interval.</documentation>
</annotation>
</element>
<!-- -->
<complexType name="QuantityExtentType">
<annotation>
<documentation>Restriction of list type to store a 2-point range of numeric values. If one member is a null, then this is a single ended interval.</documentation>
</annotation>
<simpleContent>
<restriction base="gml:MeasureOrNullListType">
<length value="2"/>
</restriction>
</simpleContent>
</complexType>
<!-- ======================================================================
<element name="CategoryExtent" type="gml:CategoryExtentType" substitutionGroup="gml:_Value"> -->
<element name="CategoryExtent" type="gml:CategoryExtentType">
<annotation>
<documentation>Utility element to store a 2-point range of ordinal values. If one member is a null, then this is a single ended interval.</documentation>
</annotation>
</element>
<!-- -->
<complexType name="CategoryExtentType">
<annotation>
<documentation>Restriction of list type to store a 2-point range of ordinal values. If one member is a null, then this is a single ended interval.</documentation>
</annotation>
<simpleContent>
<restriction base="gml:CodeOrNullListType">
<length value="2"/>
</restriction>
</simpleContent>
</complexType>
<!-- ======================================================================
<element name="CountExtent" type="gml:CountExtentType" substitutionGroup="gml:_Value"> -->
<element name="CountExtent" type="gml:CountExtentType">
<annotation>
<documentation>Utility element to store a 2-point range of frequency values. If one member is a null, then this is a single ended interval.</documentation>
</annotation>
</element>
<!-- -->
<simpleType name="CountExtentType">
<annotation>
<documentation>Restriction of list type to store a 2-point range of frequency values. If one member is a null, then this is a single ended interval.</documentation>
</annotation>
<restriction base="gml:integerOrNullList">
<length value="2"/>
</restriction>
</simpleType>
<!-- ====================================================================== -->
<!-- ===================== pieces needed for compositing ==================== -->
<element name="valueProperty" type="gml:ValuePropertyType">
<annotation>
<documentation>Element which refers to, or contains, a Value</documentation>
</annotation>
</element>
<!-- ====================================================================== -->
<element name="valueComponent" type="gml:ValuePropertyType">
<annotation>
<documentation>Element which refers to, or contains, a Value. This version is used in CompositeValues.</documentation>
</annotation>
</element>
<!-- ====================================================================== -->
<complexType name="ValuePropertyType">
<annotation>
<documentation>GML property which refers to, or contains, a Value</documentation>
</annotation>
<sequence minOccurs="0">
<group ref="gml:Value"/>
</sequence>
<attributeGroup ref="gml:AssociationAttributeGroup"/>
</complexType>
<!-- ====================================================================== -->
<!-- ====================================================================== -->
<element name="valueComponents" type="gml:ValueArrayPropertyType">
<annotation>
<documentation>Element which refers to, or contains, a set of homogeneously typed Values.</documentation>
</annotation>
</element>
<!-- ====================================================================== -->
<complexType name="ValueArrayPropertyType">
<annotation>
<documentation>GML property which refers to, or contains, a set of homogeneously typed Values.</documentation>
</annotation>
<sequence>
<group ref="gml:Value" maxOccurs="unbounded"/>
</sequence>
</complexType>
<!-- ====================== utility typed valueProperty types =================== -->
<complexType name="ScalarValuePropertyType">
<annotation>
<documentation>Property whose content is a scalar value.</documentation>
</annotation>
<complexContent>
<restriction base="gml:ValuePropertyType">
<sequence minOccurs="0">
<!-- <element ref="gml:_ScalarValue"/> -->
<group ref="gml:ScalarValue"/>
</sequence>
</restriction>
</complexContent>
</complexType>
<complexType name="BooleanPropertyType">
<annotation>
<documentation>Property whose content is a Boolean value.</documentation>
</annotation>
<complexContent>
<restriction base="gml:ValuePropertyType">
<sequence minOccurs="0">
<element ref="gml:Boolean"/>
</sequence>
</restriction>
</complexContent>
</complexType>
<complexType name="CategoryPropertyType">
<annotation>
<documentation>Property whose content is a Category.</documentation>
</annotation>
<complexContent>
<restriction base="gml:ValuePropertyType">
<sequence minOccurs="0">
<element ref="gml:Category"/>
</sequence>
</restriction>
</complexContent>
</complexType>
<complexType name="QuantityPropertyType">
<annotation>
<documentation>Property whose content is a Quantity.</documentation>
</annotation>
<complexContent>
<restriction base="gml:ValuePropertyType">
<sequence minOccurs="0">
<element ref="gml:Quantity"/>
</sequence>
</restriction>
</complexContent>
</complexType>
<complexType name="CountPropertyType">
<annotation>
<documentation>Property whose content is a Count.</documentation>
</annotation>
<complexContent>
<restriction base="gml:ValuePropertyType">
<sequence minOccurs="0">
<element ref="gml:Count"/>
</sequence>
</restriction>
</complexContent>
</complexType>
<!-- ====================================================================== -->
</schema>
<?xml version="1.0" encoding="UTF-8"?>
<!--
=================== OpenGIS ============================
This schema is here because there are errors in publicly available smil schemas at w3c site.
One is acknowledged by w3c - it is typographical error described in SMIL errata document at:
http://www.w3.org/2001/07/REC-SMIL20-20010731-errata
under:
E30: Correction in the SMIL 2.0 utility Schema, section B.3.48 (revised 29 03 2002)
Others (at least one) are assumed after failed validation using Visual Studio .NET.
These smil schemas are reorganized to include in minimum number of files all and only definitions required by
defaultStyle.xsd. It was done to enable the validation of GML3.0 schemas.
When w3c fixes the public schemas these will be discarded
comment: Milan Trninic, Galdos Systems Inc., May 2002
=================== OpenGIS ============================
-->
<!--
XML Schema for the SMIL 2.0 Language
This is SMIL 2.0
Copyright: 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
See http://www.w3.org/Consortium/Legal/.
Public URI: http://www.w3.org/2001/SMIL20/smil20-language.xsd
Author: Aaron Michael Cohen (Intel)
Revision: 2001/07/15
Note: <any> wildcard element content is missing from most of the SMIL 2.0 elements because of a conflict
between substitutionGroups and wildcard content.
-->
<schema targetNamespace="http://www.w3.org/2001/SMIL20/Language" xmlns:smil20lang="http://www.w3.org/2001/SMIL20/Language" xmlns:smil20="http://www.w3.org/2001/SMIL20/" xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<!-- import the smil20 namespaces -->
<import namespace="http://www.w3.org/2001/SMIL20/" schemaLocation="smil20.xsd"/>
<element name="animate" type="smil20lang:animateType"/>
<complexType name="animateType">
<complexContent>
<extension base="smil20:animatePrototype">
<choice minOccurs="0" maxOccurs="unbounded">
<any namespace="##other" processContents="lax"/>
</choice>
<attributeGroup ref="smil20lang:CoreAttrs"/>
<attributeGroup ref="smil20lang:TimingAttrs"/>
<attributeGroup ref="smil20:animTargetAttrs"/>
<attributeGroup ref="smil20:animModeAttrs"/>
<attributeGroup ref="smil20:skipContentAttrs"/>
<anyAttribute namespace="##any" processContents="strict"/>
</extension>
</complexContent>
</complexType>
<attributeGroup name="CoreAttrs">
<attributeGroup ref="smil20:structureModuleAttrs"/>
<attributeGroup ref="smil20:alternateContentAttrs"/>
</attributeGroup>
<attributeGroup name="TimingAttrs">
<attributeGroup ref="smil20lang:BasicTimingAttrs"/>
<attributeGroup ref="smil20:syncBehaviorAttrs"/>
<attributeGroup ref="smil20:syncBehaviorDefaultAttrs"/>
<attributeGroup ref="smil20:restartTimingAttrs"/>
<attributeGroup ref="smil20:restartDefaultAttrs"/>
<attributeGroup ref="smil20:fillTimingAttrs"/>
<attributeGroup ref="smil20:fillDefaultAttrs"/>
</attributeGroup>
<attributeGroup name="BasicTimingAttrs">
<attributeGroup ref="smil20:beginEndTimingAttrs"/>
<attributeGroup ref="smil20:durTimingAttrs"/>
<attributeGroup ref="smil20:repeatTimingAttrs"/>
<attributeGroup ref="smil20:deprecatedRepeatTiming"/>
<attributeGroup ref="smil20:minMaxTimingAttrs"/>
</attributeGroup>
<element name="animateMotion" type="smil20lang:animateMotionType"/>
<complexType name="animateMotionType">
<complexContent>
<extension base="smil20:animateMotionPrototype">
<choice minOccurs="0" maxOccurs="unbounded">
<any namespace="##other" processContents="lax"/>
</choice>
<attributeGroup ref="smil20lang:CoreAttrs"/>
<attributeGroup ref="smil20lang:TimingAttrs"/>
<attributeGroup ref="smil20:animTargetAttrs"/>
<attributeGroup ref="smil20:animModeAttrs"/>
<attributeGroup ref="smil20:skipContentAttrs"/>
<anyAttribute namespace="##any" processContents="strict"/>
</extension>
</complexContent>
</complexType>
<element name="animateColor" type="smil20lang:animateColorType"/>
<complexType name="animateColorType">
<complexContent>
<extension base="smil20:animateColorPrototype">
<choice minOccurs="0" maxOccurs="unbounded">
<any namespace="##other" processContents="lax"/>
</choice>
<attributeGroup ref="smil20lang:CoreAttrs"/>
<attributeGroup ref="smil20lang:TimingAttrs"/>
<attributeGroup ref="smil20:animTargetAttrs"/>
<attributeGroup ref="smil20:animModeAttrs"/>
<attributeGroup ref="smil20:skipContentAttrs"/>
<anyAttribute namespace="##any" processContents="strict"/>
</extension>
</complexContent>
</complexType>
<element name="set" type="smil20lang:setType"/>
<complexType name="setType">
<complexContent>
<extension base="smil20:setPrototype">
<choice minOccurs="0" maxOccurs="unbounded">
<any namespace="##other" processContents="lax"/>
</choice>
<attributeGroup ref="smil20lang:CoreAttrs"/>
<attributeGroup ref="smil20lang:TimingAttrs"/>
<attributeGroup ref="smil20:animTargetAttrs"/>
<attributeGroup ref="smil20:skipContentAttrs"/>
<anyAttribute namespace="##any" processContents="strict"/>
</extension>
</complexContent>
</complexType>
</schema>
<?xml version="1.0" encoding="UTF-8"?>
<!--
=================== OpenGIS ============================
This schema is here because there are errors in publicly available smil schemas at w3c site.
One is acknowledged by w3c - it is typographical error described in SMIL errata document at:
http://www.w3.org/2001/07/REC-SMIL20-20010731-errata
under:
E30: Correction in the SMIL 2.0 utility Schema, section B.3.48 (revised 29 03 2002)
Others (at least one) are assumed after failed validation using Visual Studio .NET.
These smil schemas are reorganized to include in minimum number of files all and only definitions required by
defaultStyle.xsd. It was done to enable the validation of GML3.0 schemas.
When w3c fixes the public schemas these will be discarded
comment: Milan Trninic, Galdos Systems Inc., May 2002
comment#2: Milan Trninic, Galdos Systems Inc., Dec 2002
In order to validate with xerces, changed the "x:" prefix to "xml:" in the namespace declaration and reference to "lang" attribute
=================== OpenGIS ============================
-->
<!--
XML Schema for the SMIL 2.0 modules
This is SMIL 2.0
Copyright: 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.
See http://www.w3.org/Consortium/Legal/.
Public URI: http://www.w3.org/2001/SMIL20/smil20.xsd
Author: Aaron Michael Cohen (Intel)
Revision: 2001/07/31
-->
<schema targetNamespace="http://www.w3.org/2001/SMIL20/" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:smil20="http://www.w3.org/2001/SMIL20/" xmlns:smil20lang="http://www.w3.org/2001/SMIL20/Language" elementFormDefault="qualified">
<import namespace="http://www.w3.org/2001/SMIL20/Language" schemaLocation="smil20-language.xsd"/>
<!-- =============================================================
struct.xsd
============================================================== -->
<import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml-mod.xsd"/>
<attributeGroup name="structureModuleAttrs">
<attribute name="id" type="ID" use="optional"/>
<attribute name="class" type="string" use="optional"/>
<attribute ref="xml:lang" use="optional"/>
</attributeGroup>
<!-- =============================================================
content.xsd
============================================================== -->
<attributeGroup name="skipContentAttrs">
<attribute name="skip-content" type="boolean" use="optional" default="true"/>
</attributeGroup>
<!-- =============================================================
media.xsd
============================================================== -->
<attributeGroup name="alternateContentAttrs">
<attribute name="alt" type="string" use="optional"/>
<attribute name="longdesc" type="anyURI" use="optional"/>
</attributeGroup>
<!-- =============================================================
utility.xsd
============================================================== -->
<simpleType name="nonNegativeDecimalType">
<restriction base="decimal">
<minInclusive value="0.0"/>
</restriction>
</simpleType>
<!-- =============================================================
animate.xsd
============================================================== -->
<element name="animate" type="smil20lang:animateType" substitutionGroup="smil20lang:animate"/>
<complexType name="animatePrototype">
<attributeGroup ref="smil20:animNamedTargetAttrs"/>
<attributeGroup ref="smil20:animAddAccumAttrs"/>
<attributeGroup ref="smil20:animValuesAttrs"/>
</complexType>
<attributeGroup name="animNamedTargetAttrs">
<attribute name="attributeName" type="string" use="required"/>
<attribute name="attributeType" use="optional" default="auto">
<simpleType>
<restriction base="string">
<enumeration value="XML"/>
<enumeration value="CSS"/>
<enumeration value="auto"/>
</restriction>
</simpleType>
</attribute>
</attributeGroup>
<attributeGroup name="animAddAccumAttrs">
<attribute name="additive" use="optional" default="replace">
<simpleType>
<restriction base="string">
<enumeration value="replace"/>
<enumeration value="sum"/>
</restriction>
</simpleType>
</attribute>
<attribute name="accumulate" use="optional" default="none">
<simpleType>
<restriction base="string">
<enumeration value="none"/>
<enumeration value="sum"/>
</restriction>
</simpleType>
</attribute>
</attributeGroup>
<attributeGroup name="animValuesAttrs">
<attributeGroup ref="smil20:animSetValuesAttrs"/>
<attribute name="from" type="string" use="optional"/>
<attribute name="by" type="string" use="optional"/>
<attribute name="values" type="string" use="optional"/>
</attributeGroup>
<attributeGroup name="animSetValuesAttrs">
<attribute name="to" type="string" use="optional"/>
</attributeGroup>
<attributeGroup name="animTargetAttrs">
<attribute name="targetElement" type="IDREF" use="optional"/>
</attributeGroup>
<attributeGroup name="animModeAttrs">
<attribute name="calcMode" use="optional" default="linear">
<simpleType>
<restriction base="string">
<enumeration value="discrete"/>
<enumeration value="linear"/>
<enumeration value="paced"/>
</restriction>
</simpleType>
</attribute>
</attributeGroup>
<element name="animateMotion" type="smil20lang:animateMotionType" substitutionGroup="smil20lang:animateMotion"/>
<complexType name="animateMotionPrototype">
<attributeGroup ref="smil20:animAddAccumAttrs"/>
<attributeGroup ref="smil20:animValuesAttrs"/>
<attribute name="origin" type="string" use="optional"/>
</complexType>
<element name="animateColor" type="smil20lang:animateColorType" substitutionGroup="smil20lang:animateColor"/>
<complexType name="animateColorPrototype">
<attributeGroup ref="smil20:animNamedTargetAttrs"/>
<attributeGroup ref="smil20:animAddAccumAttrs"/>
<attributeGroup ref="smil20:animValuesAttrs"/>
</complexType>
<element name="set" type="smil20lang:setType" substitutionGroup="smil20lang:set"/>
<complexType name="setPrototype">
<attributeGroup ref="smil20:animNamedTargetAttrs"/>
<attributeGroup ref="smil20:animSetValuesAttrs"/>
</complexType>
<!-- =============================================================
timing.xsd
============================================================== -->
<attributeGroup name="syncBehaviorAttrs">
<attribute name="syncBehavior" type="smil20:syncBehaviorType" default="default"/>
<attribute name="syncTolerance" type="string" use="optional"/>
</attributeGroup>
<simpleType name="syncBehaviorType">
<restriction base="string">
<enumeration value="canSlip"/>
<enumeration value="locked"/>
<enumeration value="independent"/>
<enumeration value="default"/>
</restriction>
</simpleType>
<attributeGroup name="syncBehaviorDefaultAttrs">
<attribute name="syncBehaviorDefault" type="smil20:syncBehaviorDefaultType" default="inherit"/>
<attribute name="syncToleranceDefault" type="string" default="inherit"/>
</attributeGroup>
<simpleType name="syncBehaviorDefaultType">
<restriction base="string">
<enumeration value="canSlip"/>
<enumeration value="locked"/>
<enumeration value="independent"/>
<enumeration value="inherit"/>
</restriction>
</simpleType>
<attributeGroup name="restartTimingAttrs">
<attribute name="restart" type="smil20:restartTimingType" default="default"/>
</attributeGroup>
<simpleType name="restartTimingType">
<restriction base="string">
<enumeration value="never"/>
<enumeration value="always"/>
<enumeration value="whenNotActive"/>
<enumeration value="default"/>
</restriction>
</simpleType>
<attributeGroup name="restartDefaultAttrs">
<attribute name="restartDefault" type="smil20:restartDefaultType" default="inherit"/>
</attributeGroup>
<simpleType name="restartDefaultType">
<restriction base="string">
<enumeration value="never"/>
<enumeration value="always"/>
<enumeration value="whenNotActive"/>
<enumeration value="inherit"/>
</restriction>
</simpleType>
<attributeGroup name="fillTimingAttrs">
<attribute name="fill" type="smil20:fillTimingAttrsType" default="default"/>
</attributeGroup>
<simpleType name="fillTimingAttrsType">
<restriction base="string">
<enumeration value="remove"/>
<enumeration value="freeze"/>
<enumeration value="hold"/>
<enumeration value="auto"/>
<enumeration value="default"/>
<enumeration value="transition"/>
</restriction>
</simpleType>
<attributeGroup name="fillDefaultAttrs">
<attribute name="fillDefault" type="smil20:fillDefaultType" default="inherit"/>
</attributeGroup>
<simpleType name="fillDefaultType">
<restriction base="string">
<enumeration value="remove"/>
<enumeration value="freeze"/>
<enumeration value="hold"/>
<enumeration value="auto"/>
<enumeration value="inherit"/>
<enumeration value="transition"/>
</restriction>
</simpleType>
<attributeGroup name="beginEndTimingAttrs">
<attribute name="begin" type="string"/>
<attribute name="end" type="string"/>
</attributeGroup>
<attributeGroup name="durTimingAttrs">
<attribute name="dur" type="string"/>
</attributeGroup>
<attributeGroup name="repeatTimingAttrs">
<attribute name="repeatDur" type="string"/>
<attribute name="repeatCount" type="smil20:nonNegativeDecimalType"/>
</attributeGroup>
<attributeGroup name="deprecatedRepeatTiming">
<attribute name="repeat" type="nonNegativeInteger"/>
</attributeGroup>
<attributeGroup name="minMaxTimingAttrs">
<attribute name="min" type="string"/>
<attribute name="max" type="string"/>
</attributeGroup>
</schema>
<?xml version="1.0" encoding="UTF-8"?>
<!--
=================== OpenGIS ============================
This schema is required by SMIL schemas.
There are errors in publicly available smil schemas at w3c site.
One is acknowledged by w3c - it is typographical error described in SMIL errata document at:
http://www.w3.org/2001/07/REC-SMIL20-20010731-errata
under:
E30: Correction in the SMIL 2.0 utility Schema, section B.3.48 (revised 29 03 2002)
Others (at least one) are assumed after failed validation using Visual Studio .NET.
These smil schemas are reorganized to include in minimum number of files all and only definitions required by
defaultStyle.xsd. It was done to enable the validation of GML3.0 schemas.
When w3c fixes the public schemas these will be discarded
comment: Milan Trninic, Galdos Systems Inc., May 2002
comment#2: Milan Trninic, Galdos Systems Inc., Dec 2002
In order to validate with xerces, changed the "x:" prefix to "xml:" in the namespace declaration and references to "lang" and "space" attributes
=================== OpenGIS ============================
-->
<schema targetNamespace="http://www.w3.org/XML/1998/namespace" xmlns="http://www.w3.org/2001/XMLSchema">
<attribute name="lang" type="language">
<annotation>
<documentation>In due course, we should install the relevant ISO 2- and 3-letter
codes as the enumerated possible values . . .</documentation>
</annotation>
</attribute>
<attribute name="space" default="preserve">
<simpleType>
<restriction base="NCName">
<enumeration value="default"/>
<enumeration value="preserve"/>
</restriction>
</simpleType>
</attribute>
<attributeGroup name="specialAttrs">
<attribute ref="xml:lang"/>
<attribute ref="xml:space"/>
</attributeGroup>
</schema>
<?xml version="1.0" encoding="UTF-8"?>
<!-- File: xlinks.xsd -->
<schema targetNamespace="http://www.w3.org/1999/xlink" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xsd="http://www.w3.org/2001/XMLSchema" version="2.0">
<annotation>
<appinfo source="urn:opengis:specification:gml:schema-xlinks:v3.0c2">xlinks.xsd v3.0b2 2001-07</appinfo>
<documentation>
GML 3.0 candidate xlinks schema. Copyright (c) 2001 OGC, All Rights Reserved.
</documentation>
</annotation>
<!-- ==============================================================
global declarations
=============================================================== -->
<!-- locator attribute -->
<attribute name="href" type="anyURI"/>
<!-- semantic attributes -->
<attribute name="role" type="anyURI"/>
<attribute name="arcrole" type="anyURI"/>
<attribute name="title" type="string"/>
<!-- behavior attributes -->
<attribute name="show">
<annotation>
<documentation>
The 'show' attribute is used to communicate the desired presentation
of the ending resource on traversal from the starting resource; it's
value should be treated as follows:
new - load ending resource in a new window, frame, pane, or other
presentation context
replace - load the resource in the same window, frame, pane, or
other presentation context
embed - load ending resource in place of the presentation of the
starting resource
other - behavior is unconstrained; examine other markup in the
link for hints
none - behavior is unconstrained
</documentation>
</annotation>
<simpleType>
<restriction base="string">
<enumeration value="new"/>
<enumeration value="replace"/>
<enumeration value="embed"/>
<enumeration value="other"/>
<enumeration value="none"/>
</restriction>
</simpleType>
</attribute>
<attribute name="actuate">
<annotation>
<documentation>
The 'actuate' attribute is used to communicate the desired timing
of traversal from the starting resource to the ending resource;
it's value should be treated as follows:
onLoad - traverse to the ending resource immediately on loading
the starting resource
onRequest - traverse from the starting resource to the ending
resource only on a post-loading event triggered for
this purpose
other - behavior is unconstrained; examine other markup in link
for hints
none - behavior is unconstrained
</documentation>
</annotation>
<simpleType>
<restriction base="string">
<enumeration value="onLoad"/>
<enumeration value="onRequest"/>
<enumeration value="other"/>
<enumeration value="none"/>
</restriction>
</simpleType>
</attribute>
<!-- traversal attributes -->
<attribute name="label" type="string"/>
<attribute name="from" type="string"/>
<attribute name="to" type="string"/>
<!-- ==============================================================
Attributes grouped by XLink type, as specified in the W3C
Proposed Recommendation (dated 2000-12-20)
============================================================== -->
<attributeGroup name="simpleLink">
<attribute name="type" type="string" fixed="simple" form="qualified"/>
<attribute ref="xlink:href" use="optional"/>
<attribute ref="xlink:role" use="optional"/>
<attribute ref="xlink:arcrole" use="optional"/>
<attribute ref="xlink:title" use="optional"/>
<attribute ref="xlink:show" use="optional"/>
<attribute ref="xlink:actuate" use="optional"/>
</attributeGroup>
<attributeGroup name="extendedLink">
<attribute name="type" type="string" fixed="extended" form="qualified"/>
<attribute ref="xlink:role" use="optional"/>
<attribute ref="xlink:title" use="optional"/>
</attributeGroup>
<attributeGroup name="locatorLink">
<attribute name="type" type="string" fixed="locator" form="qualified"/>
<attribute ref="xlink:href" use="required"/>
<attribute ref="xlink:role" use="optional"/>
<attribute ref="xlink:title" use="optional"/>
<attribute ref="xlink:label" use="optional"/>
</attributeGroup>
<attributeGroup name="arcLink">
<attribute name="type" type="string" fixed="arc" form="qualified"/>
<attribute ref="xlink:arcrole" use="optional"/>
<attribute ref="xlink:title" use="optional"/>
<attribute ref="xlink:show" use="optional"/>
<attribute ref="xlink:actuate" use="optional"/>
<attribute ref="xlink:from" use="optional"/>
<attribute ref="xlink:to" use="optional"/>
</attributeGroup>
<attributeGroup name="resourceLink">
<attribute name="type" type="string" fixed="resource" form="qualified"/>
<attribute ref="xlink:role" use="optional"/>
<attribute ref="xlink:title" use="optional"/>
<attribute ref="xlink:label" use="optional"/>
</attributeGroup>
<attributeGroup name="titleLink">
<attribute name="type" type="string" fixed="title" form="qualified"/>
</attributeGroup>
<attributeGroup name="emptyLink">
<attribute name="type" type="string" fixed="none" form="qualified"/>
</attributeGroup>
</schema>
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment