<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:gco="http://www.isotc211.org/2005/gco"
           xmlns:gmd="http://www.isotc211.org/2005/gmd" targetNamespace="http://www.isotc211.org/2005/gmd"
           elementFormDefault="qualified"
           version="0.1">
  <!-- ================================= Annotation ================================ -->
  <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>
  <!-- ================================== Imports ================================== -->
  <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"/>
  <!-- ########################################################################### -->
  <!-- ########################################################################### -->
  <!-- ================================== Classes ================================= -->
  <xs:complexType name="AbstractMD_Identification_Type" abstract="true">
    <xs:annotation>
      <xs:documentation>Basic information about data</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="gco:AbstractObject_Type">
        <xs:sequence>
          <xs:element name="citation" type="gmd:CI_Citation_PropertyType"/>
          <xs:element name="abstract" type="gco:CharacterString_PropertyType"/>
          <xs:element name="purpose" type="gco:CharacterString_PropertyType" minOccurs="0"/>
          <xs:element name="credit" type="gco:CharacterString_PropertyType" minOccurs="0"
                      maxOccurs="unbounded"/>
          <xs:element name="status" type="gmd:MD_ProgressCode_PropertyType" minOccurs="0"
                      maxOccurs="unbounded"/>
          <xs:element name="pointOfContact" type="gmd:CI_ResponsibleParty_PropertyType"
                      minOccurs="0" maxOccurs="unbounded"/>
          <xs:element name="resourceMaintenance" type="gmd:MD_MaintenanceInformation_PropertyType"
                      minOccurs="0" maxOccurs="unbounded"/>
          <xs:element name="graphicOverview" type="gmd:MD_BrowseGraphic_PropertyType" minOccurs="0"
                      maxOccurs="unbounded"/>
          <xs:element name="resourceFormat" type="gmd:MD_Format_PropertyType" minOccurs="0"
                      maxOccurs="unbounded"/>
          <xs:element name="descriptiveKeywords" type="gmd:MD_Keywords_PropertyType" minOccurs="0"
                      maxOccurs="unbounded"/>
          <xs:element name="resourceSpecificUsage" type="gmd:MD_Usage_PropertyType" minOccurs="0"
                      maxOccurs="unbounded"/>
          <xs:element name="resourceConstraints" type="gmd:MD_Constraints_PropertyType"
                      minOccurs="0" maxOccurs="unbounded"/>
          <xs:element name="aggregationInfo" type="gmd:MD_AggregateInformation_PropertyType"
                      minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <!-- ........................................................................ -->
  <xs:element name="AbstractMD_Identification" type="gmd:AbstractMD_Identification_Type"
              abstract="true"/>
  <!-- ........................................................................ -->
  <xs:complexType name="MD_Identification_PropertyType">
    <xs:sequence minOccurs="0">
      <xs:element ref="gmd:AbstractMD_Identification"/>
    </xs:sequence>
    <xs:attributeGroup ref="gco:ObjectReference"/>
    <xs:attribute ref="gco:nilReason"/>
  </xs:complexType>
  <!-- =========================================================================== -->
  <xs:complexType name="MD_BrowseGraphic_Type">
    <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>
          <xs:element name="fileName" type="gco:CharacterString_PropertyType"/>
          <xs:element name="fileDescription" type="gco:CharacterString_PropertyType" minOccurs="0"/>
          <xs:element name="fileType" type="gco:CharacterString_PropertyType" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <!-- ........................................................................ -->
  <xs:element name="MD_BrowseGraphic" type="gmd:MD_BrowseGraphic_Type"/>
  <!-- ........................................................................ -->
  <xs:complexType name="MD_BrowseGraphic_PropertyType">
    <xs:sequence minOccurs="0">
      <xs:element ref="gmd:MD_BrowseGraphic"/>
    </xs:sequence>
    <xs:attributeGroup ref="gco:ObjectReference"/>
    <xs:attribute ref="gco:nilReason"/>
  </xs:complexType>
  <!-- =========================================================================== -->
  <xs:complexType name="MD_DataIdentification_Type">
    <xs:complexContent>
      <xs:extension base="gmd:AbstractMD_Identification_Type">
        <xs:sequence>
          <xs:element name="spatialRepresentationType"
                      type="gmd:MD_SpatialRepresentationTypeCode_PropertyType" minOccurs="0"
                      maxOccurs="unbounded"/>
          <xs:element name="spatialResolution" type="gmd:MD_Resolution_PropertyType" minOccurs="0"
                      maxOccurs="unbounded"/>
          <xs:element name="language" type="gco:CharacterString_PropertyType"
                      maxOccurs="unbounded"/>
          <xs:element name="characterSet" type="gmd:MD_CharacterSetCode_PropertyType" minOccurs="0"
                      maxOccurs="unbounded"/>
          <xs:element name="topicCategory" type="gmd:MD_TopicCategoryCode_PropertyType"
                      minOccurs="0" maxOccurs="unbounded"/>
          <xs:element name="environmentDescription" type="gco:CharacterString_PropertyType"
                      minOccurs="0"/>
          <xs:element name="extent" type="gmd:EX_Extent_PropertyType" minOccurs="0"
                      maxOccurs="unbounded"/>
          <xs:element name="supplementalInformation" type="gco:CharacterString_PropertyType"
                      minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <!-- ........................................................................ -->
  <xs:element name="MD_DataIdentification" type="gmd:MD_DataIdentification_Type"
              substitutionGroup="gmd:AbstractMD_Identification"/>
  <!-- ........................................................................ -->
  <xs:complexType name="MD_DataIdentification_PropertyType">
    <xs:sequence minOccurs="0">
      <xs:element ref="gmd:MD_DataIdentification"/>
    </xs:sequence>
    <xs:attributeGroup ref="gco:ObjectReference"/>
    <xs:attribute ref="gco:nilReason"/>
  </xs:complexType>
  <!-- =========================================================================== -->
  <xs:complexType name="MD_ServiceIdentification_Type">
    <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"/>
  <!-- ........................................................................ -->
  <xs:complexType name="MD_ServiceIdentification_PropertyType">
    <xs:sequence minOccurs="0">
      <xs:element ref="gmd:MD_ServiceIdentification"/>
    </xs:sequence>
    <xs:attributeGroup ref="gco:ObjectReference"/>
    <xs:attribute ref="gco:nilReason"/>
  </xs:complexType>
  <!-- =========================================================================== -->
  <xs:complexType name="MD_RepresentativeFraction_Type">
    <xs:complexContent>
      <xs:extension base="gco:AbstractObject_Type">
        <xs:sequence>
          <xs:element name="denominator" type="gco:Integer_PropertyType"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <!-- ........................................................................ -->
  <xs:element name="MD_RepresentativeFraction" type="gmd:MD_RepresentativeFraction_Type"/>
  <!-- ........................................................................ -->
  <xs:complexType name="MD_RepresentativeFraction_PropertyType">
    <xs:sequence minOccurs="0">
      <xs:element ref="gmd:MD_RepresentativeFraction"/>
    </xs:sequence>
    <xs:attributeGroup ref="gco:ObjectReference"/>
    <xs:attribute ref="gco:nilReason"/>
  </xs:complexType>
  <!-- =========================================================================== -->
  <xs:complexType name="MD_Usage_Type">
    <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>
          <xs:element name="specificUsage" type="gco:CharacterString_PropertyType"/>
          <xs:element name="usageDateTime" type="gco:DateTime_PropertyType" minOccurs="0"/>
          <xs:element name="userDeterminedLimitations" type="gco:CharacterString_PropertyType"
                      minOccurs="0"/>
          <xs:element name="userContactInfo" type="gmd:CI_ResponsibleParty_PropertyType"
                      maxOccurs="unbounded"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <!-- ........................................................................ -->
  <xs:element name="MD_Usage" type="gmd:MD_Usage_Type"/>
  <!-- ........................................................................ -->
  <xs:complexType name="MD_Usage_PropertyType">
    <xs:sequence minOccurs="0">
      <xs:element ref="gmd:MD_Usage"/>
    </xs:sequence>
    <xs:attributeGroup ref="gco:ObjectReference"/>
    <xs:attribute ref="gco:nilReason"/>
  </xs:complexType>
  <!-- =========================================================================== -->
  <xs:complexType name="MD_Keywords_Type">
    <xs:annotation>
      <xs:documentation>Keywords, their type and reference source</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="gco:AbstractObject_Type">
        <xs:sequence>
          <xs:element name="keyword" type="gco:CharacterString_PropertyType" maxOccurs="unbounded"/>
          <xs:element name="type" type="gmd:MD_KeywordTypeCode_PropertyType" minOccurs="0"/>
          <xs:element name="thesaurusName" type="gmd:CI_Citation_PropertyType" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <!-- ........................................................................ -->
  <xs:element name="MD_Keywords" type="gmd:MD_Keywords_Type"/>
  <!-- ........................................................................ -->
  <xs:complexType name="MD_Keywords_PropertyType">
    <xs:sequence minOccurs="0">
      <xs:element ref="gmd:MD_Keywords"/>
    </xs:sequence>
    <xs:attributeGroup ref="gco:ObjectReference"/>
    <xs:attribute ref="gco:nilReason"/>
  </xs:complexType>
  <!-- =========================================================================== -->
  <xs:complexType name="DS_Association_Type">
    <xs:complexContent>
      <xs:extension base="gco:AbstractObject_Type">
        <xs:sequence/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <!-- ........................................................................ -->
  <xs:element name="DS_Association" type="gmd:DS_Association_Type"/>
  <!-- ........................................................................ -->
  <xs:complexType name="DS_Association_PropertyType">
    <xs:sequence minOccurs="0">
      <xs:element ref="gmd:DS_Association"/>
    </xs:sequence>
    <xs:attributeGroup ref="gco:ObjectReference"/>
    <xs:attribute ref="gco:nilReason"/>
  </xs:complexType>
  <!-- =========================================================================== -->
  <xs:complexType name="MD_AggregateInformation_Type">
    <xs:annotation>
      <xs:documentation>Encapsulates the dataset aggregation information</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="gco:AbstractObject_Type">
        <xs:sequence>
          <xs:element name="aggregateDataSetName" type="gmd:CI_Citation_PropertyType"
                      minOccurs="0"/>
          <xs:element name="aggregateDataSetIdentifier" type="gmd:MD_Identifier_PropertyType"
                      minOccurs="0"/>
          <xs:element name="associationType" type="gmd:DS_AssociationTypeCode_PropertyType"/>
          <xs:element name="initiativeType" type="gmd:DS_InitiativeTypeCode_PropertyType"
                      minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <!-- ........................................................................ -->
  <xs:element name="MD_AggregateInformation" type="gmd:MD_AggregateInformation_Type"/>
  <!-- ........................................................................ -->
  <xs:complexType name="MD_AggregateInformation_PropertyType">
    <xs:sequence minOccurs="0">
      <xs:element ref="gmd:MD_AggregateInformation"/>
    </xs:sequence>
    <xs:attributeGroup ref="gco:ObjectReference"/>
    <xs:attribute ref="gco:nilReason"/>
  </xs:complexType>
  <!-- =========================================================================== -->
  <xs:complexType name="MD_Resolution_Type">
    <xs:choice>
      <xs:element name="equivalentScale" type="gmd:MD_RepresentativeFraction_PropertyType"/>
      <xs:element name="distance" type="gco:Distance_PropertyType"/>
    </xs:choice>
  </xs:complexType>
  <!-- ........................................................................ -->
  <xs:element name="MD_Resolution" type="gmd:MD_Resolution_Type"/>
  <!-- ........................................................................ -->
  <xs:complexType name="MD_Resolution_PropertyType">
    <xs:sequence minOccurs="0">
      <xs:element ref="gmd:MD_Resolution"/>
    </xs:sequence>
    <xs:attribute ref="gco:nilReason"/>
  </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"/>
  <!-- ........................................................................ -->
  <xs:complexType name="MD_TopicCategoryCode_PropertyType">
    <xs:sequence minOccurs="0">
      <xs:element ref="gmd:MD_TopicCategoryCode"/>
    </xs:sequence>
    <xs:attribute ref="gco:nilReason"/>
  </xs:complexType>
  <!-- =========================================================================== -->
  <!-- ........................................................................ -->
  <xs:element name="MD_CharacterSetCode" type="gco:CodeListValue_Type"
              substitutionGroup="gco:CharacterString"/>
  <!-- ........................................................................ -->
  <xs:complexType name="MD_CharacterSetCode_PropertyType">
    <xs:sequence minOccurs="0">
      <xs:element ref="gmd:MD_CharacterSetCode"/>
    </xs:sequence>
    <xs:attribute ref="gco:nilReason"/>
  </xs:complexType>
  <!-- =========================================================================== -->
  <!-- ........................................................................ -->
  <xs:element name="MD_SpatialRepresentationTypeCode" type="gco:CodeListValue_Type"
              substitutionGroup="gco:CharacterString"/>
  <!-- ........................................................................ -->
  <xs:complexType name="MD_SpatialRepresentationTypeCode_PropertyType">
    <xs:sequence minOccurs="0">
      <xs:element ref="gmd:MD_SpatialRepresentationTypeCode"/>
    </xs:sequence>
    <xs:attribute ref="gco:nilReason"/>
  </xs:complexType>
  <!-- =========================================================================== -->
  <!-- ........................................................................ -->
  <xs:element name="MD_ProgressCode" type="gco:CodeListValue_Type"
              substitutionGroup="gco:CharacterString"/>
  <!-- ........................................................................ -->
  <xs:complexType name="MD_ProgressCode_PropertyType">
    <xs:sequence minOccurs="0">
      <xs:element ref="gmd:MD_ProgressCode"/>
    </xs:sequence>
    <xs:attribute ref="gco:nilReason"/>
  </xs:complexType>
  <!-- =========================================================================== -->
  <!-- ........................................................................ -->
  <xs:element name="MD_KeywordTypeCode" type="gco:CodeListValue_Type"
              substitutionGroup="gco:CharacterString"/>
  <!-- ........................................................................ -->
  <xs:complexType name="MD_KeywordTypeCode_PropertyType">
    <xs:sequence minOccurs="0">
      <xs:element ref="gmd:MD_KeywordTypeCode"/>
    </xs:sequence>
    <xs:attribute ref="gco:nilReason"/>
  </xs:complexType>
  <!-- =========================================================================== -->
  <!-- ........................................................................ -->
  <xs:element name="DS_AssociationTypeCode" type="gco:CodeListValue_Type"
              substitutionGroup="gco:CharacterString"/>
  <!-- ........................................................................ -->
  <xs:complexType name="DS_AssociationTypeCode_PropertyType">
    <xs:sequence minOccurs="0">
      <xs:element ref="gmd:DS_AssociationTypeCode"/>
    </xs:sequence>
    <xs:attribute ref="gco:nilReason"/>
  </xs:complexType>
  <!-- =========================================================================== -->
  <!-- ........................................................................ -->
  <xs:element name="DS_InitiativeTypeCode" type="gco:CodeListValue_Type"
              substitutionGroup="gco:CharacterString"/>
  <!-- ........................................................................ -->
  <xs:complexType name="DS_InitiativeTypeCode_PropertyType">
    <xs:sequence minOccurs="0">
      <xs:element ref="gmd:DS_InitiativeTypeCode"/>
    </xs:sequence>
    <xs:attribute ref="gco:nilReason"/>
  </xs:complexType>
  <!-- =========================================================================== -->
</xs:schema>
