1<?xml version="1.0" encoding="UTF-8"?>
2<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"
3        version="3.1.1 2010-01-28">
4	<annotation>
5		<appinfo source="urn:opengis:specification:gml:schema-xsd:geometryComplexes:v3.1.1">geometryComplexes.xsd</appinfo>
6		<documentation>
7			GML is an OGC Standard.
8			Copyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved.
9			To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .
10		</documentation>
11	</annotation>
12	<include schemaLocation="geometryAggregates.xsd"/>
13	<!-- =========================================================== -->
14	<element name="CompositeCurve" type="gml:CompositeCurveType" substitutionGroup="gml:_Curve"/>
15	<!-- =========================================================== -->
16	<complexType name="CompositeCurveType">
17		<annotation>
18			<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>
19		</annotation>
20		<complexContent>
21			<extension base="gml:AbstractCurveType">
22				<sequence>
23					<element ref="gml:curveMember" maxOccurs="unbounded">
24						<annotation>
25							<documentation>This element references or contains one curve in the composite curve. The curves are contiguous, the collection of curves is ordered.
26NOTE: This definition allows for a nested structure, i.e. a CompositeCurve may use, for example, another CompositeCurve as a curve member.</documentation>
27						</annotation>
28					</element>
29				</sequence>
30			</extension>
31		</complexContent>
32	</complexType>
33	<!-- ============================================================== -->
34	<complexType name="CompositeCurvePropertyType">
35		<sequence minOccurs="0">
36			<element ref="gml:CompositeCurve"/>
37		</sequence>
38		<attributeGroup ref="gml:AssociationAttributeGroup"/>
39	</complexType>
40	<!-- =========================================================== -->
41	<element name="CompositeSurface" type="gml:CompositeSurfaceType" substitutionGroup="gml:_Surface"/>
42	<!-- =========================================================== -->
43	<complexType name="CompositeSurfaceType">
44		<annotation>
45			<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>
46		</annotation>
47		<complexContent>
48			<extension base="gml:AbstractSurfaceType">
49				<sequence>
50					<element ref="gml:surfaceMember" maxOccurs="unbounded">
51						<annotation>
52							<documentation>This element references or contains one surface in the composite surface. The surfaces are contiguous.
53NOTE: This definition allows for a nested structure, i.e. a CompositeSurface may use, for example, another CompositeSurface as a member.</documentation>
54						</annotation>
55					</element>
56				</sequence>
57			</extension>
58		</complexContent>
59	</complexType>
60	<!-- ============================================================== -->
61	<complexType name="CompositeSurfacePropertyType">
62		<sequence minOccurs="0">
63			<element ref="gml:CompositeSurface"/>
64		</sequence>
65		<attributeGroup ref="gml:AssociationAttributeGroup"/>
66	</complexType>
67	<!-- =========================================================== -->
68	<element name="CompositeSolid" type="gml:CompositeSolidType" substitutionGroup="gml:_Solid"/>
69	<!-- =========================================================== -->
70	<complexType name="CompositeSolidType">
71		<annotation>
72			<documentation>A composite solid is a geometry type with all the geometric properties of a (primitive) solid.
73				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>
74		</annotation>
75		<complexContent>
76			<extension base="gml:AbstractSolidType">
77				<sequence>
78					<element ref="gml:solidMember" maxOccurs="unbounded">
79						<annotation>
80							<appinfo>
81								<sch:pattern name="Check either href or content not both">
82									<sch:rule context="gml:solidMember">
83										<sch:extends rule="hrefOrContent"/>
84									</sch:rule>
85								</sch:pattern>
86							</appinfo>
87							<documentation>This element references or contains one solid in the composite solid. The solids are contiguous.
88NOTE: This definition allows for a nested structure, i.e. a CompositeSolid may use, for example, another CompositeSolid as a member.</documentation>
89						</annotation>
90					</element>
91				</sequence>
92			</extension>
93		</complexContent>
94	</complexType>
95	<!-- ============================================================== -->
96	<complexType name="CompositeSolidPropertyType">
97		<sequence minOccurs="0">
98			<element ref="gml:CompositeSolid"/>
99		</sequence>
100		<attributeGroup ref="gml:AssociationAttributeGroup"/>
101	</complexType>
102	<!-- =========================================================== -->
103	<!-- complex/composite geometry objects -->
104	<!-- =========================================================== -->
105	<element name="GeometricComplex" type="gml:GeometricComplexType" substitutionGroup="gml:_Geometry"/>
106	<!-- =========================================================== -->
107	<complexType name="GeometricComplexType">
108		<annotation>
109			<documentation>A geometric complex.</documentation>
110		</annotation>
111		<complexContent>
112			<extension base="gml:AbstractGeometryType">
113				<sequence>
114					<element name="element" type="gml:GeometricPrimitivePropertyType" maxOccurs="unbounded"/>
115				</sequence>
116			</extension>
117		</complexContent>
118	</complexType>
119	<!-- =========================================================== -->
120	<complexType name="GeometricComplexPropertyType">
121		<annotation>
122			<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.
123NOTE: 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>
124		</annotation>
125		<sequence minOccurs="0">
126			<choice>
127				<element ref="gml:GeometricComplex"/>
128				<element ref="gml:CompositeCurve"/>
129				<element ref="gml:CompositeSurface"/>
130				<element ref="gml:CompositeSolid"/>
131			</choice>
132		</sequence>
133		<attributeGroup ref="gml:AssociationAttributeGroup">
134			<annotation>
135				<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.
136A 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>
137			</annotation>
138		</attributeGroup>
139	</complexType>
140	<!-- =========================================================== -->
141</schema>