diff --git a/oaipmh-core/pom.xml b/oaipmh-core/pom.xml index 6a136ac5ee23ffdce9fe4439c03d5dee5cc8c5aa..d76d631bc9f6e8a6ecc027074d85ec638ef5466a 100644 --- a/oaipmh-core/pom.xml +++ b/oaipmh-core/pom.xml @@ -119,7 +119,7 @@ <configuration> <schemaFile>oai_dc.xsd</schemaFile> <packageName>info.textgrid.middleware.oaidc</packageName> - <schemaDirectory>src/main/xsd/dc</schemaDirectory> + <schemaDirectory>src/main/xsd</schemaDirectory> <schemaIncludes> <include>oai_dc.xsd</include> </schemaIncludes> @@ -136,7 +136,7 @@ <configuration> <schemaFile>oai_pmh.xsd</schemaFile> <packageName>info.textgrid.middleware.oaipmh</packageName> - <schemaDirectory>src/main/xsd/oaipmh</schemaDirectory> + <schemaDirectory>src/main/xsd</schemaDirectory> <schemaIncludes> <include>oai_pmh.xsd</include> </schemaIncludes> diff --git a/oaipmh-core/src/main/xsd/oai_dc.xsd b/oaipmh-core/src/main/xsd/oai_dc.xsd new file mode 100644 index 0000000000000000000000000000000000000000..bae1bbf375f5dd03bfa5dfec9f867dcbeb02ece0 --- /dev/null +++ b/oaipmh-core/src/main/xsd/oai_dc.xsd @@ -0,0 +1,42 @@ +<schema targetNamespace="http://www.openarchives.org/OAI/2.0/oai_dc/" + xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns="http://www.w3.org/2001/XMLSchema" + + elementFormDefault="qualified" attributeFormDefault="unqualified"> + + <annotation> + <documentation> + XML Schema 2002-03-18 by Pete Johnston. + Adjusted for usage in the OAI-PMH. + Schema imports the Dublin Core elements from the DCMI schema for unqualified Dublin Core. + 2002-12-19 updated to use simpledc20021212.xsd (instead of simpledc20020312.xsd) + </documentation> + </annotation> + + <import namespace="http://purl.org/dc/elements/1.1/" + schemaLocation="http://dublincore.org/schemas/xmls/simpledc20021212.xsd"/> + + <element name="dc" type="oai_dc:oai_dcType"/> + + <complexType name="oai_dcType"> + <choice minOccurs="0" maxOccurs="unbounded"> + <element ref="dc:title"/> + <element ref="dc:creator"/> + <element ref="dc:subject"/> + <element ref="dc:description"/> + <element ref="dc:publisher"/> + <element ref="dc:contributor"/> + <element ref="dc:date"/> + <element ref="dc:type"/> + <element ref="dc:format"/> + <element ref="dc:identifier"/> + <element ref="dc:source"/> + <element ref="dc:language"/> + <element ref="dc:relation"/> + <element ref="dc:coverage"/> + <element ref="dc:rights"/> + </choice> + </complexType> + +</schema> diff --git a/oaipmh-core/src/main/xsd/oai_pmh.xsd b/oaipmh-core/src/main/xsd/oai_pmh.xsd new file mode 100644 index 0000000000000000000000000000000000000000..834bb391c33803dcfaebd72495929fa29d7a543a --- /dev/null +++ b/oaipmh-core/src/main/xsd/oai_pmh.xsd @@ -0,0 +1,317 @@ +<schema targetNamespace="http://www.openarchives.org/OAI/2.0/" + xmlns="http://www.w3.org/2001/XMLSchema" + xmlns:oai="http://www.openarchives.org/OAI/2.0/" + elementFormDefault="qualified" + attributeFormDefault="unqualified"> + + <annotation> + <documentation> + XML Schema which can be used to validate replies to all OAI-PMH + v2.0 requests. Herbert Van de Sompel, 2002-05-13. + Validated with XML Spy v.4.3 on 2002-05-13. + Validated with XSV 1.203.2.45/1.106.2.22 on 2002-05-13. + Added definition of protocolVersionType instead of using anonymous + type. No change of function. Simeon Warner, 2004-03-29. + Tightened definition of UTCdatetimeType to enforce the restriction + to UTC Z notation. Simeon Warner, 2004-09-14. + Corrected pattern matches for setSpecType and metadataPrefixType + to agree with protocol specification. Simeon Warner, 2004-10-12. + Spelling correction. Simeon Warner, 2008-12-07. + $Date: 2004/10/12 15:20:29 $ + </documentation> + </annotation> + + <element name="OAI-PMH" type="oai:OAI-PMHType"/> + + <complexType name="OAI-PMHType"> + <sequence> + <element name="responseDate" type="dateTime"/> + <element name="request" type="oai:requestType"/> + <choice> + <element name="error" type="oai:OAI-PMHerrorType" maxOccurs="unbounded"/> + <element name="Identify" type="oai:IdentifyType"/> + <element name="ListMetadataFormats" type="oai:ListMetadataFormatsType"/> + <element name="ListSets" type="oai:ListSetsType"/> + <element name="GetRecord" type="oai:GetRecordType"/> + <element name="ListIdentifiers" type="oai:ListIdentifiersType"/> + <element name="ListRecords" type="oai:ListRecordsType"/> + </choice> + </sequence> + </complexType> + + <complexType name="requestType"> + <annotation> + <documentation>Define requestType, indicating the protocol request that + led to the response. Element content is BASE-URL, attributes are arguments + of protocol request, attribute-values are values of arguments of protocol + request</documentation> + </annotation> + <simpleContent> + <extension base="anyURI"> + <attribute name="verb" type="oai:verbType" use="optional"/> + <attribute name="identifier" type="oai:identifierType" use="optional"/> + <attribute name="metadataPrefix" type="oai:metadataPrefixType" use="optional"/> + <attribute name="from" type="oai:UTCdatetimeType" use="optional"/> + <attribute name="until" type="oai:UTCdatetimeType" use="optional"/> + <attribute name="set" type="oai:setSpecType" use="optional"/> + <attribute name="resumptionToken" type="string" use="optional"/> + </extension> + </simpleContent> + </complexType> + + <simpleType name="verbType"> + <restriction base="string"> + <enumeration value="Identify"/> + <enumeration value="ListMetadataFormats"/> + <enumeration value="ListSets"/> + <enumeration value="GetRecord"/> + <enumeration value="ListIdentifiers"/> + <enumeration value="ListRecords"/> + </restriction> + </simpleType> + + <!-- define OAI-PMH error conditions --> + <!-- =============================== --> + + <complexType name="OAI-PMHerrorType"> + <simpleContent> + <extension base="string"> + <attribute name="code" type="oai:OAI-PMHerrorcodeType" use="required"/> + </extension> + </simpleContent> + </complexType> + + <simpleType name="OAI-PMHerrorcodeType"> + <restriction base="string"> + <enumeration value="cannotDisseminateFormat"/> + <enumeration value="idDoesNotExist"/> + <enumeration value="badArgument"/> + <enumeration value="badVerb"/> + <enumeration value="noMetadataFormats"/> + <enumeration value="noRecordsMatch"/> + <enumeration value="badResumptionToken"/> + <enumeration value="noSetHierarchy"/> + </restriction> + </simpleType> + + <!-- define OAI-PMH verb containers --> + <!-- ============================== --> + + <complexType name="IdentifyType"> + <sequence> + <element name="repositoryName" type="string"/> + <element name="baseURL" type="anyURI"/> + <element name="protocolVersion" type="oai:protocolVersionType"/> + <element name="adminEmail" type="oai:emailType" maxOccurs="unbounded"/> + <element name="earliestDatestamp" type="oai:UTCdatetimeType"/> + <element name="deletedRecord" type="oai:deletedRecordType"/> + <element name="granularity" type="oai:granularityType"/> + <element name="compression" type="string" minOccurs="0" maxOccurs="unbounded"/> + <element name="description" type="oai:descriptionType" + minOccurs="0" maxOccurs="unbounded"/> + </sequence> + </complexType> + + <complexType name="ListMetadataFormatsType"> + <sequence> + <element name="metadataFormat" type="oai:metadataFormatType" maxOccurs="unbounded"/> + </sequence> + </complexType> + + <complexType name="ListSetsType"> + <sequence> + <element name="set" type="oai:setType" maxOccurs="unbounded"/> + <element name="resumptionToken" type="oai:resumptionTokenType" minOccurs="0"/> + </sequence> + </complexType> + + <complexType name="GetRecordType"> + <sequence> + <element name="record" type="oai:recordType"/> + </sequence> + </complexType> + + <complexType name="ListRecordsType"> + <sequence> + <element name="record" type="oai:recordType" maxOccurs="unbounded"/> + <element name="resumptionToken" type="oai:resumptionTokenType" minOccurs="0"/> + </sequence> + </complexType> + + <complexType name="ListIdentifiersType"> + <sequence> + <element name="header" type="oai:headerType" maxOccurs="unbounded"/> + <element name="resumptionToken" type="oai:resumptionTokenType" minOccurs="0"/> + </sequence> + </complexType> + + <!-- define basic types used in replies to + GetRecord, ListRecords, ListIdentifiers --> + <!-- ======================================= --> + + <complexType name="recordType"> + <annotation> + <documentation>A record has a header, a metadata part, and + an optional about container</documentation> + </annotation> + <sequence> + <element name="header" type="oai:headerType"/> + <element name="metadata" type="oai:metadataType" minOccurs="0"/> + <element name="about" type="oai:aboutType" minOccurs="0" maxOccurs="unbounded"/> + </sequence> + </complexType> + + <complexType name="headerType"> + <annotation> + <documentation>A header has a unique identifier, a datestamp, + and setSpec(s) in case the item from which + the record is disseminated belongs to set(s). + the header can carry a deleted status indicating + that the record is deleted.</documentation> + </annotation> + <sequence> + <element name="identifier" type="oai:identifierType"/> + <element name="datestamp" type="oai:UTCdatetimeType"/> + <element name="setSpec" type="oai:setSpecType" minOccurs="0" maxOccurs="unbounded"/> + </sequence> + <attribute name="status" type="oai:statusType" use="optional"/> + </complexType> + + <simpleType name="identifierType"> + <restriction base="anyURI"/> + </simpleType> + + <simpleType name="statusType"> + <restriction base="string"> + <enumeration value="deleted"/> + </restriction> + </simpleType> + + <complexType name="metadataType"> + <annotation> + <documentation>Metadata must be expressed in XML that complies + with another XML Schema (namespace=#other). Metadata must be + explicitly qualified in the response.</documentation> + </annotation> + <sequence> + <any namespace="##other" processContents="strict"/> + </sequence> + </complexType> + + <complexType name="aboutType"> + <annotation> + <documentation>Data "about" the record must be expressed in XML + that is compliant with an XML Schema defined by a community.</documentation> + </annotation> + <sequence> + <any namespace="##other" processContents="strict"/> + </sequence> + </complexType> + + <complexType name="resumptionTokenType"> + <annotation> + <documentation>A resumptionToken may have 3 optional attributes + and can be used in ListSets, ListIdentifiers, ListRecords + responses.</documentation> + </annotation> + <simpleContent> + <extension base="string"> + <attribute name="expirationDate" type="dateTime" use="optional"/> + <attribute name="completeListSize" type="positiveInteger" use="optional"/> + <attribute name="cursor" type="nonNegativeInteger" use="optional"/> + </extension> + </simpleContent> + </complexType> + + <complexType name="descriptionType"> + <annotation> + <documentation>The descriptionType is used for the description + element in Identify and for setDescription element in ListSets. + Content must be compliant with an XML Schema defined by a + community.</documentation> + </annotation> + <sequence> + <any namespace="##other" processContents="strict"/> + </sequence> + </complexType> + + <simpleType name="UTCdatetimeType"> + <annotation> + <documentation>Datestamps are to either day (type date) + or to seconds granularity (type oai:UTCdateTimeZType)</documentation> + </annotation> + <union memberTypes="date oai:UTCdateTimeZType"/> + </simpleType> + + <simpleType name="UTCdateTimeZType"> + <restriction base="dateTime"> + <pattern value=".*Z"/> + </restriction> + </simpleType> + + <!-- define types used for Identify verb only --> + <!-- ======================================== --> + + <simpleType name="protocolVersionType"> + <restriction base="string"> + <enumeration value="2.0"/> + </restriction> + </simpleType> + + <simpleType name="emailType"> + <restriction base="string"> + <pattern value="\S+@(\S+\.)+\S+"/> + </restriction> + </simpleType> + + <simpleType name="deletedRecordType"> + <restriction base="string"> + <enumeration value="no"/> + <enumeration value="persistent"/> + <enumeration value="transient"/> + </restriction> + </simpleType> + + <simpleType name="granularityType"> + <restriction base="string"> + <enumeration value="YYYY-MM-DD"/> + <enumeration value="YYYY-MM-DDThh:mm:ssZ"/> + </restriction> + </simpleType> + + <!-- define types used for ListMetadataFormats verb only --> + <!-- =================================================== --> + + <complexType name="metadataFormatType"> + <sequence> + <element name="metadataPrefix" type="oai:metadataPrefixType"/> + <element name="schema" type="anyURI"/> + <element name="metadataNamespace" type="anyURI"/> + </sequence> + </complexType> + + <simpleType name="metadataPrefixType"> + <restriction base="string"> + <pattern value="[A-Za-z0-9\-_\.!~\*'\(\)]+"/> + </restriction> + </simpleType> + + <!-- define types used for ListSets verb --> + <!-- =================================== --> + + <complexType name="setType"> + <sequence> + <element name="setSpec" type="oai:setSpecType"/> + <element name="setName" type="string"/> + <element name="setDescription" type="oai:descriptionType" + minOccurs="0" maxOccurs="unbounded"/> + </sequence> + </complexType> + + <simpleType name="setSpecType"> + <restriction base="string"> + <pattern value="([A-Za-z0-9\-_\.!~\*'\(\)])+(:[A-Za-z0-9\-_\.!~\*'\(\)]+)*"/> + </restriction> + </simpleType> + +</schema> \ No newline at end of file