<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:gmd="http://www.isotc211.org/2005/gmd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:gco="http://www.isotc211.org/2005/gco" xmlns:xlink="http://www.w3.org/1999/xlink" targetNamespace="http://www.isotc211.org/2005/gmd" elementFormDefault="qualified" version="0.1" finalDefault="" blockDefault="" attributeFormDefault="unqualified">
    <xs:annotation>
        <xs:documentation>This file was generated from ISO TC/211 UML class diagrams == 01-26-2005 12:40:05 ======</xs:documentation>
    </xs:annotation>
    <xs:import namespace="http://www.isotc211.org/2005/gco" schemaLocation="../gco/gco.xsd"/>
    <xs:include schemaLocation="../gmd/constraints.xsd"/>
    <xs:include schemaLocation="../gmd/distribution.xsd"/>
    <xs:include schemaLocation="../gmd/maintenance.xsd"/>
    <xs:complexType name="AbstractMD_Identification_Type" abstract="true" mixed="false">
        <xs:annotation>
            <xs:documentation>Basic information about data</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="gco:AbstractObject_Type">
                <xs:sequence minOccurs="1" maxOccurs="1">
                    <xs:element name="citation" type="gmd:CI_Citation_PropertyType" minOccurs="1" maxOccurs="1" nillable="false"/>
                    <xs:element name="abstract" type="gco:CharacterString_PropertyType" minOccurs="1" maxOccurs="1" nillable="false"/>
                    <xs:element name="purpose" type="gco:CharacterString_PropertyType" minOccurs="0" maxOccurs="1" nillable="false"/>
                    <xs:element name="credit" type="gco:CharacterString_PropertyType" minOccurs="0" maxOccurs="unbounded" nillable="false"/>
                    <xs:element name="status" type="gmd:MD_ProgressCode_PropertyType" minOccurs="0" maxOccurs="unbounded" nillable="false"/>
                    <xs:element name="pointOfContact" type="gmd:CI_ResponsibleParty_PropertyType" minOccurs="0" maxOccurs="unbounded" nillable="false"/>
                    <xs:element name="resourceMaintenance" type="gmd:MD_MaintenanceInformation_PropertyType" minOccurs="0" maxOccurs="unbounded" nillable="false"/>
                    <xs:element name="graphicOverview" type="gmd:MD_BrowseGraphic_PropertyType" minOccurs="0" maxOccurs="unbounded" nillable="false"/>
                    <xs:element name="resourceFormat" type="gmd:MD_Format_PropertyType" minOccurs="0" maxOccurs="unbounded" nillable="false"/>
                    <xs:element name="descriptiveKeywords" type="gmd:MD_Keywords_PropertyType" minOccurs="0" maxOccurs="unbounded" nillable="false"/>
                    <xs:element name="resourceSpecificUsage" type="gmd:MD_Usage_PropertyType" minOccurs="0" maxOccurs="unbounded" nillable="false"/>
                    <xs:element name="resourceConstraints" type="gmd:MD_Constraints_PropertyType" minOccurs="0" maxOccurs="unbounded" nillable="false"/>
                    <xs:element name="aggregationInfo" type="gmd:MD_AggregateInformation_PropertyType" minOccurs="0" maxOccurs="unbounded" nillable="false"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:element name="AbstractMD_Identification" type="gmd:AbstractMD_Identification_Type" abstract="true" nillable="false"/>
    <xs:complexType name="MD_Identification_PropertyType" mixed="false" abstract="false">
        <xs:sequence minOccurs="1" maxOccurs="1">
            <xs:element ref="gmd:AbstractMD_Identification" minOccurs="0" maxOccurs="1" nillable="false"/>
        </xs:sequence>
        <xs:attributeGroup ref="gco:ObjectReference"/>
        <xs:attribute ref="gco:nilReason" use="optional"/>
    </xs:complexType>
    <xs:complexType name="MD_BrowseGraphic_Type" mixed="false" abstract="false">
        <xs:annotation>
            <xs:documentation>Graphic that provides an illustration of the dataset (should include a legend for the graphic)</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="gco:AbstractObject_Type">
                <xs:sequence minOccurs="1" maxOccurs="1">
                    <xs:element name="fileName" type="gco:CharacterString_PropertyType" minOccurs="1" maxOccurs="1" nillable="false"/>
                    <xs:element name="fileDescription" type="gco:CharacterString_PropertyType" minOccurs="0" maxOccurs="1" nillable="false"/>
                    <xs:element name="fileType" type="gco:CharacterString_PropertyType" minOccurs="0" maxOccurs="1" nillable="false"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:element name="MD_BrowseGraphic" type="gmd:MD_BrowseGraphic_Type" nillable="false" abstract="false"/>
    <xs:complexType name="MD_BrowseGraphic_PropertyType" mixed="false" abstract="false">
        <xs:sequence minOccurs="1" maxOccurs="1">
            <xs:element ref="gmd:MD_BrowseGraphic" minOccurs="0" maxOccurs="1" nillable="false"/>
        </xs:sequence>
        <xs:attributeGroup ref="gco:ObjectReference"/>
        <xs:attribute ref="gco:nilReason" use="optional"/>
    </xs:complexType>
    <xs:complexType name="MD_DataIdentification_Type" mixed="false" abstract="false">
        <xs:complexContent>
            <xs:extension base="gmd:AbstractMD_Identification_Type">
                <xs:sequence minOccurs="1" maxOccurs="1">
                    <xs:element name="spatialRepresentationType" type="gmd:MD_SpatialRepresentationTypeCode_PropertyType" minOccurs="0" maxOccurs="unbounded" nillable="false"/>
                    <xs:element name="spatialResolution" type="gmd:MD_Resolution_PropertyType" minOccurs="0" maxOccurs="unbounded" nillable="false"/>
                    <xs:element name="language" type="gco:CharacterString_PropertyType" maxOccurs="unbounded" minOccurs="1" nillable="false"/>
                    <xs:element name="characterSet" type="gmd:MD_CharacterSetCode_PropertyType" minOccurs="0" maxOccurs="unbounded" nillable="false"/>
                    <xs:element name="topicCategory" type="gmd:MD_TopicCategoryCode_PropertyType" minOccurs="0" maxOccurs="unbounded" nillable="false"/>
                    <xs:element name="environmentDescription" type="gco:CharacterString_PropertyType" minOccurs="0" maxOccurs="1" nillable="false"/>
                    <xs:element name="extent" type="gmd:EX_Extent_PropertyType" minOccurs="0" maxOccurs="unbounded" nillable="false"/>
                    <xs:element name="supplementalInformation" type="gco:CharacterString_PropertyType" minOccurs="0" maxOccurs="1" nillable="false"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:element name="MD_DataIdentification" type="gmd:MD_DataIdentification_Type" substitutionGroup="gmd:AbstractMD_Identification" nillable="false" abstract="false"/>
    <xs:complexType name="MD_DataIdentification_PropertyType" mixed="false" abstract="false">
        <xs:sequence minOccurs="1" maxOccurs="1">
            <xs:element ref="gmd:MD_DataIdentification" minOccurs="0" maxOccurs="1" nillable="false"/>
        </xs:sequence>
        <xs:attributeGroup ref="gco:ObjectReference"/>
        <xs:attribute ref="gco:nilReason" use="optional"/>
    </xs:complexType>
    <xs:complexType name="MD_ServiceIdentification_Type" mixed="false" abstract="false">
        <xs:annotation>
            <xs:documentation>See 19119 for further info</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="gmd:AbstractMD_Identification_Type"/>
        </xs:complexContent>
    </xs:complexType>
    <xs:element name="MD_ServiceIdentification" type="gmd:MD_ServiceIdentification_Type" substitutionGroup="gmd:AbstractMD_Identification" nillable="false" abstract="false"/>
    <xs:complexType name="MD_ServiceIdentification_PropertyType" mixed="false" abstract="false">
        <xs:sequence minOccurs="1" maxOccurs="1">
            <xs:element ref="gmd:MD_ServiceIdentification" minOccurs="0" maxOccurs="1" nillable="false"/>
        </xs:sequence>
        <xs:attributeGroup ref="gco:ObjectReference"/>
        <xs:attribute ref="gco:nilReason" use="optional"/>
    </xs:complexType>
    <xs:complexType name="MD_RepresentativeFraction_Type" mixed="false" abstract="false">
        <xs:complexContent>
            <xs:extension base="gco:AbstractObject_Type">
                <xs:sequence minOccurs="1" maxOccurs="1">
                    <xs:element name="denominator" type="gco:Integer_PropertyType" minOccurs="1" maxOccurs="1" nillable="false"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:element name="MD_RepresentativeFraction" type="gmd:MD_RepresentativeFraction_Type" nillable="false" abstract="false"/>
    <xs:complexType name="MD_RepresentativeFraction_PropertyType" mixed="false" abstract="false">
        <xs:sequence minOccurs="1" maxOccurs="1">
            <xs:element ref="gmd:MD_RepresentativeFraction" minOccurs="0" maxOccurs="1" nillable="false"/>
        </xs:sequence>
        <xs:attributeGroup ref="gco:ObjectReference"/>
        <xs:attribute ref="gco:nilReason" use="optional"/>
    </xs:complexType>
    <xs:complexType name="MD_Usage_Type" mixed="false" abstract="false">
        <xs:annotation>
            <xs:documentation>Brief description of ways in which the dataset is currently used.</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="gco:AbstractObject_Type">
                <xs:sequence minOccurs="1" maxOccurs="1">
                    <xs:element name="specificUsage" type="gco:CharacterString_PropertyType" minOccurs="1" maxOccurs="1" nillable="false"/>
                    <xs:element name="usageDateTime" type="gco:DateTime_PropertyType" minOccurs="0" maxOccurs="1" nillable="false"/>
                    <xs:element name="userDeterminedLimitations" type="gco:CharacterString_PropertyType" minOccurs="0" maxOccurs="1" nillable="false"/>
                    <xs:element name="userContactInfo" type="gmd:CI_ResponsibleParty_PropertyType" maxOccurs="unbounded" minOccurs="1" nillable="false"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:element name="MD_Usage" type="gmd:MD_Usage_Type" nillable="false" abstract="false"/>
    <xs:complexType name="MD_Usage_PropertyType" mixed="false" abstract="false">
        <xs:sequence minOccurs="1" maxOccurs="1">
            <xs:element ref="gmd:MD_Usage" minOccurs="0" maxOccurs="1" nillable="false"/>
        </xs:sequence>
        <xs:attributeGroup ref="gco:ObjectReference"/>
        <xs:attribute ref="gco:nilReason" use="optional"/>
    </xs:complexType>
    <xs:complexType name="MD_Keywords_Type" mixed="false" abstract="false">
        <xs:annotation>
            <xs:documentation>Keywords, their type and reference source</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="gco:AbstractObject_Type">
                <xs:sequence minOccurs="1" maxOccurs="1">
                    <xs:element name="keyword" type="gco:CharacterString_PropertyType" maxOccurs="unbounded" minOccurs="1" nillable="false"/>
                    <xs:element name="type" type="gmd:MD_KeywordTypeCode_PropertyType" minOccurs="0" maxOccurs="1" nillable="false"/>
                    <xs:element name="thesaurusName" type="gmd:CI_Citation_PropertyType" minOccurs="0" maxOccurs="1" nillable="false"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:element name="MD_Keywords" type="gmd:MD_Keywords_Type" nillable="false" abstract="false"/>
    <xs:complexType name="MD_Keywords_PropertyType" mixed="false" abstract="false">
        <xs:sequence minOccurs="1" maxOccurs="1">
            <xs:element ref="gmd:MD_Keywords" minOccurs="0" maxOccurs="1" nillable="false"/>
        </xs:sequence>
        <xs:attributeGroup ref="gco:ObjectReference"/>
        <xs:attribute ref="gco:nilReason" use="optional"/>
    </xs:complexType>
    <xs:complexType name="DS_Association_Type" mixed="false" abstract="false">
        <xs:complexContent>
            <xs:extension base="gco:AbstractObject_Type">
                <xs:sequence minOccurs="1" maxOccurs="1"/>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:element name="DS_Association" type="gmd:DS_Association_Type" nillable="false" abstract="false"/>
    <xs:complexType name="DS_Association_PropertyType" mixed="false" abstract="false">
        <xs:sequence minOccurs="1" maxOccurs="1">
            <xs:element ref="gmd:DS_Association" minOccurs="0" maxOccurs="1" nillable="false"/>
        </xs:sequence>
        <xs:attributeGroup ref="gco:ObjectReference"/>
        <xs:attribute ref="gco:nilReason" use="optional"/>
    </xs:complexType>
    <xs:complexType name="MD_AggregateInformation_Type" mixed="false" abstract="false">
        <xs:annotation>
            <xs:documentation>Encapsulates the dataset aggregation information</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="gco:AbstractObject_Type">
                <xs:sequence minOccurs="1" maxOccurs="1">
                    <xs:element name="aggregateDataSetName" type="gmd:CI_Citation_PropertyType" minOccurs="0" maxOccurs="1" nillable="false"/>
                    <xs:element name="aggregateDataSetIdentifier" type="gmd:MD_Identifier_PropertyType" minOccurs="0" maxOccurs="1" nillable="false"/>
                    <xs:element name="associationType" type="gmd:DS_AssociationTypeCode_PropertyType" minOccurs="1" maxOccurs="1" nillable="false"/>
                    <xs:element name="initiativeType" type="gmd:DS_InitiativeTypeCode_PropertyType" minOccurs="0" maxOccurs="1" nillable="false"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:element name="MD_AggregateInformation" type="gmd:MD_AggregateInformation_Type" nillable="false" abstract="false"/>
    <xs:complexType name="MD_AggregateInformation_PropertyType" mixed="false" abstract="false">
        <xs:sequence minOccurs="1" maxOccurs="1">
            <xs:element ref="gmd:MD_AggregateInformation" minOccurs="0" maxOccurs="1" nillable="false"/>
        </xs:sequence>
        <xs:attributeGroup ref="gco:ObjectReference"/>
        <xs:attribute ref="gco:nilReason" use="optional"/>
    </xs:complexType>
    <xs:complexType name="MD_Resolution_Type" mixed="false" abstract="false">
        <xs:choice minOccurs="1" maxOccurs="1">
            <xs:element name="equivalentScale" type="gmd:MD_RepresentativeFraction_PropertyType" minOccurs="1" maxOccurs="1" nillable="false"/>
            <xs:element name="distance" type="gco:Distance_PropertyType" minOccurs="1" maxOccurs="1" nillable="false"/>
        </xs:choice>
    </xs:complexType>
    <xs:element name="MD_Resolution" type="gmd:MD_Resolution_Type" nillable="false" abstract="false"/>
    <xs:complexType name="MD_Resolution_PropertyType" mixed="false" abstract="false">
        <xs:sequence minOccurs="1" maxOccurs="1">
            <xs:element ref="gmd:MD_Resolution" minOccurs="0" maxOccurs="1" nillable="false"/>
        </xs:sequence>
        <xs:attribute ref="gco:nilReason" use="optional"/>
    </xs:complexType>
    <xs:simpleType name="MD_TopicCategoryCode_Type">
        <xs:annotation>
            <xs:documentation>High-level geospatial data thematic classification to assist in the grouping and search of available geospatial datasets</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
            <xs:enumeration value="farming"/>
            <xs:enumeration value="biota"/>
            <xs:enumeration value="boundaries"/>
            <xs:enumeration value="climatologyMeteorologyAtmosphere"/>
            <xs:enumeration value="economy"/>
            <xs:enumeration value="elevation"/>
            <xs:enumeration value="environment"/>
            <xs:enumeration value="geoscientificInformation"/>
            <xs:enumeration value="health"/>
            <xs:enumeration value="imageryBaseMapsEarthCover"/>
            <xs:enumeration value="intelligenceMilitary"/>
            <xs:enumeration value="inlandWaters"/>
            <xs:enumeration value="location"/>
            <xs:enumeration value="oceans"/>
            <xs:enumeration value="planningCadastre"/>
            <xs:enumeration value="society"/>
            <xs:enumeration value="structure"/>
            <xs:enumeration value="transportation"/>
            <xs:enumeration value="utilitiesCommunication"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:element name="MD_TopicCategoryCode" type="gmd:MD_TopicCategoryCode_Type" substitutionGroup="gco:CharacterString" nillable="false" abstract="false"/>
    <xs:complexType name="MD_TopicCategoryCode_PropertyType" mixed="false" abstract="false">
        <xs:sequence minOccurs="1" maxOccurs="1">
            <xs:element ref="gmd:MD_TopicCategoryCode" minOccurs="0" maxOccurs="1" nillable="false"/>
        </xs:sequence>
        <xs:attribute ref="gco:nilReason" use="optional"/>
    </xs:complexType>
    <xs:element name="MD_CharacterSetCode" type="gco:CodeListValue_Type" substitutionGroup="gco:CharacterString" nillable="false" abstract="false"/>
    <xs:complexType name="MD_CharacterSetCode_PropertyType" mixed="false" abstract="false">
        <xs:sequence minOccurs="1" maxOccurs="1">
            <xs:element ref="gmd:MD_CharacterSetCode" minOccurs="0" maxOccurs="1" nillable="false"/>
        </xs:sequence>
        <xs:attribute ref="gco:nilReason" use="optional"/>
    </xs:complexType>
    <xs:element name="MD_SpatialRepresentationTypeCode" type="gco:CodeListValue_Type" substitutionGroup="gco:CharacterString" nillable="false" abstract="false"/>
    <xs:complexType name="MD_SpatialRepresentationTypeCode_PropertyType" mixed="false" abstract="false">
        <xs:sequence minOccurs="1" maxOccurs="1">
            <xs:element ref="gmd:MD_SpatialRepresentationTypeCode" minOccurs="0" maxOccurs="1" nillable="false"/>
        </xs:sequence>
        <xs:attribute ref="gco:nilReason" use="optional"/>
    </xs:complexType>
    <xs:element name="MD_ProgressCode" type="gco:CodeListValue_Type" substitutionGroup="gco:CharacterString" nillable="false" abstract="false"/>
    <xs:complexType name="MD_ProgressCode_PropertyType" mixed="false" abstract="false">
        <xs:sequence minOccurs="1" maxOccurs="1">
            <xs:element ref="gmd:MD_ProgressCode" minOccurs="0" maxOccurs="1" nillable="false"/>
        </xs:sequence>
        <xs:attribute ref="gco:nilReason" use="optional"/>
    </xs:complexType>
    <xs:element name="MD_KeywordTypeCode" type="gco:CodeListValue_Type" substitutionGroup="gco:CharacterString" nillable="false" abstract="false"/>
    <xs:complexType name="MD_KeywordTypeCode_PropertyType" mixed="false" abstract="false">
        <xs:sequence minOccurs="1" maxOccurs="1">
            <xs:element ref="gmd:MD_KeywordTypeCode" minOccurs="0" maxOccurs="1" nillable="false"/>
        </xs:sequence>
        <xs:attribute ref="gco:nilReason" use="optional"/>
    </xs:complexType>
    <xs:element name="DS_AssociationTypeCode" type="gco:CodeListValue_Type" substitutionGroup="gco:CharacterString" nillable="false" abstract="false"/>
    <xs:complexType name="DS_AssociationTypeCode_PropertyType" mixed="false" abstract="false">
        <xs:sequence minOccurs="1" maxOccurs="1">
            <xs:element ref="gmd:DS_AssociationTypeCode" minOccurs="0" maxOccurs="1" nillable="false"/>
        </xs:sequence>
        <xs:attribute ref="gco:nilReason" use="optional"/>
    </xs:complexType>
    <xs:element name="DS_InitiativeTypeCode" type="gco:CodeListValue_Type" substitutionGroup="gco:CharacterString" nillable="false" abstract="false"/>
    <xs:complexType name="DS_InitiativeTypeCode_PropertyType" mixed="false" abstract="false">
        <xs:sequence minOccurs="1" maxOccurs="1">
            <xs:element ref="gmd:DS_InitiativeTypeCode" minOccurs="0" maxOccurs="1" nillable="false"/>
        </xs:sequence>
        <xs:attribute ref="gco:nilReason" use="optional"/>
    </xs:complexType>
</xs:schema>