<?xml version="1.0" encoding="UTF-8"?>
<!--
via XML Spy. editor: Ray Denenberg, Library of Congress; rden@loc.gov
*********************************************************************************************
*
* PREMIS
* Preservation Metadata Schema
*
* VERSION 2.2
* May 15, 2012
*
* (supercedes version 2.1 of January 6, 2011)
*
* Modified:
* - July 2, 2012: removed extraneous whitespace within an element name.
* - September 28, 2012:
* copyrightDocumentationIdentifier and licenseDocumentationIdentifier
* changed to repeatable. They had been defined as non-repeatable in error.
*
*********************************************************************************************
**********************************************************************************************************************************
Changes in version 2.2:
1. Complex element copyrightDocumentationIdentifier added to copyrightInformation (under rightsStatement). It has the following subelements:
copyrightDocumentationIdentifierType
copyrightDocumentationIdentifierValue
copyrightDocumentationRole
In addition, copyrightApplicableDates (with a start and end date) is added to copyrightInformation.
2. Complex element licenseDocumentationIdentifier is added to licenseInformation (under rightsStatement). It is intended to replace existing element licenseIdentifier, which is retained for backward compatibility. It has subelements:
licenseDocumentationIdentifierType
licenseDocumentationIdentifierValue
licenseDocumentationRole
The first two correspond to the existing subelements of licenseIndentifier:
licenseIdentifierType
licenseIdentifierValue
(The role element is added.)
In addition, licenseApplicableDates (with a start and end date) is added to licenseInformation.
3. Complex element statuteDocumentationIdentifier is added to statuteInformation (under rightsStatement). It has the following subelements:
statuteDocumentationIdentifierType
statuteDocumentationIdentifierValue
statuteDocumentationRole
In addition, statuteApplicableDates (with a start and end date) is added to statuteInformation.
4. Complex element otherRightsInformation is added to rightsStatement. It has four subelements:
(1) otherRightsDocumentationIdentifier - a complex element with subelements:
otherRightsDocumentationIdentifierType
otherRightsDocumentationIdentifierValue
otherRightsDocumentationRole
(2) otherRightsBasis (simple)
(3) otherRightsApplicableDates (with start and end dates)
(4) otherRightsNote (simple)
5. Complex element termOfRestriction is added to rightsGranted (under rightsStatement). It has a start and end date.
6. countryCode definition added. Used by copyrightJurisdiction and statuteJurisdiction. Typed as xs:string, it does not introduce a substantive change, butt is introduced to reinforce the recommendation that a standard jurisdictional code be used.
7. The pattern....
<xs:pattern value="OPEN"/>
is added to the list of patterns supported in EDTF.
*************************************************************************************************************************************
-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="info:lc/xmlns/premis-v2" targetNamespace="info:lc/xmlns/premis-v2" elementFormDefault="qualified" attributeFormDefault="unqualified">
<!--
Import XLink-->
<xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="http://www.loc.gov/standards/xlink/xlink.xsd"/>
<!--
An instance is
(1) One or more of <object>, <event>, <agent>, <rights> all wrapped within a <premis> container; or
(2) any one of <object>, <event>, <agent>, <rights> by itself.
Thus the root element is one of the following: <premis>, <object>, <event>, <agent>, <rights>
********************************************************************************************
* *
* Root element declarations *
* *
*********************************************************************************************
-->
<xs:element name="premis" type="premisComplexType"/>
<xs:element name="object" type="objectComplexType"/>
<xs:element name="event" type="eventComplexType"/>
<xs:element name="agent" type="agentComplexType"/>
<xs:element name="rights" type="rightsComplexType"/>
<!--
*************************************************************************************************
* *
* definitions of complex types for the root elements *
* *
*************************************************************************************************
************************************ premisComplexType
-->
<xs:complexType name="premisComplexType">
<xs:sequence>
<xs:element ref="object" maxOccurs="unbounded"/>
<xs:element ref="event" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="agent" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="rights" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="version" type="versionSimpleType" use="required"/>
</xs:complexType>
<!--
*************************************************************************************************
* *
* objectComplexType (and the three major <object> category definitions) *
* *
*************************************************************************************************
-->
<xs:complexType name="objectComplexType" abstract="true"/>
<!--
***************
The three "types": 'file', 'representation', and 'bitstream'. These are the values for the xsi:type attribute in an instance.
For an object of type file: <object xsi:type="file"> will mean that the complexType "file" will be validated.
For an object of type representation: <object xsi:type="representation"> will mean that the complexType "representation" will be validated.
For an object of type bitstream: <object xsi:type="bitstream"> will mean that the complexType "bitstream" will be validated.
******************
******* file
-->
<xs:complexType name="file">
<xs:complexContent>
<xs:extension base="objectComplexType">
<xs:sequence>
<xs:element ref="objectIdentifier" maxOccurs="unbounded"/>
<!-- Data dictionary lists objectCategory here, values: 'file', 'representation', or 'bitstream'. It is omitted and instead the mechanism described in the preceding comment is used to signify the category of the object. Using this mechanism allows for the specific definition, corresponding to the category, to be validated. In the older version there was a single defintion so specific vaidation based on category was not possible. -->
<xs:element ref="preservationLevel" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="significantProperties" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="objectCharacteristics" maxOccurs="unbounded"/>
<xs:element ref="originalName" minOccurs="0"/>
<xs:element ref="storage" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="environment" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="signatureInformation" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="relationship" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="linkingEventIdentifier" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="linkingIntellectualEntityIdentifier" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="linkingRightsStatementIdentifier" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="xmlID" type="xs:ID"/>
<xs:attribute name="version" type="versionSimpleType"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!--
*********** representation
-->
<xs:complexType name="representation">
<xs:complexContent>
<xs:extension base="objectComplexType">
<xs:sequence>
<xs:element ref="objectIdentifier" maxOccurs="unbounded"/>
<xs:element ref="preservationLevel" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="significantProperties" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="originalName" minOccurs="0"/>
<xs:element ref="environment" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="relationship" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="linkingEventIdentifier" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="linkingIntellectualEntityIdentifier" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="linkingRightsStatementIdentifier" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="xmlID" type="xs:ID"/>
<xs:attribute name="version" type="versionSimpleType"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!--
*********** bitstream
-->
<xs:complexType name="bitstream">
<xs:complexContent>
<xs:extension base="objectComplexType">
<xs:sequence>
<xs:element ref="objectIdentifier" maxOccurs="unbounded"/>
<xs:element ref="significantProperties" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="objectCharacteristics" maxOccurs="unbounded"/>
<xs:element ref="storage" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="environment" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="signatureInformation" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="relationship" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="linkingEventIdentifier" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="linkingIntellectualEntityIdentifier" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="linkingRightsStatementIdentifier" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="xmlID" type="xs:ID"/>
<xs:attribute name="version" type="versionSimpleType"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!--
************************************eventComplexType
-->
<xs:complexType name="eventComplexType">
<xs:sequence>
<xs:element ref="eventIdentifier"/>
<xs:element ref="eventType"/>
<xs:element ref="eventDateTime"/>
<xs:element ref="eventDetail" minOccurs="0"/>
<xs:element ref="eventOutcomeInformation" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="linkingAgentIdentifier" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="linkingObjectIdentifier" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="xmlID" type="xs:ID"/>
<xs:attribute name="version" type="versionSimpleType"/>
</xs:complexType>
<!--
************************** agentComplexType
-->
<xs:complexType name="agentComplexType">
<xs:sequence>
<xs:element ref="agentIdentifier" maxOccurs="unbounded"/>
<xs:element ref="agentName" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="agentType" minOccurs="0"/>
<xs:element ref="agentNote" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="agentExtension" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="mdSec" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="linkingEventIdentifier" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="linkingRightsStatementIdentifier" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="xmlID" type="xs:ID"/>
<xs:attribute name="version" type="versionSimpleType"/>
</xs:complexType>
<!--
******************* rightsComplexType
-->
<xs:complexType name="rightsComplexType">
<xs:choice maxOccurs="unbounded">
<xs:element ref="rightsStatement"/>
<xs:element ref="rightsExtension"/>
<xs:element ref="mdSec"/>
</xs:choice>
<xs:attribute name="xmlID" type="xs:ID"/>
<xs:attribute name="version" type="versionSimpleType"/>
</xs:complexType>
<!--
********************************************************************************************
********************************************************************************************
* *
* subsidiary complexType definitions *
* *
*********************************************************************************************
*********************************************************************************************
-->
<!--
******* agentIdentifierComplexType
-->
<xs:complexType name="agentIdentifierComplexType">
<xs:sequence>
<xs:element ref="agentIdentifierType"/>
<xs:element ref="agentIdentifierValue"/>
</xs:sequence>
<!-- <xs:attributeGroup ref="xlink:simpleLink"/> -->
</xs:complexType>
<!--
****************contentLocationComplexType
-->
<xs:complexType name="contentLocationComplexType">
<xs:sequence>
<xs:element ref="contentLocationType"/>
<xs:element ref="contentLocationValue"/>
</xs:sequence>
<!-- <xs:attributeGroup ref="xlink:simpleLink"/>-->
</xs:complexType>
<!--
******** copyrightDocumentationIdentifierComplexType ****** New in version 2.2 ******
-->
<xs:complexType name="copyrightDocumentationIdentifierComplexType">
<xs:sequence>
<xs:element ref="copyrightDocumentationIdentifierType"/>
<xs:element ref="copyrightDocumentationIdentifierValue"/>
<xs:element ref="copyrightDocumentationRole" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<!--
******** copyrightInformationComplexType
-->
<xs:complexType name="copyrightInformationComplexType">
<xs:sequence>
<xs:element ref="copyrightStatus"/>
<xs:element ref="copyrightJurisdiction"/>
<xs:element ref="copyrightStatusDeterminationDate" minOccurs="0"/>
<xs:element ref="copyrightNote" minOccurs="0" maxOccurs="unbounded"/>
<!-- The following two elements are new in version 2.2 -->
<xs:element ref="copyrightDocumentationIdentifier" minOccurs="0" maxOccurs="unbounded"/>
<!-- ******************* maxOccurs="unbounded" added Sept. 28, 2012. it had been omitted in error -->
<xs:element ref="copyrightApplicableDates" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<!--
****************creatingApplicationComplexType
-->
<xs:complexType name="creatingApplicationComplexType">
<xs:choice>
<xs:sequence>
<xs:element ref="creatingApplicationName"/>
<xs:element ref="creatingApplicationVersion" minOccurs="0"/>
<xs:element ref="dateCreatedByApplication" minOccurs="0"/>
<xs:element ref="creatingApplicationExtension" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="mdSec" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:sequence>
<xs:element ref="creatingApplicationVersion"/>
<xs:element ref="dateCreatedByApplication" minOccurs="0"/>
<xs:element ref="creatingApplicationExtension" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="mdSec" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:sequence>
<xs:element ref="dateCreatedByApplication"/>
<xs:element ref="creatingApplicationExtension" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="mdSec" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<!-- -->
<xs:choice maxOccurs="unbounded">
<xs:element ref="creatingApplicationExtension"/>
<xs:element ref="mdSec"/>
</xs:choice>
<!-- -->
</xs:choice>
<!-- All of the elements individually are optional, but at least one must occur. And those occuring must occur in the specified order. And some are non-repeatable. XML schema doesn't provide an easy way to define such a construct. If sequencing and non-repeatability didn't apply, you could use CHOICE minOccurs="1" maxOccurs="unbounded". Or if the requirement that at least one must occur didn't apply you could use a single sequence all with minOccurs="0". But given these constraints the above structure is necessary. -->
</xs:complexType>
<!--
****************dependencyComplexType
See comment for "creatingApplicationComplexType"
-->
<xs:complexType name="dependencyComplexType">
<xs:choice>
<xs:sequence>
<xs:element ref="dependencyName" maxOccurs="unbounded"/>
<xs:element ref="dependencyIdentifier" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:element ref="dependencyIdentifier" maxOccurs="unbounded"/>
</xs:choice>
</xs:complexType>
<!--
****************dependencyIdentifierComplexType
-->
<xs:complexType name="dependencyIdentifierComplexType">
<xs:sequence>
<xs:element ref="dependencyIdentifierType"/>
<xs:element ref="dependencyIdentifierValue"/>
</xs:sequence>
</xs:complexType>
<!--
****************environmentComplexType
See comment for "creatingApplicationComplexType"
-->
<xs:complexType name="environmentComplexType">
<xs:choice>
<!-- -->
<xs:sequence>
<xs:element ref="environmentCharacteristic"/>
<xs:element ref="environmentPurpose" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="environmentNote" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="dependency" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="software" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="hardware" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="environmentExtension" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="mdSec" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<!-- -->
<xs:sequence>
<xs:element ref="environmentPurpose" maxOccurs="unbounded"/>
<xs:element ref="environmentNote" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="dependency" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="software" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="hardware" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="environmentExtension" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="mdSec" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<!-- -->
<xs:sequence>
<xs:element ref="environmentNote" maxOccurs="unbounded"/>
<xs:element ref="dependency" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="software" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="hardware" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="environmentExtension" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="mdSec" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<!-- -->
<xs:sequence>
<xs:element ref="dependency" maxOccurs="unbounded"/>
<xs:element ref="software" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="hardware" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="environmentExtension" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="mdSec" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<!-- -->
<xs:sequence>
<xs:element ref="software" maxOccurs="unbounded"/>
<xs:element ref="hardware" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="environmentExtension" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="mdSec" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<!-- -->
<xs:sequence>
<xs:element ref="hardware" maxOccurs="unbounded"/>
<xs:element ref="environmentExtension" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="mdSec" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<!-- -->
<xs:choice maxOccurs="unbounded">
<xs:element ref="environmentExtension"/>
<xs:element ref="mdSec"/>
</xs:choice>
<!-- -->
</xs:choice>
</xs:complexType>
<!--
****eventIdentifierComplexType
-->
<xs:complexType name="eventIdentifierComplexType">
<xs:sequence>
<xs:element ref="eventIdentifierType"/>
<xs:element ref="eventIdentifierValue"/>
</xs:sequence>
<!-- <xs:attributeGroup ref="xlink:simpleLink"/>-->
</xs:complexType>
<!--
****eventOutcomeDetailComplexType
See comment for "creatingApplicationComplexType"
-->
<xs:complexType name="eventOutcomeDetailComplexType">
<xs:choice>
<xs:sequence>
<xs:element ref="eventOutcomeDetailNote"/>
<xs:element ref="eventOutcomeDetailExtension" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="mdSec" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<!---->
<xs:choice maxOccurs="unbounded">
<xs:element ref="eventOutcomeDetailExtension"/>
<xs:element ref="mdSec"/>
</xs:choice>
<!-- -->
</xs:choice>
</xs:complexType>
<!--
****eventOutcomeInformationComplexType
See comment for "creatingApplicationComplexType"
-->
<xs:complexType name="eventOutcomeInformationComplexType">
<xs:choice>
<xs:sequence>
<xs:element ref="eventOutcome"/>
<xs:element ref="eventOutcomeDetail" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:element ref="eventOutcomeDetail" maxOccurs="unbounded"/>
</xs:choice>
</xs:complexType>
<!--
*******fixityComplexType
-->
<xs:complexType name="fixityComplexType">
<xs:sequence>
<xs:element ref="messageDigestAlgorithm"/>
<xs:element ref="messageDigest"/>
<xs:element ref="messageDigestOriginator" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<!--
*******formatComplexType
-->
<xs:complexType name="formatComplexType">
<xs:sequence>
<xs:choice>
<!-- one or both of formatDesignation and/or formatRegistry required; followed optionally by formatNote -->
<xs:sequence>
<xs:element ref="formatDesignation"/>
<xs:element ref="formatRegistry" minOccurs="0"/>
</xs:sequence>
<xs:element ref="formatRegistry"/>
</xs:choice>
<xs:element ref="formatNote" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<!--
*******formatDesignationComplexType
-->
<xs:complexType name="formatDesignationComplexType">
<xs:sequence>
<xs:element ref="formatName"/>
<xs:element ref="formatVersion" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<!--
*******formatRegistryComplexType
-->
<xs:complexType name="formatRegistryComplexType">
<xs:sequence>
<xs:element ref="formatRegistryName"/>
<xs:element ref="formatRegistryKey"/>
<xs:element ref="formatRegistryRole" minOccurs="0"/>
</xs:sequence>
<!-- <xs:attributeGroup ref="xlink:simpleLink"/>-->
</xs:complexType>
<!--
****************hardwareComplexType
-->
<xs:complexType name="hardwareComplexType">
<xs:sequence>
<xs:element ref="hwName"/>
<xs:element ref="hwType"/>
<xs:element ref="hwOtherInformation" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<!--
****************inhibitorsComplexType
-->
<xs:complexType name="inhibitorsComplexType">
<xs:sequence>
<xs:element ref="inhibitorType"/>
<xs:element ref="inhibitorTarget" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="inhibitorKey" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<!--
******* licenseDocumentationIdentifierComplexType ****** New in version 2.2 ******
-->
<xs:complexType name="licenseDocumentationIdentifierComplexType">
<xs:sequence>
<xs:element ref="licenseDocumentationIdentifierType"/>
<xs:element ref="licenseDocumentationIdentifierValue"/>
<xs:element ref="licenseDocumentationRole" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<!--
******* licenseIdentifierComplexType
-->
<xs:complexType name="licenseIdentifierComplexType">
<xs:sequence>
<xs:element ref="licenseIdentifierType"/>
<xs:element ref="licenseIdentifierValue"/>
</xs:sequence>
</xs:complexType>
<!--
******* licenseInformationComplexType
See comment for "creatingApplicationComplexType"
-->
<xs:complexType name="licenseInformationComplexType">
<xs:choice>
<xs:sequence>
<!-- the following choice is introduced in version 2.2. Previously it had been simply <licenseIdentifier> . In version 2.2 <licenseDocumentationIdentifier> is introduced as an alternative choice. <licenseIdentifier> is retained as an alternative for backward compatibility, however <licenseDocumentationIdentifier> is the preferred alternative.
licenseApplicableDates is new in 2.2
-->
<xs:choice>
<xs:element ref="licenseIdentifier"/>
<xs:element ref="licenseDocumentationIdentifier" maxOccurs="unbounded"/>
<!-- ******************* maxOccurs="unbounded" added Sept. 28, 2012. it had been omitted in error -->
</xs:choice>
<!-- -->
<xs:element ref="licenseTerms" minOccurs="0"/>
<xs:element ref="licenseNote" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="licenseApplicableDates" minOccurs="0"/>
</xs:sequence>
<xs:sequence>
<xs:element ref="licenseTerms"/>
<xs:element ref="licenseNote" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="licenseApplicableDates" minOccurs="0"/>
</xs:sequence>
<xs:sequence>
<xs:element ref="licenseNote" maxOccurs="unbounded"/>
<xs:element ref="licenseApplicableDates" minOccurs="0"/>
</xs:sequence>
<xs:element ref="licenseApplicableDates"/>
</xs:choice>
</xs:complexType>
<!--
******* linkingAgentIdentifierComplexType
-->
<xs:complexType name="linkingAgentIdentifierComplexType">
<xs:sequence>
<xs:element ref="linkingAgentIdentifierType"/>
<xs:element ref="linkingAgentIdentifierValue"/>
<xs:element ref="linkingAgentRole" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="LinkAgentXmlID" type="xs:IDREF"/>
<!-- <xs:attributeGroup ref="xlink:simpleLink"/>-->
</xs:complexType>
<!--
****************"linkingEventIdentifierComplexType
-->
<xs:complexType name="linkingEventIdentifierComplexType">
<xs:sequence>
<xs:element ref="linkingEventIdentifierType"/>
<xs:element ref="linkingEventIdentifierValue"/>
</xs:sequence>
<xs:attribute name="LinkEventXmlID" type="xs:IDREF"/>
<!-- <xs:attributeGroup ref="xlink:simpleLink"/>-->
</xs:complexType>
<!--
*******linkingObjectIdentifierComplexType
-->
<xs:complexType name="linkingObjectIdentifierComplexType">
<xs:sequence>
<xs:element ref="linkingObjectIdentifierType"/>
<xs:element ref="linkingObjectIdentifierValue"/>
<xs:element ref="linkingObjectRole" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="LinkObjectXmlID" type="xs:IDREF"/>
<!-- <xs:attributeGroup ref="xlink:simpleLink"/> -->
</xs:complexType>
<!--
****************linkingIntellectualEntityIdentifierComplexType
-->
<xs:complexType name="linkingIntellectualEntityIdentifierComplexType">
<xs:sequence>
<xs:element ref="linkingIntellectualEntityIdentifierType"/>
<xs:element ref="linkingIntellectualEntityIdentifierValue"/>
</xs:sequence>
<!-- <xs:attributeGroup ref="xlink:simpleLink"/>-->
</xs:complexType>
<!--
****************linkingRightsStatementIdentifierComplexType
-->
<xs:complexType name="linkingRightsStatementIdentifierComplexType">
<xs:sequence>
<xs:element ref="linkingRightsStatementIdentifierType"/>
<xs:element ref="linkingRightsStatementIdentifierValue"/>
</xs:sequence>
<xs:attribute name="LinkPermissionStatementXmlID" type="xs:IDREF"/>
<!-- <xs:attributeGroup ref="xlink:simpleLink"/>-->
</xs:complexType>
<!--
****************objectCharacteristicsComplexType
-->
<xs:complexType name="objectCharacteristicsComplexType">
<xs:sequence>
<xs:element ref="compositionLevel"/>
<xs:element ref="fixity" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="size" minOccurs="0"/>
<xs:element ref="format" maxOccurs="unbounded"/>
<xs:element ref="creatingApplication" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="inhibitors" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="objectCharacteristicsExtension" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="mdSec" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<!--
*******objectIdentifierComplexType
-->
<xs:complexType name="objectIdentifierComplexType">
<xs:sequence>
<xs:element ref="objectIdentifierType"/>
<xs:element ref="objectIdentifierValue"/>
</xs:sequence>
<!-- <xs:attributeGroup ref="xlink:simpleLink"/>-->
</xs:complexType>
<!--
****************originalNameComplexType
-->
<xs:complexType name="originalNameComplexType">
<xs:simpleContent>
<xs:extension base="xs:string">
<!-- <xs:attributeGroup ref="xlink:simpleLink"/>-->
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<!--
****************otherRightsDocumentationIdentifierComplexType ****** New in version 2.2 ******
-->
<xs:complexType name="otherRightsDocumentationIdentifierComplexType">
<xs:sequence>
<xs:element ref="otherRightsDocumentationIdentifierType"/>
<xs:element ref="otherRightsDocumentationIdentifierValue"/>
<xs:element ref="otherRightsDocumentationRole" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<!--
****************otherRightsInformationComplexType ****** New in version 2.2 ******
-->
<xs:complexType name="otherRightsInformationComplexType">
<xs:sequence>
<xs:element ref="otherRightsDocumentationIdentifier" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="otherRightsBasis"/>
<xs:element ref="otherRightsApplicableDates" minOccurs="0"/>
<xs:element ref="otherRightsNote" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<!--
****************preservationLevelComplexType
-->
<xs:complexType name="preservationLevelComplexType">
<xs:sequence>
<xs:element ref="preservationLevelValue"/>
<xs:element ref="preservationLevelRole" minOccurs="0"/>
<xs:element ref="preservationLevelRationale" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="preservationLevelDateAssigned" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<!--
****************relatedEventIdentificationComplexType
-->
<xs:complexType name="relatedEventIdentificationComplexType">
<xs:sequence>
<xs:element ref="relatedEventIdentifierType"/>
<xs:element ref="relatedEventIdentifierValue"/>
<xs:element ref="relatedEventSequence" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="RelEventXmlID" type="xs:IDREF"/>
<!-- <xs:attributeGroup ref="xlink:simpleLink"/>-->
</xs:complexType>
<!--
****************relatedObjectIdentificationComplexType
-->
<xs:complexType name="relatedObjectIdentificationComplexType">
<xs:sequence>
<xs:element ref="relatedObjectIdentifierType"/>
<xs:element ref="relatedObjectIdentifierValue"/>
<xs:element ref="relatedObjectSequence" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="RelObjectXmlID" type="xs:IDREF"/>
<!-- <xs:attributeGroup ref="xlink:simpleLink"/>-->
</xs:complexType>
<!--
****************relationshipComplexType
-->
<xs:complexType name="relationshipComplexType">
<xs:sequence>
<xs:element ref="relationshipType"/>
<xs:element ref="relationshipSubType"/>
<xs:element ref="relatedObjectIdentification" maxOccurs="unbounded"/>
<xs:element ref="relatedEventIdentification" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<!--
******** rightsGrantedComplexType
-->
<xs:complexType name="rightsGrantedComplexType">
<xs:sequence>
<xs:element ref="act"/>
<xs:element ref="restriction" minOccurs="0" maxOccurs="unbounded"/>
<!-- -->
<xs:element ref="termOfGrant" minOccurs="0"/>
<!-- Previously( in 2.1), termOfGrant (above) was mandatory. In 2.2 it is changed to optional , and termOfRestriction (below) is added. Either one, or both, may occur.-->
<xs:element ref="termOfRestriction" minOccurs="0"/>
<!-- -->
<xs:element ref="rightsGrantedNote" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<!--
******* rightsStatementComplexType
-->
<xs:complexType name="rightsStatementComplexType">
<xs:sequence>
<xs:element ref="rightsStatementIdentifier"/>
<xs:element ref="rightsBasis"/>
<xs:element ref="copyrightInformation" minOccurs="0"/>
<xs:element ref="licenseInformation" minOccurs="0"/>
<xs:element ref="statuteInformation" minOccurs="0" maxOccurs="unbounded"/>
<!--The following element (otherRightsInformation) is new in 2.2 -->
<xs:element ref="otherRightsInformation" minOccurs="0"/>
<xs:element ref="rightsGranted" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="linkingObjectIdentifier" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="linkingAgentIdentifier" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<!--
*******rightsStatementIdentifierComplexType
-->
<xs:complexType name="rightsStatementIdentifierComplexType">
<xs:sequence>
<xs:element ref="rightsStatementIdentifierType"/>
<xs:element ref="rightsStatementIdentifierValue"/>
</xs:sequence>
<!-- <xs:attributeGroup ref="xlink:simpleLink"/>-->
</xs:complexType>
<!--
****************signatureComplexType
-->
<xs:complexType name="signatureComplexType">
<xs:sequence>
<xs:element ref="signatureEncoding"/>
<xs:element ref="signer" minOccurs="0"/>
<xs:element ref="signatureMethod"/>
<xs:element ref="signatureValue"/>
<xs:element ref="signatureValidationRules"/>
<xs:element ref="signatureProperties" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="keyInformation" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="mdSec" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<!--
****************signatureInformationComplexType
See comment for "creatingApplicationComplexType"
-->
<xs:complexType name="signatureInformationComplexType">
<xs:choice>
<xs:sequence>
<xs:element ref="signature"/>
<xs:element ref="signatureInformationExtension" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="mdSec" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:choice maxOccurs="unbounded">
<xs:element ref="signatureInformationExtension"/>
<xs:element ref="mdSec"/>
</xs:choice>
</xs:choice>
<!-- -->
</xs:complexType>
<!--
****************significantPropertiesComplexType
See comment for "creatingApplicationComplexType"
-->
<xs:complexType name="significantPropertiesComplexType">
<xs:choice>
<xs:sequence>
<xs:element ref="significantPropertiesType"/>
<xs:element ref="significantPropertiesValue" minOccurs="0"/>
<xs:element ref="significantPropertiesExtension" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="mdSec" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:sequence>
<xs:element ref="significantPropertiesValue"/>
<xs:element ref="significantPropertiesExtension" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="mdSec" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<!---->
<xs:choice maxOccurs="unbounded">
<xs:element ref="significantPropertiesExtension"/>
<xs:element ref="mdSec"/>
</xs:choice>
<!-- -->
</xs:choice>
</xs:complexType>
<!--
****************softwareComplexType
-->
<xs:complexType name="softwareComplexType">
<xs:sequence>
<xs:element ref="swName"/>
<xs:element ref="swVersion" minOccurs="0"/>
<xs:element ref="swType"/>
<xs:element ref="swOtherInformation" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="swDependency" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<!--
****************startAndEndDateComplexType ****** New in version 2.2 ******
-->
<xs:complexType name="startAndEndDateComplexType">
<xs:sequence>
<xs:element ref="startDate"/>
<xs:element ref="endDate" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<!--
******* statuteDocumentationIdentifierComplexType ****** New in version 2.2 ******
-->
<xs:complexType name="statuteDocumentationIdentifierComplexType">
<xs:sequence>
<xs:element ref="statuteDocumentationIdentifierType"/>
<xs:element ref="statuteDocumentationIdentifierValue"/>
<xs:element ref="statuteDocumentationRole" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<!--
******* statuteInformationComplexType
-->
<xs:complexType name="statuteInformationComplexType">
<xs:sequence>
<xs:element ref="statuteJurisdiction"/>
<xs:element ref="statuteCitation"/>
<xs:element ref="statuteInformationDeterminationDate" minOccurs="0"/>
<xs:element ref="statuteNote" minOccurs="0" maxOccurs="unbounded"/>
<!-- the following two elements are new in 2.2 -->
<xs:element ref="statuteDocumentationIdentifier" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="statuteApplicableDates" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<!--
****************storageComplexType
See comment for "creatingApplicationComplexType"
-->
<xs:complexType name="storageComplexType">
<xs:choice>
<xs:sequence>
<xs:element ref="contentLocation"/>
<xs:element ref="storageMedium" minOccurs="0"/>
</xs:sequence>
<xs:element ref="storageMedium"/>
</xs:choice>
</xs:complexType>
<!--
********************************************************************************************
* *
* Element declarations *
* *
*********************************************************************************************
****** string type element declarations
-->
<xs:element name="act" type="xs:string"/>
<xs:element name="agentIdentifierType" type="xs:string"/>
<xs:element name="agentIdentifierValue" type="xs:string"/>
<xs:element name="agentName" type="xs:string"/>
<xs:element name="agentNote" type="xs:string"/>
<xs:element name="agentType" type="xs:string"/>
<xs:element name="contentLocationType" type="xs:string"/>
<xs:element name="contentLocationValue" type="xs:string"/>
<!-- Following three elements are new in version 2.2 -->
<xs:element name="copyrightDocumentationIdentifierType" type="xs:string"/>
<xs:element name="copyrightDocumentationRole" type="xs:string"/>
<xs:element name="copyrightDocumentationIdentifierValue" type="xs:string"/>
<!-- -->
<xs:element name="copyrightStatus" type="xs:string"/>
<!-- definition of copyrightJurisdiction changed in 2.2 -->
<xs:element name="copyrightJurisdiction" type="countryCode"/>
<xs:element name="copyrightNote" type="xs:string"/>
<xs:element name="creatingApplicationName" type="xs:string"/>
<xs:element name="creatingApplicationVersion" type="xs:string"/>
<xs:element name="dependencyIdentifierType" type="xs:string"/>
<xs:element name="dependencyIdentifierValue" type="xs:string"/>
<xs:element name="dependencyName" type="xs:string"/>
<xs:element name="environmentCharacteristic" type="xs:string"/>
<xs:element name="environmentNote" type="xs:string"/>
<xs:element name="environmentPurpose" type="xs:string"/>
<xs:element name="eventDetail" type="xs:string"/>
<xs:element name="eventIdentifierType" type="xs:string"/>
<xs:element name="eventIdentifierValue" type="xs:string"/>
<xs:element name="eventOutcome" type="xs:string"/>
<xs:element name="eventOutcomeDetailNote" type="xs:string"/>
<xs:element name="formatName" type="xs:string"/>
<xs:element name="formatNote" type="xs:string"/>
<xs:element name="formatRegistryName" type="xs:string"/>
<xs:element name="formatRegistryKey" type="xs:string"/>
<xs:element name="formatRegistryRole" type="xs:string"/>
<xs:element name="formatVersion" type="xs:string"/>
<xs:element name="hwOtherInformation" type="xs:string"/>
<xs:element name="hwName" type="xs:string"/>
<xs:element name="hwType" type="xs:string"/>
<xs:element name="inhibitorKey" type="xs:string"/>
<xs:element name="inhibitorTarget" type="xs:string"/>
<xs:element name="inhibitorType" type="xs:string"/>
<!-- Following three elements are new in version 2.2 -->
<xs:element name="licenseDocumentationIdentifierType" type="xs:string"/>
<xs:element name="licenseDocumentationRole" type="xs:string"/>
<xs:element name="licenseDocumentationIdentifierValue" type="xs:string"/>
<!-- -->
<xs:element name="licenseIdentifierType" type="xs:string"/>
<xs:element name="licenseIdentifierValue" type="xs:string"/>
<xs:element name="licenseNote" type="xs:string"/>
<xs:element name="licenseTerms" type="xs:string"/>
<xs:element name="linkingAgentIdentifierType" type="xs:string"/>
<xs:element name="linkingAgentIdentifierValue" type="xs:string"/>
<xs:element name="linkingAgentRole" type="xs:string"/>
<xs:element name="linkingEventIdentifierType" type="xs:string"/>
<xs:element name="linkingEventIdentifierValue" type="xs:string"/>
<xs:element name="linkingIntellectualEntityIdentifierType" type="xs:string"/>
<xs:element name="linkingIntellectualEntityIdentifierValue" type="xs:string"/>
<xs:element name="linkingObjectIdentifierType" type="xs:string"/>
<xs:element name="linkingObjectRole" type="xs:string"/>
<xs:element name="linkingObjectIdentifierValue" type="xs:string"/>
<xs:element name="linkingRightsStatementIdentifierType" type="xs:string"/>
<xs:element name="linkingRightsStatementIdentifierValue" type="xs:string"/>
<xs:element name="messageDigest" type="xs:string"/>
<xs:element name="messageDigestAlgorithm" type="xs:string"/>
<xs:element name="messageDigestOriginator" type="xs:string"/>
<xs:element name="objectIdentifierType" type="xs:string"/>
<xs:element name="objectIdentifierValue" type="xs:string"/>
<!-- Following five elements are new in version 2.2 -->
<xs:element name="otherRightsBasis" type="xs:string"/>
<xs:element name="otherRightsDocumentationRole" type="xs:string"/>
<xs:element name="otherRightsDocumentationIdentifierType" type="xs:string"/>
<xs:element name="otherRightsDocumentationIdentifierValue" type="xs:string"/>
<xs:element name="otherRightsNote" type="xs:string"/>
<!-- -->
<xs:element name="preservationLevelValue" type="xs:string"/>
<xs:element name="preservationLevelRole" type="xs:string"/>
<xs:element name="preservationLevelRationale" type="xs:string"/>
<xs:element name="relatedEventIdentifierType" type="xs:string"/>
<xs:element name="relatedEventIdentifierValue" type="xs:string"/>
<xs:element name="relatedObjectIdentifierType" type="xs:string"/>
<xs:element name="relatedObjectIdentifierValue" type="xs:string"/>
<xs:element name="relationshipType" type="xs:string"/>
<xs:element name="relationshipSubType" type="xs:string"/>
<xs:element name="restriction" type="xs:string"/>
<xs:element name="rightsBasis" type="xs:string"/>
<xs:element name="rightsGrantedNote" type="xs:string"/>
<xs:element name="rightsStatementIdentifierType" type="xs:string"/>
<xs:element name="rightsStatementIdentifierValue" type="xs:string"/>
<xs:element name="signatureEncoding" type="xs:string"/>
<xs:element name="signatureMethod" type="xs:string"/>
<xs:element name="signatureProperties" type="xs:string"/>
<xs:element name="signatureValue" type="xs:string"/>
<xs:element name="signatureValidationRules" type="xs:string"/>
<xs:element name="signer" type="xs:string"/>
<xs:element name="significantPropertiesType" type="xs:string"/>
<xs:element name="significantPropertiesValue" type="xs:string"/>
<xs:element name="storageMedium" type="xs:string"/>
<xs:element name="statuteCitation" type="xs:string"/>
<!-- Following three elements are new in version 2.2 -->
<xs:element name="statuteDocumentationIdentifierType" type="xs:string"/>
<xs:element name="statuteDocumentationIdentifierValue" type="xs:string"/>
<xs:element name="statuteDocumentationRole" type="xs:string"/>
<!-- definition of statuteJurisdiction changed in 2.2 -->
<xs:element name="statuteJurisdiction" type="countryCode"/>
<xs:element name="statuteNote" type="xs:string"/>
<xs:element name="swName" type="xs:string"/>
<xs:element name="swVersion" type="xs:string"/>
<xs:element name="swType" type="xs:string"/>
<xs:element name="swDependency" type="xs:string"/>
<xs:element name="swOtherInformation" type="xs:string"/>
<!--
****** complex type element declarations
-->
<xs:element name="agentIdentifier" type="agentIdentifierComplexType"/>
<xs:element name="contentLocation" type="contentLocationComplexType"/>
<!-- The following element (copyrightDocumentationIdentifier) is new in version 2.2 -->
<xs:element name="copyrightDocumentationIdentifier" type="copyrightDocumentationIdentifierComplexType"/>
<xs:element name="copyrightInformation" type="copyrightInformationComplexType"/>
<xs:element name="creatingApplication" type="creatingApplicationComplexType"/>
<xs:element name="dependency" type="dependencyComplexType"/>
<xs:element name="dependencyIdentifier" type="dependencyIdentifierComplexType"/>
<xs:element name="environment" type="environmentComplexType"/>
<xs:element name="eventIdentifier" type="eventIdentifierComplexType"/>
<xs:element name="eventOutcomeDetail" type="eventOutcomeDetailComplexType"/>
<xs:element name="eventOutcomeInformation" type="eventOutcomeInformationComplexType"/>
<xs:element name="eventType" type="xs:string"/>
<xs:element name="fixity" type="fixityComplexType"/>
<xs:element name="format" type="formatComplexType"/>
<xs:element name="formatDesignation" type="formatDesignationComplexType"/>
<xs:element name="formatRegistry" type="formatRegistryComplexType"/>
<xs:element name="hardware" type="hardwareComplexType"/>
<xs:element name="inhibitors" type="inhibitorsComplexType"/>
<!-- the following element (licenseDocumentationIdentifier) is new in version 2.2 -->
<xs:element name="licenseDocumentationIdentifier" type="licenseDocumentationIdentifierComplexType"/>
<xs:element name="licenseIdentifier" type="licenseIdentifierComplexType"/>
<xs:element name="licenseInformation" type="licenseInformationComplexType"/>
<xs:element name="linkingAgentIdentifier" type="linkingAgentIdentifierComplexType"/>
<xs:element name="linkingEventIdentifier" type="linkingEventIdentifierComplexType"/>
<xs:element name="linkingIntellectualEntityIdentifier" type="linkingIntellectualEntityIdentifierComplexType"/>
<xs:element name="linkingObjectIdentifier" type="linkingObjectIdentifierComplexType"/>
<xs:element name="linkingRightsStatementIdentifier" type="linkingRightsStatementIdentifierComplexType"/>
<xs:element name="objectCharacteristics" type="objectCharacteristicsComplexType"/>
<xs:element name="objectIdentifier" type="objectIdentifierComplexType"/>
<xs:element name="originalName" type="originalNameComplexType"/>
<!-- Following two elements new in 2.2 -->
<xs:element name="otherRightsDocumentationIdentifier" type="otherRightsDocumentationIdentifierComplexType"/>
<xs:element name="otherRightsInformation" type="otherRightsInformationComplexType"/>
<!-- -->
<xs:element name="preservationLevel" type="preservationLevelComplexType"/>
<xs:element name="relatedEventIdentification" type="relatedEventIdentificationComplexType"/>
<xs:element name="relatedObjectIdentification" type="relatedObjectIdentificationComplexType"/>
<xs:element name="relationship" type="relationshipComplexType"/>
<xs:element name="rightsGranted" type="rightsGrantedComplexType"/>
<xs:element name="rightsStatement" type="rightsStatementComplexType"/>
<xs:element name="rightsStatementIdentifier" type="rightsStatementIdentifierComplexType"/>
<xs:element name="signature" type="signatureComplexType"/>
<xs:element name="signatureInformation" type="signatureInformationComplexType"/>
<xs:element name="significantProperties" type="significantPropertiesComplexType"/>
<!-- the following elelment (statuteDocumentationIdentifier) is new in 2.2 -->
<xs:element name="statuteDocumentationIdentifier" type="statuteDocumentationIdentifierComplexType"/>
<xs:element name="statuteInformation" type="statuteInformationComplexType"/>
<xs:element name="software" type="softwareComplexType"/>
<xs:element name="storage" type="storageComplexType"/>
<!--
****** other xs type element declarations
-->
<xs:element name="compositionLevel" type="xs:nonNegativeInteger"/>
<xs:element name="relatedEventSequence" type="xs:nonNegativeInteger"/>
<xs:element name="relatedObjectSequence" type="xs:nonNegativeInteger"/>
<xs:element name="size" type="xs:long"/>
<!--
****** date type element declarations
-->
<xs:element name="dateCreatedByApplication" type="edtfSimpleType"/>
<xs:element name="endDate" type="edtfSimpleType"/>
<!-- the following element (copyRightApplicableDates) is new in 2.2 -->
<xs:element name="copyrightApplicableDates" type="startAndEndDateComplexType"/>
<xs:element name="copyrightStatusDeterminationDate" type="edtfSimpleType"/>
<xs:element name="eventDateTime" type="edtfSimpleType"/>
<!-- the following element (licenseApplicableDates) is new in 2.2 -->
<xs:element name="licenseApplicableDates" type="startAndEndDateComplexType"/>
<xs:element name="preservationLevelDateAssigned" type="edtfSimpleType"/>
<xs:element name="startDate" type="edtfSimpleType"/>
<!-- the following element (otherRightsApplicableDates) is new in 2.2 -->
<xs:element name="otherRightsApplicableDates" type="startAndEndDateComplexType"/>
<!-- the following element (statuteApplicableDates) is new in 2.2 -->
<xs:element name="statuteApplicableDates" type="startAndEndDateComplexType"/>
<xs:element name="statuteInformationDeterminationDate" type="edtfSimpleType"/>
<xs:element name="termOfGrant" type="startAndEndDateComplexType"/>
<xs:element name="termOfRestriction" type="startAndEndDateComplexType"/>
<!--
****** extension type element declarations
-->
<xs:element name="agentExtension" type="extensionComplexType"/>
<xs:element name="creatingApplicationExtension" type="extensionComplexType"/>
<xs:element name="environmentExtension" type="extensionComplexType"/>
<xs:element name="eventOutcomeDetailExtension" type="extensionComplexType"/>
<xs:element name="keyInformation" type="extensionComplexType"/>
<xs:element name="objectCharacteristicsExtension" type="extensionComplexType"/>
<xs:element name="rightsExtension" type="extensionComplexType"/>
<xs:element name="signatureInformationExtension" type="extensionComplexType"/>
<xs:element name="significantPropertiesExtension" type="extensionComplexType"/>
<!--
******************************************************************************************************
************************************ Global Definitions *******************************************
******************************************************************************************************
-->
<!--
************** countryCode definition
countryCode added 2.2. Used by copyrightJurisdiction and statuteJurisdiction. Although typed as xs:string, it is recommended that a standard jurisdictional code (such as ISO 3166-1 alpha-2 or alpha-3 country codes) be used, to ensure international uniqueness. (Note: this does not introduce a substantive change. It is introduced to reinforce this recommendation.)
-->
<xs:simpleType name="countryCode">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<!--
************** version definition
-->
<xs:simpleType name="versionSimpleType">
<xs:restriction base="xs:string">
<xs:enumeration value="2.0"/>
<xs:enumeration value="2.1"/>
<xs:enumeration value="2.2"/>
<!-- 2.2 value added in version 2.2 -->
</xs:restriction>
</xs:simpleType>
<!--
**************** extensionComplexType
-->
<xs:complexType name="extensionComplexType">
<xs:sequence>
<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<!--
****************************************************************************************************
date/time Definition: edtfSimpleType
Extended Date/Time Format
****************************************************************************************************
edtfSimpleType is the type used throughout the schema for "date" and "dateTime" type elements: dateCreatedByApplication, copyrightStatusDeterminationDate, eventDateTime, preservationLevelDateAssigned, statuteInformationDeterminationDate, and others.
It is based on the edtf specification, and introduced into the PREMIS schema in version 2.0. However this schema has not keet pace with the development of that spec, which has changed considerably since the release of version 2.0.
edtfSimpleType is the union of three simple types: xsDate, xs:dateTime - and edtfRegularExpressions, as folloiws:
-->
<xs:simpleType name="edtfSimpleType">
<xs:union memberTypes="xs:date xs:dateTime edtfRegularExpressions"/>
</xs:simpleType>
<!--
"xs:union" (above) means that any string conforming to any one of the types in the union will validate. xs:date and xs:dateTime are built-in W3C schema types. edtfRegularExpressions is a set of regular expressions which are described below. So any string that conforms to one of the two built-in types or any of the regular expressions will validate.
******** edftRegularExpressions
-->
<xs:simpleType name="edtfRegularExpressions">
<xs:restriction base="xs:string">
<xs:pattern value="\d{2}(\d{2}|\?\?|\d(\d|\?))(-(\d{2}|\?\?))?~?\??"/>
<xs:pattern value="\d{6}(\d{2}|\?\?)~?\??"/>
<xs:pattern value="\d{8}T\d{6}"/>
<xs:pattern value="((\d{4}(-\d{2})?)|UNKNOWN)/((\d{4}(-\d{2})?)|UNKNOWN|OPEN)"/>
<xs:pattern value="\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}((Z|(\+|-)\d{2}:\d{2}))?/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}((Z|(\+|-)\d{2}:\d{2}))?"/>
<!-- The following, "OPEN", introduced in version 2.2 -->
<xs:pattern value="OPEN"/>
<!--
The first pattern:
<xs:pattern value="\d{2}(\d{2}|\?\?|\d(\d|\?))(-(\d{2}|\?\?))?~?\??"/>,
is for year (yyyy) or year-month (yyyy-mm). The last or last two digits of year may be '?' meaning "one year in that range but not sure which year", for example 19?? means some year from 1990 to 1999. Similarly month may be '??' so that 2004-?? "means some month in 2004". And the entire string may end with '?' or '~' for "uncertain" or "approximate".
Hyphen must separate year and month.
The second pattern:
<xs:pattern value="\d{6}(\d{2}|\?\?)~?\??"/>,
is for yearMonthDay - yyyymmdd, where 'dd' may be '??' so '200412??' means "some day during the month of 12/2004".
The whole string may be followed by '?' or '~' to mean "questionable" or "approximate". hyphens are not allowed for this pattern.
The Third patten:
<xs:pattern value="\d{8}T\d{6}"/>,
is for date and time with T separator:'yyyymmddThhmmss'. Hyphens in date and colons in time not allowed for this pattern.
The following pattern:
<xs:pattern value="((\d{4}(-\d{2})?)|UNKNOWN)/((\d{4}(-\d{2})?)|UNKNOWN|OPEN)"/>
is for a date range. in years: 'yyyy/yyyy'; or year/month: yyyy-mm/yyyy-mm. Beginning or end of range value may be 'UNKNOWN'. End of range value may be 'OPEN'.
hyphens mandatory when month is present.
The pattern ...
<xs:pattern value="\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}((Z|(\+|-)\d{2}:\d{2}))?/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}((Z|(\+|-)\d{2}:\d{2}))?"></xs:pattern>
.... supports time zones, e.g.
2010-04-19T22:41:44Z/2010-04-19T22:48:50Z
Or
2010-04-19T22:41:44+02:00/2010-04-19T22:48:50+02:00.
The pattern....
<xs:pattern value="OPEN"/>
is introduced in version 2.2 to accomodate date elements that are structured into startDate and endDate.
EDTF supports expression of start and end date in a single string (an interval). However, some date elements are still structured into a start and end date, and "OPEN" needs to be supported as an end date. Prior to this version, "OPEN" was valid only within an interval. This allow it to be used as a standalone date. It is intended to be used as such only as the end date of a structured date, but this cannot be enforced.
-->
</xs:restriction>
</xs:simpleType>
<!--
****************************************************************************************************************************************
****************************************************************************************************************************************
Following is the definition of the <mdSec> element (first introcuced in version 2.1). <mdSec> is offered as an alternative to an extension element, wherever an extension element occurs.
*********************************************************************************************
*********************************************************************************************
* *
* <mdSec> element *
* *
* *
*********************************************************************************************
*********************************************************************************************
-->
<xs:element name="mdSec" type="mdSecDefinition"/>
<!--
************ mdSecDefinition
<mdSec> is a generalization of several METS metadata type elements: <dmdSec>, <amdSec>, etc. all of METS
type "mdSecType". PREMIS generalized these into a single element because it does not distinguish between
these different types of metadata (e.g. administrative vs. descriptive).
<mdSec> includes one or both of <mdRef> and <mdWrap>, a reference to external metadata and a wrapper of
internal metadata, respectively. <mdRef> is an empty element with a link (an attribute) to external metadata.
<mdWrap> includes the metadata, either as <xmlData> or <binData>.
-->
<xs:complexType name="mdSecDefinition">
<xs:all>
<xs:element ref="mdRef" minOccurs="0"/>
<xs:element ref="mdWrap" minOccurs="0"/>
</xs:all>
<xs:attribute name="ID" type="xs:ID" use="required"/>
<xs:attribute name="GROUPID" type="xs:string"/>
<xs:attribute name="ADMID" type="xs:IDREFS"/>
<xs:attribute name="CREATED" type="edtfSimpleType"/>
<xs:attribute name="STATUS" type="xs:string"/>
</xs:complexType>
<!--
************ mdRefDefinition
<mdRef> (metadata reference) is an empty element providing pointers (via xlink and XPTR attributes) to metadata outside the PREMIS document.
-->
<xs:complexType name="mdRefDefinition">
<xs:attribute name="ID" type="xs:ID"/>
<xs:attribute name="LOCTYPE" type="LOCTYPEDefinition" use="required"/>
<xs:attribute name="OTHERLOCTYPE" type="xs:string"/>
<!-- <xs:attributeGroup ref="xlink:simpleLink"/>-->
<xs:attributeGroup ref="metadataAttributeGroup"/>
<xs:attributeGroup ref="filecoreAttributeGroup"/>
<xs:attribute name="LABEL" type="xs:string"/>
<xs:attribute name="XPTR" type="xs:string"/>
<!-- -->
<!--
<LOCTYPE> must be supplied, and its value may be "other"
in which case <OTHERLOCTYPE> should be supplied.
-->
</xs:complexType>
<!--
********* mdWrapDefinition
-->
<xs:complexType name="mdWrapDefinition">
<xs:choice>
<xs:element ref="binData" minOccurs="0"/>
<xs:element ref="xmlData" minOccurs="0"/>
</xs:choice>
<xs:attribute name="ID" type="xs:ID"/>
<xs:attributeGroup ref="metadataAttributeGroup"/>
<xs:attributeGroup ref="filecoreAttributeGroup"/>
<xs:attribute name="LABEL" type="xs:string"/>
<!--
<mdWrap> (metadata wrapper) wraps metadata in one of the following forms:
1) XML-encoded (belonging to any namespace) wrapped in an <xmlData> element. .
2) Arbitrary Base64 encoded wrapped in a <binData> element.
-->
</xs:complexType>
<!--
xmlDataDefinition
-->
<xs:complexType name="xmlDataDefinition">
<xs:sequence>
<xs:any namespace="##any" processContents="lax" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<!--
MDTYPEDefinition
-->
<xs:simpleType name="MDTYPEDefinition">
<xs:restriction base="xs:string">
<xs:enumeration value="MIX"/>
<xs:enumeration value="LC-VIDEO"/>
<xs:enumeration value="LC-AUDIO"/>
<xs:enumeration value="TEXTMD"/>
<xs:enumeration value="METSRIGHTS"/>
<xs:enumeration value="CDLCopyright"/>
<xs:enumeration value="XMLSignature"/>
<xs:enumeration value="OTHER"/>
</xs:restriction>
<!-- this list of values differs from the list in METS -->
</xs:simpleType>
<!--
LOCTYPEDefinition
-->
<xs:simpleType name="LOCTYPEDefinition">
<xs:restriction base="xs:string">
<xs:enumeration value="ARK"/>
<xs:enumeration value="URN"/>
<xs:enumeration value="URL"/>
<xs:enumeration value="PURL"/>
<xs:enumeration value="HANDLE"/>
<xs:enumeration value="DOI"/>
<xs:enumeration value="OTHER"/>
</xs:restriction>
</xs:simpleType>
<!--
CHECKSUMTYPEDefinition
-->
<xs:simpleType name="CHECKSUMTYPEDefinition">
<xs:restriction base="xs:string">
<xs:enumeration value="Adler-32"/>
<xs:enumeration value="CRC32"/>
<xs:enumeration value="HAVAL"/>
<xs:enumeration value="MD5"/>
<xs:enumeration value="MNP"/>
<xs:enumeration value="SHA-1"/>
<xs:enumeration value="SHA-256"/>
<xs:enumeration value="SHA-384"/>
<xs:enumeration value="SHA-512"/>
<xs:enumeration value="TIGER"/>
<xs:enumeration value="WHIRLPOOL"/>
</xs:restriction>
</xs:simpleType>
<!--
*************** attribute group definitions
-->
<!--
**** metadataAttributeGroup
-->
<xs:attributeGroup name="metadataAttributeGroup">
<xs:attribute name="MDTYPE" type="MDTYPEDefinition" use="required"/>
<xs:attribute name="OTHERMDTYPE" type="xs:string"/>
<xs:attribute name="MDTYPEVERSION" type="xs:string"/>
</xs:attributeGroup>
<!--
**** filecoreAttributeGroup
-->
<xs:attributeGroup name="filecoreAttributeGroup">
<xs:attribute name="MIMETYPE" type="xs:string"/>
<xs:attribute name="SIZE" type="xs:long"/>
<xs:attribute name="CREATED" type="edtfSimpleType"/>
<xs:attribute name="CHECKSUM" type="xs:string"/>
<xs:attribute name="CHECKSUMTYPE" type="CHECKSUMTYPEDefinition"/>
</xs:attributeGroup>
<!--
Element Declarations
-->
<xs:element name="binData" type="xs:base64Binary"/>
<xs:element name="mdRef" type="mdRefDefinition"/>
<xs:element name="mdWrap" type="mdWrapDefinition"/>
<xs:element name="xmlData" type="xmlDataDefinition"/>
<!-- -->
</xs:schema>