<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/"
           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.  If one of these types is used, the content will be
   			limited to text only, with an optional xml:lang attribute.  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://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: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="W3CDTF">
   <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="DCMIType">
   <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="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: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="ISO639-2">
   <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="RFC1766">
   <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="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:schema>
