<?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema xmlns:csw="http://www.opengis.net/cat/csw/2.0.2"
            xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:dc="http://purl.org/dc/elements/1.1/"
            xmlns:dct="http://purl.org/dc/terms/"
            xmlns:ows="http://www.opengis.net/ows"
            id="csw-record"
            targetNamespace="http://www.opengis.net/cat/csw/2.0.2"
            elementFormDefault="qualified" version="2.0.2">
  <xsd:annotation>
    <xsd:appinfo>
      <dc:identifier xmlns:dc="http://purl.org/dc/elements/1.1/">
        http://schemas.opengis.net/csw/2.0.2/record.xsd
      </dc:identifier>
    </xsd:appinfo>
    <xsd:documentation xml:lang="en">
      This schema defines the basic record types that must be supported
      by all CSW implementations. These correspond to full, summary, and
      brief views based on DCMI metadata terms.
    </xsd:documentation>
  </xsd:annotation>

  <xsd:import namespace="http://purl.org/dc/terms/"
              schemaLocation="rec-dcterms.xsd"/>
  <xsd:import namespace="http://purl.org/dc/elements/1.1/"
              schemaLocation="rec-dcmes.xsd"/>
  <xsd:import namespace="http://www.opengis.net/ows"
              schemaLocation="../../ows/1.0.0/owsAll.xsd"/>

  <xsd:element name="AbstractRecord" id="AbstractRecord"
               type="csw:AbstractRecordType" abstract="true"/>
  <xsd:complexType name="AbstractRecordType" id="AbstractRecordType"
                   abstract="true"/>

  <xsd:element name="DCMIRecord" type="csw:DCMIRecordType"
               substitutionGroup="csw:AbstractRecord"/>
  <xsd:complexType name="DCMIRecordType">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        This type encapsulates all of the standard DCMI metadata terms,
        including the Dublin Core refinements; these terms may be mapped
        to the profile-specific information model.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="csw:AbstractRecordType">
        <xsd:sequence>
          <xsd:group ref="dct:DCMI-terms"/>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>

  <xsd:element name="BriefRecord" type="csw:BriefRecordType"
               substitutionGroup="csw:AbstractRecord"/>
  <xsd:complexType name="BriefRecordType" final="#all">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        This type defines a brief representation of the common record
        format. It extends AbstractRecordType to include only the
        dc:identifier and dc:type properties.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="csw:AbstractRecordType">
        <xsd:sequence>
          <xsd:element ref="dc:identifier"
                       minOccurs="1" maxOccurs="unbounded"/>
          <xsd:element ref="dc:title"
                       minOccurs="1" maxOccurs="unbounded"/>
          <xsd:element ref="dc:type"
                       minOccurs="0"/>
          <xsd:element ref="ows:BoundingBox"
                       minOccurs="0" maxOccurs="unbounded"/>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>

  <xsd:element name="SummaryRecord" type="csw:SummaryRecordType"
               substitutionGroup="csw:AbstractRecord"/>
  <xsd:complexType name="SummaryRecordType" final="#all">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        This type defines a summary representation of the common record
        format. It extends AbstractRecordType to include the core
        properties.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="csw:AbstractRecordType">
        <xsd:sequence>
          <xsd:element ref="dc:identifier"
                       minOccurs="1" maxOccurs="unbounded"/>
          <xsd:element ref="dc:title"
                       minOccurs="1" maxOccurs="unbounded"/>
          <xsd:element ref="dc:type"
                       minOccurs="0"/>
          <xsd:element ref="dc:subject"
                       minOccurs="0" maxOccurs="unbounded"/>
          <xsd:element ref="dc:format"
                       minOccurs="0" maxOccurs="unbounded"/>
          <xsd:element ref="dc:relation"
                       minOccurs="0" maxOccurs="unbounded"/>
          <xsd:element ref="dct:modified"
                       minOccurs="0" maxOccurs="unbounded"/>
          <xsd:element ref="dct:abstract"
                       minOccurs="0" maxOccurs="unbounded"/>
          <xsd:element ref="dct:spatial"
                       minOccurs="0" maxOccurs="unbounded"/>
          <xsd:element ref="ows:BoundingBox"
                       minOccurs="0" maxOccurs="unbounded"/>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>

  <xsd:element name="Record" type="csw:RecordType"
               substitutionGroup="csw:AbstractRecord"/>
  <xsd:complexType name="RecordType" final="#all">
    <xsd:annotation>
      <xsd:documentation xml:lang="en">
        This type extends DCMIRecordType to add ows:BoundingBox;
        it may be used to specify a spatial envelope for the
        catalogued resource.
      </xsd:documentation>
    </xsd:annotation>
    <xsd:complexContent>
      <xsd:extension base="csw:DCMIRecordType">
        <xsd:sequence>
          <xsd:element name="AnyText" type="csw:EmptyType"
                       minOccurs="0" maxOccurs="unbounded"/>
          <xsd:element ref="ows:BoundingBox"
                       minOccurs="0" maxOccurs="unbounded"/>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  <xsd:complexType name="EmptyType"/>
</xsd:schema>
