<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:gml="http://www.opengis.net/gml" targetNamespace="http://www.opengis.net/gml" elementFormDefault="qualified" version="3.2.0" xml:lang="en" finalDefault="" blockDefault="" attributeFormDefault="unqualified">
    <annotation>
        <appinfo source="urn:opengis:specification:gml:schema-xsd:coordinateReferenceSystems:3.2.0">coordinateReferenceSystems.xsd</appinfo>
        <documentation>see GML 12.3</documentation>
    </annotation>
    <include schemaLocation="coordinateSystems.xsd"/>
    <include schemaLocation="datums.xsd"/>
    <include schemaLocation="coordinateOperations.xsd"/>
    <element name="AbstractSingleCRS" type="gml:AbstractCRSType" abstract="true" substitutionGroup="gml:AbstractCRS" nillable="false"/>
    <complexType name="SingleCRSPropertyType" mixed="false" abstract="false">
        <sequence minOccurs="0" maxOccurs="1">
            <element ref="gml:AbstractSingleCRS" minOccurs="1" maxOccurs="1" nillable="false"/>
        </sequence>
        <attributeGroup ref="gml:AssociationAttributeGroup"/>
    </complexType>
    <element name="singleCRSRef" type="gml:SingleCRSPropertyType" nillable="false" abstract="false"/>
    <element name="AbstractGeneralDerivedCRS" type="gml:AbstractGeneralDerivedCRSType" abstract="true" substitutionGroup="gml:AbstractSingleCRS" nillable="false"/>
    <complexType name="AbstractGeneralDerivedCRSType" abstract="true" mixed="false">
        <xsd:complexContent xmlns:xsd="http://www.w3.org/2001/XMLSchema">
            <extension base="gml:AbstractCRSType">
                <sequence minOccurs="1" maxOccurs="1">
                    <element ref="gml:definedByConversion" minOccurs="1" maxOccurs="1" nillable="false"/>
                </sequence>
            </extension>
        </xsd:complexContent>
    </complexType>
    <element name="definedByConversion" type="gml:GeneralConversionPropertyType" nillable="false" abstract="false"/>
    <element name="CompoundCRS" type="gml:CompoundCRSType" substitutionGroup="gml:AbstractCRS" nillable="false" abstract="false"/>
    <complexType name="CompoundCRSType" mixed="false" abstract="false">
        <xsd:complexContent xmlns:xsd="http://www.w3.org/2001/XMLSchema">
            <extension base="gml:AbstractCRSType">
                <sequence minOccurs="1" maxOccurs="1">
                    <element ref="gml:includesSingleCRS" minOccurs="2" maxOccurs="unbounded" nillable="false"/>
                </sequence>
                <attributeGroup ref="gml:AggregationAttributeGroup"/>
            </extension>
        </xsd:complexContent>
    </complexType>
    <element name="includesSingleCRS" type="gml:SingleCRSPropertyType" nillable="false" abstract="false"/>
    <complexType name="CompoundCRSPropertyType" mixed="false" abstract="false">
        <sequence minOccurs="0" maxOccurs="1">
            <element ref="gml:CompoundCRS" minOccurs="1" maxOccurs="1" nillable="false"/>
        </sequence>
        <attributeGroup ref="gml:AssociationAttributeGroup"/>
    </complexType>
    <element name="compoundCRSRef" type="gml:CompoundCRSPropertyType" nillable="false" abstract="false"/>
    <element name="GeographicCRS" type="gml:GeographicCRSType" substitutionGroup="gml:AbstractSingleCRS" nillable="false" abstract="false"/>
    <complexType name="GeographicCRSType" mixed="false" abstract="false">
        <xsd:complexContent xmlns:xsd="http://www.w3.org/2001/XMLSchema">
            <extension base="gml:AbstractCRSType">
                <sequence minOccurs="1" maxOccurs="1">
                    <element ref="gml:usesEllipsoidalCS" minOccurs="1" maxOccurs="1" nillable="false"/>
                    <element ref="gml:usesGeodeticDatum" minOccurs="1" maxOccurs="1" nillable="false"/>
                </sequence>
            </extension>
        </xsd:complexContent>
    </complexType>
    <element name="usesEllipsoidalCS" type="gml:EllipsoidalCSPropertyType" nillable="false" abstract="false"/>
    <element name="usesGeodeticDatum" type="gml:GeodeticDatumPropertyType" nillable="false" abstract="false"/>
    <complexType name="GeographicCRSPropertyType" mixed="false" abstract="false">
        <sequence minOccurs="0" maxOccurs="1">
            <element ref="gml:GeographicCRS" minOccurs="1" maxOccurs="1" nillable="false"/>
        </sequence>
        <attributeGroup ref="gml:AssociationAttributeGroup"/>
    </complexType>
    <element name="geographicCRSRef" type="gml:GeographicCRSPropertyType" nillable="false" abstract="false"/>
    <element name="VerticalCRS" type="gml:VerticalCRSType" substitutionGroup="gml:AbstractSingleCRS" nillable="false" abstract="false"/>
    <complexType name="VerticalCRSType" mixed="false" abstract="false">
        <xsd:complexContent xmlns:xsd="http://www.w3.org/2001/XMLSchema">
            <extension base="gml:AbstractCRSType">
                <sequence minOccurs="1" maxOccurs="1">
                    <element ref="gml:usesVerticalCS" minOccurs="1" maxOccurs="1" nillable="false"/>
                    <element ref="gml:usesVerticalDatum" minOccurs="1" maxOccurs="1" nillable="false"/>
                </sequence>
            </extension>
        </xsd:complexContent>
    </complexType>
    <element name="usesVerticalCS" type="gml:VerticalCSPropertyType" nillable="false" abstract="false"/>
    <element name="usesVerticalDatum" type="gml:VerticalDatumPropertyType" nillable="false" abstract="false"/>
    <complexType name="VerticalCRSPropertyType" mixed="false" abstract="false">
        <sequence minOccurs="0" maxOccurs="1">
            <element ref="gml:VerticalCRS" minOccurs="1" maxOccurs="1" nillable="false"/>
        </sequence>
        <attributeGroup ref="gml:AssociationAttributeGroup"/>
    </complexType>
    <element name="verticalCRSRef" type="gml:VerticalCRSPropertyType" nillable="false" abstract="false"/>
    <element name="GeocentricCRS" type="gml:GeocentricCRSType" substitutionGroup="gml:AbstractSingleCRS" nillable="false" abstract="false"/>
    <complexType name="GeocentricCRSType" mixed="false" abstract="false">
        <xsd:complexContent xmlns:xsd="http://www.w3.org/2001/XMLSchema">
            <extension base="gml:AbstractCRSType">
                <sequence minOccurs="1" maxOccurs="1">
                    <choice minOccurs="1" maxOccurs="1">
                        <element ref="gml:usesCartesianCS" minOccurs="1" maxOccurs="1" nillable="false"/>
                        <element ref="gml:usesSphericalCS" minOccurs="1" maxOccurs="1" nillable="false"/>
                    </choice>
                    <element ref="gml:usesGeodeticDatum" minOccurs="1" maxOccurs="1" nillable="false"/>
                </sequence>
            </extension>
        </xsd:complexContent>
    </complexType>
    <element name="usesCartesianCS" type="gml:CartesianCSPropertyType" nillable="false" abstract="false"/>
    <element name="usesSphericalCS" type="gml:SphericalCSPropertyType" nillable="false" abstract="false"/>
    <complexType name="GeocentricCRSPropertyType" mixed="false" abstract="false">
        <sequence minOccurs="0" maxOccurs="1">
            <element ref="gml:GeocentricCRS" minOccurs="1" maxOccurs="1" nillable="false"/>
        </sequence>
        <attributeGroup ref="gml:AssociationAttributeGroup"/>
    </complexType>
    <element name="geocentricCRSRef" type="gml:GeocentricCRSPropertyType" nillable="false" abstract="false"/>
    <element name="ProjectedCRS" type="gml:ProjectedCRSType" substitutionGroup="gml:AbstractGeneralDerivedCRS" nillable="false" abstract="false"/>
    <complexType name="ProjectedCRSType" mixed="false" abstract="false">
        <xsd:complexContent xmlns:xsd="http://www.w3.org/2001/XMLSchema">
            <extension base="gml:AbstractGeneralDerivedCRSType">
                <sequence minOccurs="1" maxOccurs="1">
                    <element ref="gml:baseGeographicCRS" minOccurs="1" maxOccurs="1" nillable="false"/>
                    <element ref="gml:usesCartesianCS" minOccurs="1" maxOccurs="1" nillable="false"/>
                </sequence>
            </extension>
        </xsd:complexContent>
    </complexType>
    <element name="baseGeographicCRS" type="gml:GeographicCRSPropertyType" nillable="false" abstract="false"/>
    <complexType name="ProjectedCRSPropertyType" mixed="false" abstract="false">
        <sequence minOccurs="0" maxOccurs="1">
            <element ref="gml:ProjectedCRS" minOccurs="1" maxOccurs="1" nillable="false"/>
        </sequence>
        <attributeGroup ref="gml:AssociationAttributeGroup"/>
    </complexType>
    <element name="projectedCRSRef" type="gml:ProjectedCRSPropertyType" nillable="false" abstract="false"/>
    <element name="DerivedCRS" type="gml:DerivedCRSType" substitutionGroup="gml:AbstractGeneralDerivedCRS" nillable="false" abstract="false"/>
    <complexType name="DerivedCRSType" mixed="false" abstract="false">
        <xsd:complexContent xmlns:xsd="http://www.w3.org/2001/XMLSchema">
            <extension base="gml:AbstractGeneralDerivedCRSType">
                <sequence minOccurs="1" maxOccurs="1">
                    <element ref="gml:baseCRS" minOccurs="1" maxOccurs="1" nillable="false"/>
                    <element ref="gml:derivedCRSType" minOccurs="1" maxOccurs="1" nillable="false"/>
                    <element ref="gml:usesCS" minOccurs="1" maxOccurs="1" nillable="false"/>
                </sequence>
            </extension>
        </xsd:complexContent>
    </complexType>
    <element name="baseCRS" type="gml:SingleCRSPropertyType" nillable="false" abstract="false"/>
    <element name="derivedCRSType" type="gml:CodeWithAuthorityType" nillable="false" abstract="false"/>
    <element name="usesCS" type="gml:CoordinateSystemPropertyType" nillable="false" abstract="false"/>
    <complexType name="DerivedCRSPropertyType" mixed="false" abstract="false">
        <sequence minOccurs="0" maxOccurs="1">
            <element ref="gml:DerivedCRS" minOccurs="1" maxOccurs="1" nillable="false"/>
        </sequence>
        <attributeGroup ref="gml:AssociationAttributeGroup"/>
    </complexType>
    <element name="derivedCRSRef" type="gml:DerivedCRSPropertyType" nillable="false" abstract="false"/>
    <element name="EngineeringCRS" type="gml:EngineeringCRSType" substitutionGroup="gml:AbstractSingleCRS" nillable="false" abstract="false"/>
    <complexType name="EngineeringCRSType" mixed="false" abstract="false">
        <xsd:complexContent xmlns:xsd="http://www.w3.org/2001/XMLSchema">
            <extension base="gml:AbstractCRSType">
                <sequence minOccurs="1" maxOccurs="1">
                    <element ref="gml:usesCS" minOccurs="1" maxOccurs="1" nillable="false"/>
                    <element ref="gml:usesEngineeringDatum" minOccurs="1" maxOccurs="1" nillable="false"/>
                </sequence>
            </extension>
        </xsd:complexContent>
    </complexType>
    <element name="usesEngineeringDatum" type="gml:EngineeringDatumPropertyType" nillable="false" abstract="false"/>
    <complexType name="EngineeringCRSPropertyType" mixed="false" abstract="false">
        <sequence minOccurs="0" maxOccurs="1">
            <element ref="gml:EngineeringCRS" minOccurs="1" maxOccurs="1" nillable="false"/>
        </sequence>
        <attributeGroup ref="gml:AssociationAttributeGroup"/>
    </complexType>
    <element name="engineeringCRSRef" type="gml:EngineeringCRSPropertyType" nillable="false" abstract="false"/>
    <element name="ImageCRS" type="gml:ImageCRSType" substitutionGroup="gml:AbstractSingleCRS" nillable="false" abstract="false"/>
    <complexType name="ImageCRSType" mixed="false" abstract="false">
        <xsd:complexContent xmlns:xsd="http://www.w3.org/2001/XMLSchema">
            <extension base="gml:AbstractCRSType">
                <sequence minOccurs="1" maxOccurs="1">
                    <choice minOccurs="1" maxOccurs="1">
                        <element ref="gml:usesCartesianCS" minOccurs="1" maxOccurs="1" nillable="false"/>
                        <element ref="gml:usesAffineCS" minOccurs="1" maxOccurs="1" nillable="false"/>
                        <element ref="gml:usesObliqueCartesianCS" minOccurs="1" maxOccurs="1" nillable="false"/>
                    </choice>
                    <element ref="gml:usesImageDatum" minOccurs="1" maxOccurs="1" nillable="false"/>
                </sequence>
            </extension>
        </xsd:complexContent>
    </complexType>
    <element name="usesAffineCS" type="gml:AffineCSPropertyType" nillable="false" abstract="false"/>
    <element name="usesImageDatum" type="gml:ImageDatumPropertyType" nillable="false" abstract="false"/>
    <element name="usesObliqueCartesianCS" type="gml:ObliqueCartesianCSPropertyType" nillable="false" abstract="false"/>
    <complexType name="ImageCRSPropertyType" mixed="false" abstract="false">
        <sequence minOccurs="0" maxOccurs="1">
            <element ref="gml:ImageCRS" minOccurs="1" maxOccurs="1" nillable="false"/>
        </sequence>
        <attributeGroup ref="gml:AssociationAttributeGroup"/>
    </complexType>
    <element name="imageCRSRef" type="gml:ImageCRSPropertyType" nillable="false" abstract="false"/>
    <element name="TemporalCRS" type="gml:TemporalCRSType" substitutionGroup="gml:AbstractSingleCRS" nillable="false" abstract="false"/>
    <complexType name="TemporalCRSType" mixed="false" abstract="false">
        <xsd:complexContent xmlns:xsd="http://www.w3.org/2001/XMLSchema">
            <extension base="gml:AbstractCRSType">
                <sequence minOccurs="1" maxOccurs="1">
                    <choice minOccurs="1" maxOccurs="1">
                        <element ref="gml:usesTimeCS" minOccurs="1" maxOccurs="1" nillable="false"/>
                        <element ref="gml:usesTemporalCS" minOccurs="1" maxOccurs="1" nillable="false"/>
                    </choice>
                    <element ref="gml:usesTemporalDatum" minOccurs="1" maxOccurs="1" nillable="false"/>
                </sequence>
            </extension>
        </xsd:complexContent>
    </complexType>
    <element name="usesTimeCS" type="gml:TimeCSPropertyType" nillable="false" abstract="false"/>
    <element name="usesTemporalCS" type="gml:TemporalCSPropertyType" nillable="false" abstract="false"/>
    <element name="usesTemporalDatum" type="gml:TemporalDatumPropertyType" nillable="false" abstract="false"/>
    <complexType name="TemporalCRSPropertyType" mixed="false" abstract="false">
        <sequence minOccurs="0" maxOccurs="1">
            <element ref="gml:TemporalCRS" minOccurs="1" maxOccurs="1" nillable="false"/>
        </sequence>
        <attributeGroup ref="gml:AssociationAttributeGroup"/>
    </complexType>
    <element name="temporalCRSRef" type="gml:TemporalCRSPropertyType" nillable="false" abstract="false"/>
</schema>