<?xml version="1.0" encoding="UTF-8"?>
<xs:schema 
xmlns:xs="http://www.w3.org/2001/XMLSchema" 
xmlns:dc="http://purl.org/dc/elements/1.1/" 
xmlns:dcmitype="http://purl.org/dc/dcmitype/"
 targetNamespace="http://purl.org/dc/terms/"
  xmlns="http://purl.org/dc/terms/"
   elementFormDefault="qualified" 
   attributeFormDefault="unqualified">
	<xs:annotation>
		<xs:documentation xml:lang="en">
      DCterms XML Schema
      XML Schema for http://purl.org/dc/terms/ namespace
 
      Created 2008-02-11

      Created by 

      Tim Cole (t-cole3@uiuc.edu)
      Tom Habing (thabing@uiuc.edu)
      Jane Hunter (jane@dstc.edu.au)
      Pete Johnston (p.johnston@ukoln.ac.uk),
      Carl Lagoze (lagoze@cs.cornell.edu)
      
______________________________________________________________________
This schema is modified from the original, April 2008, by Ray Denenberg, Library of Congress,
 for use by the DCX schema for SRU.

The only change is that in the following two original lines:

  <xs:element name="mediator" substitutionGroup="audience"/>
   <xs:element name="educationLevel" substitutionGroup="audience"/>      
      
"audience" is replaced by "dc:any"

 Reason for the change: all other terms have substitutionGroups which are either one of the original dc terms,
  or "dc:any". For example, alternative has substitutionGroup title which has substitutionGroup dc:title, 
  and so on for all variants of the original 15 terms. Then there are a number of new terms (not variants
   of the original 15) and they all have substitutionGroup dc:any.  The only  exceptions to this are mediator 
   and educationLevel, they have a substitutionGroup which is itself a new term (audience).  
   This causes an ambiguity when you try to validate a schema that references element from both sets. 
   i.e ref="audience" is ambiguous with ref="mediator"  (or ref="educationLevel").

___________________________________________________________________________________      

      This schema declares XML elements for the DC elements and
      DC element refinements from the http://purl.org/dc/terms/ namespace.
      
      It reuses the complexType dc:SimpleLiteral, imported from the dc.xsd
      schema, which permits simple element content, and makes the xml:lang
      attribute available.

      This complexType permits the derivation of other complexTypes
      which would permit child elements.

      XML elements corresponding to DC elements are declared as substitutable for the abstract element dc:any, and 
      XML elements corresponding to DC element refinements are defined as substitutable for the base elements 
      which they refine.

      This means that the default type for all XML elements (i.e. corresponding to all DC elements and 
      element refinements) is dc:SimpleLiteral.

      Encoding schemes are defined as complexTypes which are restrictions
      of the dc:SimpleLiteral complexType. These complexTypes restrict 
      values to an appropriates syntax or format using data typing,
      regular expressions, or enumerated lists.
  
      In order to specify one of these encodings an xsi:type attribute must 
      be used in the instance document.

      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.

      Changes in 2008-02-11 version:
      
      Add element declarations corresponding to 15 new dcterms URIs, and amend use of substitutionGroups.
      
      Add compexType definitions corresponding to ISO639-3, RFC4646.
      
    </xs:documentation>
	</xs:annotation>
	<xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/03/xml.xsd">
  </xs:import>
	<xs:import namespace="http://purl.org/dc/elements/1.1/" schemaLocation="dc.xsd"/>
	<xs:import namespace="http://purl.org/dc/dcmitype/" schemaLocation="dcmitype.xsd"/>
	<xs:element name="title" substitutionGroup="dc:title"/>
	<xs:element name="creator" substitutionGroup="dc:creator"/>
	<xs:element name="subject" substitutionGroup="dc:subject"/>
	<xs:element name="description" substitutionGroup="dc:description"/>
	<xs:element name="publisher" substitutionGroup="dc:publisher"/>
	<xs:element name="contributor" substitutionGroup="dc:contributor"/>
	<xs:element name="date" substitutionGroup="dc:date"/>
	<xs:element name="type" substitutionGroup="dc:type"/>
	<xs:element name="format" substitutionGroup="dc:format"/>
	<xs:element name="identifier" substitutionGroup="dc:identifier"/>
	<xs:element name="source" substitutionGroup="dc:source"/>
	<xs:element name="language" substitutionGroup="dc:language"/>
	<xs:element name="relation" substitutionGroup="dc:relation"/>
	<xs:element name="coverage" substitutionGroup="dc:coverage"/>
	<xs:element name="rights" substitutionGroup="dc:rights"/>
	<xs:element name="alternative" substitutionGroup="title"/>
	<xs:element name="tableOfContents" substitutionGroup="description"/>
	<xs:element name="abstract" substitutionGroup="description"/>
	<xs:element name="created" substitutionGroup="date"/>
	<xs:element name="valid" substitutionGroup="date"/>
	<xs:element name="available" substitutionGroup="date"/>
	<xs:element name="issued" substitutionGroup="date"/>
	<xs:element name="modified" substitutionGroup="date"/>
	<xs:element name="dateAccepted" substitutionGroup="date"/>
	<xs:element name="dateCopyrighted" substitutionGroup="date"/>
	<xs:element name="dateSubmitted" substitutionGroup="date"/>
	<xs:element name="extent" substitutionGroup="format"/>
	<xs:element name="medium" substitutionGroup="format"/>
	<xs:element name="isVersionOf" substitutionGroup="relation"/>
	<xs:element name="hasVersion" substitutionGroup="relation"/>
	<xs:element name="isReplacedBy" substitutionGroup="relation"/>
	<xs:element name="replaces" substitutionGroup="relation"/>
	<xs:element name="isRequiredBy" substitutionGroup="relation"/>
	<xs:element name="requires" substitutionGroup="relation"/>
	<xs:element name="isPartOf" substitutionGroup="relation"/>
	<xs:element name="hasPart" substitutionGroup="relation"/>
	<xs:element name="isReferencedBy" substitutionGroup="relation"/>
	<xs:element name="references" substitutionGroup="relation"/>
	<xs:element name="isFormatOf" substitutionGroup="relation"/>
	<xs:element name="hasFormat" substitutionGroup="relation"/>
	<xs:element name="conformsTo" substitutionGroup="relation"/>
	<xs:element name="spatial" substitutionGroup="coverage"/>
	<xs:element name="temporal" substitutionGroup="coverage"/>
	<xs:element name="audience" substitutionGroup="dc:any"/>
	<xs:element name="accrualMethod" substitutionGroup="dc:any"/>
	<xs:element name="accrualPeriodicity" substitutionGroup="dc:any"/>
	<xs:element name="accrualPolicy" substitutionGroup="dc:any"/>
	<xs:element name="instructionalMethod" substitutionGroup="dc:any"/>
	<xs:element name="provenance" substitutionGroup="dc:any"/>
	<xs:element name="rightsHolder" substitutionGroup="dc:any"/>
	<!-- 

following two lines removed ....
   <xs:element name="mediator" substitutionGroup="audience"/>
   <xs:element name="educationLevel" substitutionGroup="audience"/>

... and replaced by the following two lines::
-->
	<xs:element name="mediator" substitutionGroup="dc:any"/>
	<xs:element name="educationLevel" substitutionGroup="dc:any"/>
	<!-- 
-->
	<xs:element name="accessRights" substitutionGroup="rights"/>
	<xs:element name="license" substitutionGroup="rights"/>
	<xs:element name="bibliographicCitation" substitutionGroup="identifier"/>
	<xs:complexType name="LCSH">
		<xs:simpleContent>
			<xs:restriction base="dc:SimpleLiteral">
				<xs:simpleType>
					<xs:restriction base="xs:string"/>
				</xs:simpleType>
				<xs:attribute ref="xml:lang" use="prohibited"/>
			</xs:restriction>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="MESH">
		<xs:simpleContent>
			<xs:restriction base="dc:SimpleLiteral">
				<xs:simpleType>
					<xs:restriction base="xs:string"/>
				</xs:simpleType>
				<xs:attribute ref="xml:lang" use="prohibited"/>
			</xs:restriction>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="DDC">
		<xs:simpleContent>
			<xs:restriction base="dc:SimpleLiteral">
				<xs:simpleType>
					<xs:restriction base="xs:string"/>
				</xs:simpleType>
				<xs:attribute ref="xml:lang" use="prohibited"/>
			</xs:restriction>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="LCC">
		<xs:simpleContent>
			<xs:restriction base="dc:SimpleLiteral">
				<xs:simpleType>
					<xs:restriction base="xs:string"/>
				</xs:simpleType>
				<xs:attribute ref="xml:lang" use="prohibited"/>
			</xs:restriction>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="UDC">
		<xs:simpleContent>
			<xs:restriction base="dc:SimpleLiteral">
				<xs:simpleType>
					<xs:restriction base="xs:string"/>
				</xs:simpleType>
				<xs:attribute ref="xml:lang" use="prohibited"/>
			</xs:restriction>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="Period">
		<xs:simpleContent>
			<xs:restriction base="dc:SimpleLiteral">
				<xs:simpleType>
					<xs:restriction base="xs:string"/>
				</xs:simpleType>
				<xs:attribute ref="xml:lang" use="prohibited"/>
			</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:attribute ref="xml:lang" use="prohibited"/>
			</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:attribute ref="xml:lang" use="prohibited"/>
			</xs:restriction>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="IMT">
		<xs:simpleContent>
			<xs:restriction base="dc:SimpleLiteral">
				<xs:simpleType>
					<xs:restriction base="xs:string"/>
				</xs:simpleType>
				<xs:attribute ref="xml:lang" use="prohibited"/>
			</xs:restriction>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="URI">
		<xs:simpleContent>
			<xs:restriction base="dc:SimpleLiteral">
				<xs:simpleType>
					<xs:restriction base="xs:anyURI"/>
				</xs:simpleType>
				<xs:attribute ref="xml:lang" use="prohibited"/>
			</xs:restriction>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="ISO639-2">
		<xs:simpleContent>
			<xs:restriction base="dc:SimpleLiteral">
				<xs:simpleType>
					<xs:restriction base="xs:string"/>
				</xs:simpleType>
				<xs:attribute ref="xml:lang" use="prohibited"/>
			</xs:restriction>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="ISO639-3">
		<xs:simpleContent>
			<xs:restriction base="dc:SimpleLiteral">
				<xs:simpleType>
					<xs:restriction base="xs:string"/>
				</xs:simpleType>
				<xs:attribute ref="xml:lang" use="prohibited"/>
			</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:attribute ref="xml:lang" use="prohibited"/>
			</xs:restriction>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="RFC3066">
		<xs:simpleContent>
			<xs:restriction base="dc:SimpleLiteral">
				<xs:simpleType>
					<xs:restriction base="xs:language"/>
				</xs:simpleType>
				<xs:attribute ref="xml:lang" use="prohibited"/>
			</xs:restriction>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="RFC4646">
		<xs:simpleContent>
			<xs:restriction base="dc:SimpleLiteral">
				<xs:simpleType>
					<xs:restriction base="xs:language"/>
				</xs:simpleType>
				<xs:attribute ref="xml:lang" use="prohibited"/>
			</xs:restriction>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="Point">
		<xs:simpleContent>
			<xs:restriction base="dc:SimpleLiteral">
				<xs:simpleType>
					<xs:restriction base="xs:string"/>
				</xs:simpleType>
				<xs:attribute ref="xml:lang" use="prohibited"/>
			</xs:restriction>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="ISO3166">
		<xs:simpleContent>
			<xs:restriction base="dc:SimpleLiteral">
				<xs:simpleType>
					<xs:restriction base="xs:string"/>
				</xs:simpleType>
				<xs:attribute ref="xml:lang" use="prohibited"/>
			</xs:restriction>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="Box">
		<xs:simpleContent>
			<xs:restriction base="dc:SimpleLiteral">
				<xs:simpleType>
					<xs:restriction base="xs:string"/>
				</xs:simpleType>
				<xs:attribute ref="xml:lang" use="prohibited"/>
			</xs:restriction>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="TGN">
		<xs:simpleContent>
			<xs:restriction base="dc:SimpleLiteral">
				<xs:simpleType>
					<xs:restriction base="xs:string"/>
				</xs:simpleType>
				<xs:attribute ref="xml:lang" use="prohibited"/>
			</xs:restriction>
		</xs:simpleContent>
	</xs:complexType>
	<xs:group name="elementsAndRefinementsGroup">
		<xs:annotation>
			<xs:documentation xml:lang="en">
    		This group is included as a convenience for schema authors
            who need to refer to all the DC elements and element refinements 
            in the http://purl.org/dc/elements/1.1/ and 
            http://purl.org/dc/terms namespaces. 
            N.B. Refinements available via substitution groups.
    	</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:element ref="dc:any"/>
			</xs:choice>
		</xs:sequence>
	</xs:group>
	<xs:complexType name="elementOrRefinementContainer">
		<xs:annotation>
			<xs:documentation xml:lang="en">
    		This is included as a convenience for schema authors who need to define a root
    		or container element for all of the DC elements and element refinements.
    	</xs:documentation>
		</xs:annotation>
		<xs:choice>
			<xs:group ref="elementsAndRefinementsGroup"/>
		</xs:choice>
	</xs:complexType>
</xs:schema>

