<?xml version="1.0"?>
<!--<!DOCTYPE xs:schema PUBLIC "-//W3C//DTD XMLSCHEMA 200102//EN" "XMLSchema.dtd">-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns="http://sobekrepository.org/schemas/sobekcm/"
  targetNamespace="http://sobekrepository.org/schemas/sobekcm/" elementFormDefault="qualified"
  attributeFormDefault="unqualified"
  xsi:schemaLocation="http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema.xsd"
  version="2.0">
  <xs:annotation>
    <xs:documentation xml:lang="en"> Schema defining metadata elements to be used for SobekCM items.
      This schema has been designed as an extension schema to the METS format. Components defined
      and declared here may be used in a METS mdWrap/xmlData section. Developer: Mark Sullivan
      (MarSull@uflib.ufl.edu) Creation Date: 08/08/2005, Version 2.0 7/19/2007 
      9/9/08 - Added ufdcFileInfo to support SobekCM service copy METS files (MVS)
      4/5/2010 - Added aggregation and removed controlled collection list (MVS) 
      4/5/2010 - Canged scheme name to sobekcm from ufdc (MVS)  
      12/15/2010 - EncodingLevel and FindingGuidePosition being moved into bibDesc, from procParam (MVS) 
      3/6/2013 - Added embeddedVideo and switch all UFDC references to Sobek (MVS)
      3/19/2013 - Added Tickler under procParam (MVS)
      9/14/2021 - Added Accessibility field under bibDesc (MVS)
      10/25/2021 - Added System Requirements and Licensing field under bibDesc (MVS)
    </xs:documentation>
  </xs:annotation>
  <xs:element name="procParam">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Collection.Primary" type="xs:string" minOccurs="0" maxOccurs="1"/>
        <xs:element name="Collection.Alternate" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element name="SubCollection" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element name="Aggregation" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element name="MainPage" type="sobekMainPage" minOccurs="0" maxOccurs="1"/>
        <xs:element name="MainThumbnail" type="xs:string" minOccurs="0" maxOccurs="1"/>
        <xs:element name="Icon" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element name="Wordmark" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element name="Download" type="sobekDownload" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element name="URL" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element name="AccessMethod" minOccurs="0" maxOccurs="1">
          <xs:simpleType>
            <xs:restriction base="xs:NMTOKEN">
              <xs:enumeration value="sobek"/>
              <xs:enumeration value="DOWNLOAD_ONLY"/>
              <xs:enumeration value="LINK_OUT"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:element>
        <xs:element name="LockRecord" type="xs:boolean" minOccurs="0" maxOccurs="1"/>
        <xs:element name="OcrAccuracy" type="xs:int" minOccurs="0" maxOccurs="1"/>
        <xs:element name="GUID" type="xs:string" minOccurs="0" maxOccurs="1"/>
        <xs:element name="EncodingLevel" type="xs:string" minOccurs="0" maxOccurs="1"/>
        <xs:element name="FindingGuidePosition" minOccurs="0" maxOccurs="1">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Container" type="sobekContainer" minOccurs="0" maxOccurs="unbounded" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="NotifyEmail" type="xs:string" minOccurs="0" maxOccurs="1"/>
        <xs:element name="Tickler" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
	<xs:element name="VisibilityRestrictions" type="xs:int" minOccurs="0" maxOccurs="1"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="bibDesc">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="BibID" type="xs:string" minOccurs="0" maxOccurs="1"/>
        <xs:element name="VID" type="xs:string" minOccurs="0" maxOccurs="1"/>
        <xs:element name="Accessibility" type="xs:string" minOccurs="0" maxOccurs="1"/>
        <xs:element name="Licensing" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element name="SystemRequirements" type="xs:string" minOccurs="0" maxOccurs="1"/>
        <xs:element name="Affiliation" type="sobekAffiliation" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element name="Coordinates" type="sobekCoordinates" minOccurs="0" maxOccurs="1"/>
        <xs:element name="Copyrighted" type="xs:boolean" minOccurs="0" maxOccurs="1"/>
        <xs:element name="EncodingLevel" type="xs:string" minOccurs="0" maxOccurs="1"/>
        <xs:element name="FindingGuidePosition" minOccurs="0" maxOccurs="1">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Container" type="sobekContainer" minOccurs="0" maxOccurs="unbounded" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="FormattedCitation" type="xs:string" minOccurs="0" maxOccurs="1"/>
        <xs:element name="Holding" type="sobekHolding" minOccurs="0" maxOccurs="1"/>
        <xs:element name="Manufacturer" type="sobekPublisher" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element name="Publisher" type="sobekPublisher" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element name="Source" type="sobekSource" minOccurs="0" maxOccurs="1"/>
        <xs:element name="Temporal" type="sobekTemporal" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element name="Type" minOccurs="0" maxOccurs="1">
          <xs:simpleType>
            <xs:restriction base="xs:NMTOKEN">
              <!-- Old values, retained for backward compatibility -->
              <xs:enumeration value="AERIAL"/>
              <xs:enumeration value="IMAGEAERIAL"/>
              <xs:enumeration value="ARTIFACT"/>
              <xs:enumeration value="BOOK"/>
              <xs:enumeration value="IMAGEMAP"/>
              <xs:enumeration value="MONOGRAPH"/>
              <xs:enumeration value="PHOTOGRAPH"/>
              <xs:enumeration value="POSTCARD"/>
              <xs:enumeration value="SERIAL"/>
              <xs:enumeration value="AUDIO"/>
              <xs:enumeration value="VIDEO"/>
              <xs:enumeration value="IMAGE"/>
              <xs:enumeration value="TEXT"/>
              <xs:enumeration value="NEWSPAPER"/>
              <xs:enumeration value="ARCHIVES"/>
              <xs:enumeration value="ARCHIVE"/>
              <xs:enumeration value="PROJECT"/>
              <!-- New values to be used going forward -->
              <xs:enumeration value="Archival"/>
              <xs:enumeration value="Audio"/>
              <xs:enumeration value="Book"/>
              <xs:enumeration value="Map"/>
              <xs:enumeration value="Newspaper"/>
              <xs:enumeration value="Photograph"/>
              <xs:enumeration value="Serial"/>
              <xs:enumeration value="Video"/>
              <xs:enumeration value="Artifact"/>
              <xs:enumeration value="Aerial"/>
              <xs:enumeration value="Project"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:element>
        <xs:element name="SortDate" type="xs:string" minOccurs="0" maxOccurs="1"/>
        <xs:element name="SortTitle" type="xs:string" minOccurs="0" maxOccurs="1"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="serial">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="SerialHierarchy" type="sobekSerialHierarchy" minOccurs="1"
          maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="embeddedVideo" type="xs:string"/>
  <xs:element name="gsa">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="gsaData" type="sobekGsaData" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="sobekAffiliation">
    <xs:choice maxOccurs="1">
      <xs:element name="AffiliationTerm" type="xs:string"/>
      <xs:element name="HierarchicalAffiliation" type="sobekAffiliationHierarchy"/>
    </xs:choice>
    <xs:attribute name="nameid" type="xs:string"/>
  </xs:complexType>
  <xs:complexType name="sobekAffiliationHierarchy">
    <xs:choice maxOccurs="unbounded">
      <xs:element name="University" type="xs:string"/>
      <xs:element name="Campus" type="xs:string"/>
      <xs:element name="College" type="xs:string"/>
      <xs:element name="Unit" type="xs:string"/>
      <xs:element name="Department" type="xs:string"/>
      <xs:element name="Institute" type="xs:string"/>
      <xs:element name="Center" type="xs:string"/>
      <xs:element name="Section" type="xs:string"/>
      <xs:element name="Subsection" type="xs:string"/>
    </xs:choice>
  </xs:complexType>
  <xs:complexType name="sobekContainer">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute name="level" type="xs:int"/>
        <xs:attribute name="type" type="xs:string"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  <xs:complexType name="sobekCoordinates">
    <xs:choice maxOccurs="unbounded">
      <xs:element name="Point" type="sobekCoordPoint"/>
      <xs:element name="Polygon" type="sobekCoordPolygon"/>
      <xs:element name="Line" type="sobekCoordPointCollection"/>
      <xs:element name="KML" type="xs:string"/>
    </xs:choice>
  </xs:complexType>
  <xs:complexType name="sobekCoordPoint">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute name="latitude" type="xs:string"/>
        <xs:attribute name="longitude" type="xs:string"/>
        <xs:attribute name="altitude" type="xs:int"/>
        <xs:attribute name="units" type="xs:string"/>
        <xs:attribute name="order" type="xs:int"/>
        <xs:attribute name="label" type="xs:string"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  <xs:complexType name="sobekCoordPolygon">
    <xs:sequence>
      <xs:element name="Edge" type="sobekCoordPointCollection" minOccurs="1" maxOccurs="1"/>
      <xs:element name="Internal" type="sobekCoordPointCollection" minOccurs="0" maxOccurs="1"/>
    </xs:sequence>
    <xs:attribute name="label" type="xs:string"/>
    <xs:attribute name="ID" type="xs:string"/>
    <xs:attribute name="pageSeq" type="xs:int"/>
  </xs:complexType>
  <xs:complexType name="sobekCoordPointCollection">
    <xs:choice maxOccurs="unbounded">
      <xs:element name="Point" type="sobekCoordPoint"/>
    </xs:choice>
    <xs:attribute name="label" type="xs:string"/>
  </xs:complexType>
  <xs:complexType name="sobekDownload">
    <xs:choice>
      <xs:element name="url">
        <xs:complexType>
          <xs:simpleContent>
            <xs:extension base="xs:string">
              <xs:attribute name="type" type="xs:string"/>
              <xs:attribute name="size" type="xs:string"/>
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="fptr">
        <xs:complexType>
          <xs:simpleContent>
            <xs:extension base="xs:string">
              <xs:attribute name="FILEID" type="xs:string"/>
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="name" type="xs:string"/>
    </xs:choice>
    <xs:attribute name="label" type="xs:string"/>
  </xs:complexType>
  <xs:complexType name="sobekGsaData">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute name="namespace" type="xs:string"/>
        <xs:attribute name="element" type="xs:string"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  <xs:complexType name="sobekHolding">
    <xs:sequence>
      <xs:element name="statement" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:simpleContent>
            <xs:extension base="xs:string">
              <xs:attribute name="code" type="xs:string"/>
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="html" type="xs:string" minOccurs="0" maxOccurs="1"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="sobekMainPage">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute name="next" type="xs:boolean" use="required"/>
        <xs:attribute name="pagename" type="xs:string" use="required"/>
        <xs:attribute name="previous" type="xs:boolean" use="required"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  <xs:complexType name="sobekTemporal">
    <xs:sequence>
      <xs:element name="period" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:simpleContent>
            <xs:extension base="xs:string">
              <xs:attribute name="start" type="xs:gYear"/>
              <xs:attribute name="end" type="xs:gYear"/>
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="sobekSerialHierarchy">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute name="level" type="xs:int"/>
        <xs:attribute name="order" type="xs:int"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  <xs:complexType name="sobekSource">
    <xs:sequence>
      <xs:element name="statement" minOccurs="0" maxOccurs="1">
        <xs:complexType>
          <xs:simpleContent>
            <xs:extension base="xs:string">
              <xs:attribute name="code" type="xs:string"/>
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="html" type="xs:string" minOccurs="0" maxOccurs="1"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="sobekPublisher">
    <xs:sequence>
      <xs:element name="Name" type="xs:string" minOccurs="1" maxOccurs="1"/>
      <xs:element name="PlaceTerm" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:simpleContent>
            <xs:extension base="xs:string">
              <xs:attribute name="type">
                <xs:simpleType>
                  <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="text"/>
                    <xs:enumeration value="code"/>
                  </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
              <xs:attribute name="authority">
                <xs:simpleType>
                  <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="marccountry"/>
                    <xs:enumeration value="iso3166"/>
                  </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="ID" type="xs:string"/>
  </xs:complexType>
  <!-- File information is used by sobek in the service copy METS files administrative section -->
  <xs:element name="FileInfo">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="File" type="sobekFileType" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="sobekFileType">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute name="fileid" type="xs:string"/>
        <xs:attribute name="servicecopy" type="xs:string"/>
        <xs:attribute name="width" type="xs:int"/>
        <xs:attribute name="height" type="xs:int"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
</xs:schema>
