<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:x="http://www.w3.org/XML/1998/namespace"
           xmlns:dc="http://purl.org/dc/elements/1.1/"
           xmlns:dcmitype="http://purl.org/dc/dcmitype/"
           xmlns:dcmi-period="http://www.dublincore.org/documents/dcmi-period/"
           xmlns:iso639-2="http://lcweb.loc.gov/standards/iso639-2/"
           xmlns:dcterms="http://purl.org/dc/terms/"
           targetNamespace="http://purl.org/dc/terms/"
           xmlns="http://purl.org/dc/terms/"
           elementFormDefault="qualified"
           attributeFormDefault="qualified">

   <xs:annotation>
     <xs:documentation xml:lang="en">
				Created by Tom Habing, thabing@uiuc.edu and Tim Cole, t-cole3@uiuc.edu

   			XML Schema for the Dublin Core Qualifiers http://www.dublincore.org/documents/dcmes-qualifiers/

   			Refinements are defined as substitutionGroups for the base elements which they refine, imported
   			from the dc1.1.xsd schema.

   			Encodings are defined as complexTypes which are either restrictions or extensions of the SimpleLiteral,
   			also imported from the dc1.1.xsd schema.  In order to specify one of these encodings an xsi:type
   			attribute must be used in the instance document.  Where possible these types restrict the value to an appropriate
   			syntax or format using data typing,regular expressions, or enumerated lists.  Also, note that one shortcoming of
   			this approach is that any type can be applied to any of the elements or refinements.  There is no convenient way to
   			restrict types to specific elements using this approach.

     </xs:documentation>

		<xs:appinfo xmlns:dc="http://purl.org/dc/elements/1.1/">
			<dc:title>Qualified DC XML Schema</dc:title>
			<dc:creator>Tom Habing, thabing@uiuc.edu</dc:creator>
			<dc:creator>Tim Cole, t-cole3@uiuc.edu</dc:creator>
		</xs:appinfo>
   </xs:annotation>

   <xs:import namespace="http://purl.org/dc/dcmitype/" schemaLocation="dcmitype.xsd"/>

   <xs:import namespace="http://lcweb.loc.gov/standards/iso639-2/" schemaLocation="iso639-2.xsd"/>

   <xs:import namespace="http://www.dublincore.org/documents/dcmi-period/" schemaLocation="dcmi-period.xsd"/>

   <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/03/xml.xsd"/>

   <xs:import namespace="http://purl.org/dc/elements/1.1/" schemaLocation="dc1.1.xsd"/>

   <xs:element name="alternative" substitutionGroup="dc:title" type="dc:SimpleLiteral"/>

   <xs:element name="tableOfContents" substitutionGroup="dc:description" type="dc:SimpleLiteral"/>
   <xs:element name="abstract" substitutionGroup="dc:description" type="dc:SimpleLiteral"/>

   <xs:element name="created" substitutionGroup="dc:date" type="dc:SimpleLiteral"/>
   <xs:element name="valid" substitutionGroup="dc:date" type="dc:SimpleLiteral"/>
   <xs:element name="available" substitutionGroup="dc:date" type="dc:SimpleLiteral"/>
   <xs:element name="issued" substitutionGroup="dc:date" type="dc:SimpleLiteral"/>
   <xs:element name="modified" substitutionGroup="dc:date" type="dc:SimpleLiteral"/>

   <xs:element name="extent" substitutionGroup="dc:format" type="dc:SimpleLiteral"/>
   <xs:element name="medium" substitutionGroup="dc:format" type="dc:SimpleLiteral"/>

   <xs:element name="isVersionOf" substitutionGroup="dc:relation" type="dc:SimpleLiteral"/>
   <xs:element name="hasVersion" substitutionGroup="dc:relation" type="dc:SimpleLiteral"/>
   <xs:element name="isReplacedBy" substitutionGroup="dc:relation" type="dc:SimpleLiteral"/>
   <xs:element name="replaces" substitutionGroup="dc:relation" type="dc:SimpleLiteral"/>
   <xs:element name="isRequiredBy" substitutionGroup="dc:relation" type="dc:SimpleLiteral"/>
   <xs:element name="requires" substitutionGroup="dc:relation" type="dc:SimpleLiteral"/>
   <xs:element name="isPartOf" substitutionGroup="dc:relation" type="dc:SimpleLiteral"/>
   <xs:element name="hasPart" substitutionGroup="dc:relation" type="dc:SimpleLiteral"/>
   <xs:element name="isReferencedBy" substitutionGroup="dc:relation" type="dc:SimpleLiteral"/>
   <xs:element name="references" substitutionGroup="dc:relation" type="dc:SimpleLiteral"/>
   <xs:element name="isFormatOf" substitutionGroup="dc:relation" type="dc:SimpleLiteral"/>
   <xs:element name="hasFormat" substitutionGroup="dc:relation" type="dc:SimpleLiteral"/>

   <xs:element name="spatial" substitutionGroup="dc:coverage" type="dc:SimpleLiteral"/>
   <xs:element name="temporal" substitutionGroup="dc:coverage" type="dc:SimpleLiteral"/>


  <xs:complexType name="LCSH">
   <xs:complexContent mixed="true">
    <xs:restriction base="dc:SimpleLiteral">
     <xs:sequence>
      <xs:any processContents="lax" minOccurs="0" maxOccurs="0"/>
     </xs:sequence>
    </xs:restriction>
   </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="MESH">
   <xs:complexContent mixed="true">
    <xs:restriction base="dc:SimpleLiteral">
     <xs:sequence>
      <xs:any processContents="lax" minOccurs="0" maxOccurs="0"/>
     </xs:sequence>
    </xs:restriction>
   </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="DDC">
   <xs:complexContent mixed="true">
    <xs:restriction base="dc:SimpleLiteral">
     <xs:sequence>
      <xs:any processContents="lax" minOccurs="0" maxOccurs="0"/>
     </xs:sequence>
    </xs:restriction>
   </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="LCC">
   <xs:complexContent mixed="true">
    <xs:restriction base="dc:SimpleLiteral">
     <xs:sequence>
      <xs:any processContents="lax" minOccurs="0" maxOccurs="0"/>
     </xs:sequence>
    </xs:restriction>
   </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="UDC">
   <xs:complexContent mixed="true">
    <xs:restriction base="dc:SimpleLiteral">
     <xs:sequence>
      <xs:any processContents="lax" minOccurs="0" maxOccurs="0"/>
     </xs:sequence>
    </xs:restriction>
   </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Period">
   <xs:simpleContent>
    		<xs:restriction base="dc:SimpleLiteral">
    			<xs:simpleType>
    				<xs:restriction base="dcmi-period:DCSV"/>
    			</xs:simpleType>
    		</xs:restriction>
   </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="W3CDTF">
   <xs:simpleContent>
    		<xs:restriction base="dc:SimpleLiteral">
    			<xs:simpleType>
    				<xs:union memberTypes="xs:gYear xs:gYearMonth xs:date xs:dateTime"/>
    			</xs:simpleType>
    		</xs:restriction>
   </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="DCMIType">
   <xs:simpleContent>
    		<xs:restriction base="dc:SimpleLiteral">
    			<xs:simpleType>
    				<xs:restriction base="dcmitype:DCMIType"/>
    			</xs:simpleType>
    		</xs:restriction>
   </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="IMT">
   <xs:complexContent mixed="true">
    <xs:restriction base="dc:SimpleLiteral">
     <xs:sequence>
      <xs:any processContents="lax" minOccurs="0" maxOccurs="0"/>
     </xs:sequence>
    </xs:restriction>
   </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="URI">
   <xs:simpleContent>
    		<xs:restriction base="dc:SimpleLiteral">
    			<xs:simpleType>
    				<xs:restriction base="xs:anyURI"/>
    			</xs:simpleType>
    		</xs:restriction>
   </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="ISO639-2">
    <xs:simpleContent>
    		<xs:restriction base="dc:SimpleLiteral">
    			<xs:simpleType>
    				<xs:restriction base="iso639-2:RegisteredCodeType"/>
    			</xs:simpleType>
    		</xs:restriction>
   </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="RFC1766">
   <xs:simpleContent>
    		<xs:restriction base="dc:SimpleLiteral">
    			<xs:simpleType>
    				<xs:restriction base="xs:language"/>
    			</xs:simpleType>
    		</xs:restriction>
   </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="Point">
   <xs:complexContent mixed="true">
    <xs:restriction base="dc:SimpleLiteral">
     <xs:sequence>
      <xs:any processContents="lax" minOccurs="0" maxOccurs="0"/>
     </xs:sequence>
    </xs:restriction>
   </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ISO3166">
   <xs:complexContent mixed="true">
    <xs:restriction base="dc:SimpleLiteral">
     <xs:sequence>
      <xs:any processContents="lax" minOccurs="0" maxOccurs="0"/>
     </xs:sequence>
    </xs:restriction>
   </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="Box">
   <xs:complexContent mixed="true">
    <xs:restriction base="dc:SimpleLiteral">
     <xs:sequence>
      <xs:any processContents="lax" minOccurs="0" maxOccurs="0"/>
     </xs:sequence>
    </xs:restriction>
   </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="TGN">
   <xs:complexContent mixed="true">
    <xs:restriction base="dc:SimpleLiteral">
     <xs:sequence>
      <xs:any processContents="lax" minOccurs="0" maxOccurs="0"/>
     </xs:sequence>
    </xs:restriction>
   </xs:complexContent>
  </xs:complexType>

<xs:complexType name="ZIP">
  <xs:simpleContent>
    <xs:restriction base="dc:SimpleLiteral">
      <xs:simpleType>
      	<xs:union>
      		<xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:pattern value="\d\d\d\d\d(-\d\d\d\d)*"/>
            </xs:restriction>
          </xs:simpleType>
        </xs:union>
      </xs:simpleType>
    </xs:restriction>
  </xs:simpleContent>
</xs:complexType>

</xs:schema>
