<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://digitallibrary.usc.edu/uscdc" xmlns="http://digitallibrary.usc.edu/uscdc" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
	<xs:annotation>
		<xs:documentation xml:lang="en">
			version=1.0
			This is the latest version of the USC Libraries Qualified Dublin Core Schema.
			If you have any questions regarding this schema please email to cisadmin@usc.edu
		</xs:documentation>
	</xs:annotation>

	<xs:include schemaLocation="./uscdcRestrictions.xsd"/>

	<xs:element name="uscdc">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="recordId" type="recordIdType"/>
				<xs:element name="recordType" type="recordTypeRestrictions"/>
				<xs:element name="contributor" type="contributorType" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element name="coverage" type="coverageType" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element name="creator" type="creatorType" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element name="date" type="dateType" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element name="description" type="descriptionType" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element name="format" type="formatType" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element name="identifier" type="identifierType" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element name="language" type="languageRestrictions" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element name="publisher" type="publisherType" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element name="relation" type="relationType" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element name="rights" type="rightsType" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element name="source" type="sourceType" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element name="subject" type="subjectType" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element name="title" type="titleType" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element name="type" type="typeRestrictions" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element name="accessConditions" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element name="cataloger" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element name="catalogDate" type="xs:dateTime" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element name="catalogerComments" type="xs:string" minOccurs="0" maxOccurs="1"/>
				<xs:element name="digitizeDate" type="xs:dateTime" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element name="repositoryEmail" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element name="repositoryLocation" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element name="repositoryName" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>

    <!-- RecordId/ORN Fields -->
    <xs:complexType name="recordIdType">
        <xs:simpleContent>
            <xs:extension base="recordIdRestrictions">
                <xs:attribute name="url" type="xs:string"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>

    <xs:complexType name="ornType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="url" type="xs:string"/>
                <xs:attribute name="modifier" type="xs:integer"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>

	<!-- Qualified DC Fields -->
	<!-- Contributor Field -->
	<xs:complexType name="contributorType">
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute name="modifier" type="contributorModifierRestrictions"/>
				<xs:attribute name="scheme" type="contributorSchemeRestrictions"/>
				<xs:attribute name="nid" type="xs:integer"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>

	<!-- Coverage Field -->
	<xs:complexType name="coverageType">
		<xs:choice>
			<xs:element name="geocoordinate" type="geocoordinateType" maxOccurs="unbounded"/>
			<xs:element name="spatial" type="spatialType" maxOccurs="unbounded"/>
			<xs:element name="temporal" type="temporalType" maxOccurs="unbounded"/>
			<xs:element name="temporalEra" type="temporalEraType" maxOccurs="unbounded"/>
		</xs:choice>
	</xs:complexType>
	<xs:complexType name="geocoordinateType">
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute name="modifier" type="xs:integer"/>
				<xs:attribute name="scheme" type="geocoordinateSchemeRestrictions"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="spatialType">
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute name="modifier" type="coverageSpatialModifierRestrictions"/>
				<xs:attribute name="scheme" type="coverageSpatialSchemeRestrictions"/>
				<xs:attribute name="nid" type="xs:integer"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="temporalType">
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute name="modifier" type="coverageTemporalModifierRestrictions"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="temporalEraType">
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute name="modifier" type="coverageTemporaleraModifierRestrictions"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>

	<!-- Creator Field -->
	<xs:complexType name="creatorType">
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute name="modifier" type="creatorModifierRestrictions"/>
				<xs:attribute name="scheme" type="creatorSchemeRestrictions"/>
				<xs:attribute name="nid" type="xs:integer"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>

	<!-- Date Fields -->
	<xs:complexType name="dateType">
		<xs:choice>
			<xs:element name="created" type="createdType" maxOccurs="unbounded"/>
			<xs:element name="issued" type="issuedType" maxOccurs="unbounded"/>
			<xs:element name="modified" type="modifiedType" maxOccurs="unbounded"/>
		</xs:choice>
	</xs:complexType>
	<xs:complexType name="createdType">
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute name="modifier" type="dateCreatedModifierRestrictions"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="issuedType">
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute name="modifier" type="dateIssuedModifierRestrictions"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="modifiedType">
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute name="modifier" type="dateModifiedModifierRestrictions"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>

	<!-- Description Field -->
	<xs:complexType name="descriptionType">
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute name="modifier" type="descriptionModifierRestrictions"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>

	<!-- Format Field -->
	<xs:complexType name="formatType">
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute name="modifier" type="formatModifierRestrictions"/>
				<xs:attribute name="scheme" type="formatSchemeRestrictions"/>
				<xs:attribute name="nid" type="xs:integer"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>

	<!-- Identifier Field -->
	<xs:complexType name="identifierType" mixed="true">
		<xs:choice minOccurs="0" maxOccurs="unbounded">
			<xs:element name="bibCitation" type="bibCitationType"/>
		</xs:choice>
	</xs:complexType>
	<xs:complexType name="bibCitationType">
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute name="scheme" type="xs:string"/>
				<xs:attribute name="modifier" type="xs:string"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>

	<!-- Publisher Field -->
	<xs:complexType name="publisherType">
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute name="modifier" type="publisherModifierRestrictions"/>
				<xs:attribute name="scheme" type="publisherSchemeRestrictions"/>
				<xs:attribute name="nid" type="xs:integer"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>

	<!-- Relation Fields -->
	<xs:complexType name="relationType">
		<xs:choice>
			<xs:element name="hasFormat" type="hasFormatType" maxOccurs="unbounded"/>
			<xs:element name="hasPart" type="hasPartType" maxOccurs="unbounded"/>
			<xs:element name="isFormatOf" type="isFormatOfType" maxOccurs="unbounded"/>
			<xs:element name="isPartOf" type="isPartOfType" maxOccurs="unbounded"/>
			<xs:element name="references" type="referencesType" maxOccurs="unbounded"/>
		</xs:choice>
	</xs:complexType>
	<xs:complexType name="hasFormatType">
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute name="modifier" type="relationHasformatModifierRestrictions"/>
				<xs:attribute name="scheme" type="relationHasformatSchemeRestrictions"/>
				<xs:attribute name="nid" type="xs:integer"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="hasPartType" mixed="true">
		<xs:choice minOccurs="0" maxOccurs="unbounded">
			<xs:element name="guid" type="recordIdType"/>
			<xs:element name="orn" type="ornType"/>
		</xs:choice>
		<xs:attribute name="modifier" type="relationHaspartModifierRestrictions"/>
	</xs:complexType>
	<xs:complexType name="isFormatOfType">
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute name="scheme" type="relationIsformatofSchemeRestrictions"/>
				<xs:attribute name="modifier" type="relationIsformatofModifierRestrictions"/>
				<xs:attribute name="nid" type="xs:integer"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="isPartOfType" mixed="true">
		<xs:choice minOccurs="0" maxOccurs="unbounded">
			<xs:element name="guid" type="recordIdType"/>
		</xs:choice>
		<xs:attribute name="modifier" type="relationIspartofModifierRestrictions"/>
	</xs:complexType>

	<xs:complexType name="referencesType">
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute name="modifier" type="relationReferencesModifierRestrictions"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>

	<!-- Rights Field -->
	<xs:complexType name="rightsType">
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute name="modifier" type="rightsModifierRestrictions"/>
				<xs:attribute name="scheme" type="rightsSchemeRestrictions"/>
				<xs:attribute name="nid" type="xs:integer"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>

	<!-- Source Field -->
	<xs:complexType name="sourceType">
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute name="modifier" type="sourceModifierRestrictions"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>

	<!-- Subject Field -->
	<xs:complexType name="subjectType">
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute name="modifier" type="subjectModifierRestrictions"/>
				<xs:attribute name="scheme" type="subjectSchemeRestrictions"/>
				<xs:attribute name="nid" type="xs:integer"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>

	<!-- Title Field -->
	<xs:complexType name="alternativeType">
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute name="modifier" type="titleAltModifierRestrictions"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>

	<xs:complexType name="titleType" mixed="true">
		<xs:choice minOccurs="0" maxOccurs="unbounded">
			<xs:element name="alternative" type="alternativeType"/>
		</xs:choice>
		<xs:attribute name="modifier" type="titleModifierRestrictions"/>
	</xs:complexType>
</xs:schema>

