#ifndef geometryBasic2d321_H
#define geometryBasic2d321_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* geometryBasic2d321[] = {
	"<?xml version=\"1.0\" encoding=\"UTF-8\"?>",
	"<schema targetNamespace=\"http://www.opengis.net/gml/3.2\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" version=\"3.2.1.2\">",
	"	<annotation>",
	"		<appinfo source=\"urn:x-ogc:specification:gml:schema-xsd:geometryBasic2d:3.2.1\">geometryBasic2d.xsd</appinfo>",
	"		<documentation>See ISO/DIS 19136 Clause 10.",
	"			",
	"			GML is an OGC Standard.",
	"			Copyright (c) 2007,2010 Open Geospatial Consortium.",
	"			To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .",
	"		</documentation>",
	"	</annotation>",
	"	<include schemaLocation=\"gml.xsd\"/>",
	"	<include schemaLocation=\"geometryBasic0d1d.xsd\"/>",
	"	<complexType name=\"AbstractSurfaceType\" abstract=\"true\">",
	"		<annotation>",
	"			<documentation>gml:AbstractSurfaceType is 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=\"AbstractSurface\" type=\"gml:AbstractSurfaceType\" abstract=\"true\" substitutionGroup=\"gml:AbstractGeometricPrimitive\">",
	"		<annotation>",
	"			<documentation>The AbstractSurface element is the abstract head of the substitution group for all (continuous) surface elements.</documentation>",
	"		</annotation>",
	"	</element>",
	"	<complexType name=\"SurfacePropertyType\">",
	"		<annotation>",
	"			<documentation>A property that has a surface as its value domain may 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 shall be given, but neither both nor none.</documentation>",
	"		</annotation>",
	"		<sequence minOccurs=\"0\">",
	"			<element ref=\"gml:AbstractSurface\"/>",
	"		</sequence>",
	"		<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>",
	"		<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>",
	"	</complexType>",
	"	<element name=\"surfaceProperty\" type=\"gml:SurfacePropertyType\">",
	"		<annotation>",
	"			<documentation>This property element either references a surface via the XLink-attributes or contains the surface element. surfaceProperty is the predefined property which may be used by GML Application Schemas whenever a GML feature has a property with a value that is substitutable for AbstractSurface.</documentation>",
	"		</annotation>",
	"	</element>",
	"	<complexType name=\"SurfaceArrayPropertyType\">",
	"		<annotation>",
	"			<documentation>gml:SurfaceArrayPropertyType is a container for an array of surfaces. The elements are always contained in the array property, referencing geometry elements or arrays of geometry elements via XLinks is not supported.</documentation>",
	"		</annotation>",
	"		<sequence minOccurs=\"0\" maxOccurs=\"unbounded\">",
	"			<element ref=\"gml:AbstractSurface\"/>",
	"		</sequence>",
	"		<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>",
	"	</complexType>",
	"	<complexType name=\"PolygonType\">",
	"		<complexContent>",
	"			<extension base=\"gml:AbstractSurfaceType\">",
	"				<sequence>",
	"					<element ref=\"gml:exterior\" minOccurs=\"0\"/>",
	"					<element ref=\"gml:interior\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>",
	"				</sequence>",
	"			</extension>",
	"		</complexContent>",
	"	</complexType>",
	"	<element name=\"Polygon\" type=\"gml:PolygonType\" substitutionGroup=\"gml:AbstractSurface\">",
	"		<annotation>",
	"			<documentation>A Polygon is a special surface that is defined by a single surface patch (see D.3.6). The boundary of this patch is coplanar and the polygon uses planar interpolation in its interior. ",
	"The elements exterior and interior describe the surface boundary of the polygon.</documentation>",
	"		</annotation>",
	"	</element>",
	"	<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 separate the surface / surface patch from the area enclosed by the rings.</documentation>",
	"		</annotation>",
	"	</element>",
	"	<complexType name=\"AbstractRingType\" abstract=\"true\">",
	"		<sequence/>",
	"	</complexType>",
	"	<element name=\"AbstractRing\" type=\"gml:AbstractRingType\" abstract=\"true\" substitutionGroup=\"gml:AbstractObject\">",
	"		<annotation>",
	"			<documentation>An abstraction of a ring to support surface boundaries of different complexity.",
	"The AbstractRing element is the abstract head of the substituition group for all closed boundaries of a surface patch.</documentation>",
	"		</annotation>",
	"	</element>",
	"	<complexType name=\"AbstractRingPropertyType\">",
	"		<annotation>",
	"			<documentation>A property with the content model of gml:AbstractRingPropertyType encapsulates a ring to represent the surface boundary property of a surface.</documentation>",
	"		</annotation>",
	"		<sequence>",
	"			<element ref=\"gml:AbstractRing\"/>",
	"		</sequence>",
	"	</complexType>",
	"	<complexType name=\"LinearRingType\">",
	"		<complexContent>",
	"			<extension base=\"gml:AbstractRingType\">",
	"				<sequence>",
	"					<choice>",
	"						<choice minOccurs=\"4\" maxOccurs=\"unbounded\">",
	"							<element ref=\"gml:pos\"/>",
	"							<element ref=\"gml:pointProperty\"/>",
	"							<element ref=\"gml:pointRep\"/>",
	"						</choice>",
	"						<element ref=\"gml:posList\"/>",
	"						<element ref=\"gml:coordinates\"/>",
	"					</choice>",
	"				</sequence>",
	"			</extension>",
	"		</complexContent>",
	"	</complexType>",
	"	<element name=\"LinearRing\" type=\"gml:LinearRingType\" substitutionGroup=\"gml:AbstractRing\">",
	"		<annotation>",
	"			<documentation>A LinearRing is defined by four or more coordinate tuples, with linear interpolation between them; the first and last coordinates shall be coincident. The number of direct positions in the list shall be at least four.</documentation>",
	"		</annotation>",
	"	</element>",
	"	<complexType name=\"LinearRingPropertyType\">",
	"		<annotation>",
	"			<documentation>A property with the content model of gml:LinearRingPropertyType encapsulates a linear ring to represent a component of a surface boundary.</documentation>",
	"		</annotation>",
	"		<sequence>",
	"			<element ref=\"gml:LinearRing\"/>",
	"		</sequence>",
	"	</complexType>",
	"</schema>",
	NULL
};

#endif
