<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns="http://purl.org/dc/elements/1.1/"
           targetNamespace="http://purl.org/dc/elements/1.1/"
           elementFormDefault="qualified"
           attributeFormDefault="unqualified">

  <xs:annotation>
    <xs:documentation xml:lang="en">
      XML Schema for http://purl.org/dc/elements/1.1/ namespace

      Created 2005-06-13

      Created by 

      Pete Johnston (p.johnston@ukoln.ac.uk),

      This schema declares XML elements to represent statements referring to the 15 DCMES properties

      All elements are declared as substitutable for the abstract element any, which is declared with default type StatementElement.

    </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:complexType name="StatementElement">
    <xs:annotation>
      <xs:documentation>
        The StatementElement complexType defines the content model for a DC-XML Statement Element. 
        A DC-XML Statement Element may contain string content.
        A DC-XML Statement Element may also have an xml:lang, valueURI, encSchemeURI attribute.
      </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="xs:string">
	<xs:attributeGroup ref="StatementElementAttributes"/>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>


  <xs:attributeGroup name="StatementElementAttributes">
    <xs:attribute ref="xml:lang" use="optional"/>
    <xs:attribute name="valueURI" type="xs:anyURI" use="optional"/>
    <xs:attribute name="encSchemeURI" type="xs:anyURI" use="optional"/>
  </xs:attributeGroup>


  <xs:element name="any" type="StatementElement" abstract="true"/>

  <xs:element name="title" substitutionGroup="any"/>
  <xs:element name="creator" substitutionGroup="any"/>
  <xs:element name="subject" substitutionGroup="any"/>
  <xs:element name="description" substitutionGroup="any"/>
  <xs:element name="publisher" substitutionGroup="any"/>
  <xs:element name="contributor" substitutionGroup="any"/>
  <xs:element name="date" substitutionGroup="any"/>
  <xs:element name="type" substitutionGroup="any"/>
  <xs:element name="format" substitutionGroup="any"/>
  <xs:element name="identifier" substitutionGroup="any"/>
  <xs:element name="source" substitutionGroup="any"/>
  <xs:element name="language" substitutionGroup="any"/>
  <xs:element name="relation" substitutionGroup="any"/>
  <xs:element name="coverage" substitutionGroup="any"/>
  <xs:element name="rights" substitutionGroup="any"/>

  <xs:group name="StatementElementsGroup">
  	<xs:annotation>
    	<xs:documentation xml:lang="en">
    	    This group is included as a convenience for schema authors
            who need to refer to all the Statement Elements in the 
            http://purl.org/dc/elements/1.1/ namespace.
    	</xs:documentation>
  	</xs:annotation>

   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:element ref="any"/>
    </xs:choice>
   </xs:sequence>
  </xs:group>

  <xs:complexType name="DescriptionElement">
  	<xs:annotation>
    	<xs:documentation xml:lang="en">
    		This complexType is included as a convenience for schema authors who need to define a DescriptionElement
    		for all of the Statement Elements in the 
                http://purl.org/dc/elements/1.1/ namespace.
    	</xs:documentation>
  	</xs:annotation>
    <xs:sequence>
      <xs:group ref="StatementElementsGroup"/>
    </xs:sequence>
  </xs:complexType>

</xs:schema>
