#ifndef geometryComplexes3_H
#define geometryComplexes3_H

 //
 // Copyright (C) 2004-2010  Autodesk, Inc.
 // 
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of version 2.1 of the GNU Lesser
 // General Public License as published by the Free Software Foundation.
 // 
 // This library is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 // Lesser General Public License for more details.
 // 
 // You should have received a copy of the GNU Lesser General Public
 // License along with this library; if not, write to the Free Software
 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA

static const char* geometryComplexes3[] = {
"<?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>",
NULL
};

#endif
