<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:x="http://www.w3.org/XML/1998/namespace"
           xmlns:xlink="http://www.w3.org/1999/xlink"
           xmlns="http://purl.org/dc/elements/1.1/"
           targetNamespace="http://purl.org/dc/elements/1.1/"
           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

			This schema includes the dc1.1.xsd and then extends the SimpleLiteral type to define several new types
			which allow various types of embedded elements inside the base dc elements.  These extended types can be
			utilized by specifying this schema (instead of the dc1.1.xsd) and by using the xsi:type attribute on dc elements
			in an instance document.

			The extended types are:

			* ComplexLiteral corresponds to the RDF parseType of Literal.  It allows arbitrary markup mixed with text,
			and should be used for embedding MathML, XHTML or other markups that should be treated as the literal
			value of the property.

			* ComplexResource corresponds to the RDF parseType of Resource.  This type will not allow mixed content.  All
			child nodes must be elements.  This type also allows xlink resource attributes to be included: xlink:role,
			xlink:title, xlink:label.  The xlink attributes allow ComplexResource elements to be destinations for XLinks.

			* SimpleXLink represents a link to an external resource for the property's values.  This corresponds to an rdf property with
			an rdf:resource attribute and not children.  No child nodes are allowed (text or elements)
			but it allows the xlink simple attributes to be included: xlink:href, xlink:role, xlink:arcrole, xlink:title,
			xlink:show, and xlink:actuate.
		</xs:documentation>

		<xs:appinfo xmlns:dc="http://purl.org/dc/elements/1.1/">
			<dc:title>Complex 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://www.w3.org/1999/xlink" schemaLocation="xlink.xsd"/>

	<xs:include schemaLocation="dc1.1.xsd"/>

  <xs:complexType name="ComplexLiteral">
  	<xs:annotation>
    	<xs:documentation xml:lang="en">
    		This type corresponds to the rdf:parseType="Literal".  Text and arbitrary markup may be intersperced.

    		Text is allowed because mixed="true", and sub-elements are allowed because minOccurs="0"
    		and maxOccurs="unbounded"
    	</xs:documentation>
  	</xs:annotation>

   <xs:complexContent mixed="true">
    <xs:extension base="SimpleLiteral">
     <xs:sequence>
      <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
     </xs:sequence>
    </xs:extension>
   </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ComplexResource">
  	<xs:annotation>
    	<xs:documentation xml:lang="en">
    		This type corresponds to the rdf:parseType="Resource".  Only child elements are allowed.  Also allows
    		xlink resource attributes.

				Text is not allowed because mixed="false", and sub-elements are allowed because minOccurs="0"
    		and maxOccurs="unbounded"
			</xs:documentation>
  	</xs:annotation>

   <xs:complexContent mixed="false">
    <xs:extension base="SimpleLiteral">
     <xs:sequence>
      <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
     </xs:sequence>
     <xs:attributeGroup ref="xlink:resourceLink"/>
    </xs:extension>
   </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="SimpleXLink">
  	<xs:annotation>
    	<xs:documentation xml:lang="en">
    		This type represent a simple XLink.  The element must be empty, but may include XLink
    		Simple attributes.

				Text is not allowed because mixed="false", and sub-elements are not allowed because minOccurs="0"
    		and maxOccurs="0"
    	</xs:documentation>
  	</xs:annotation>

   <xs:complexContent mixed="false">
    <xs:extension base="SimpleLiteral">
     <xs:sequence>
      <xs:any processContents="lax" minOccurs="0" maxOccurs="0"/>
     </xs:sequence>
     <xs:attributeGroup ref="xlink:simpleLink"/>
    </xs:extension>
   </xs:complexContent>
  </xs:complexType>

</xs:schema>
