<?xml version="1.0" encoding="UTF-8"?>
<!--
SCHEMA REVISION HISTORY (IN REVERSE CHRONOLOGICAL ORDER)
  2025-01-22: [Revised by Paola Mazzucchi & Marco Negri & Jehu Njikonga]:
     1. Modification of email pattern: compliant with jQuery validation email pattern - v1.10.0 - 9/7/2012 (https://github.com/jquery-validation/jquery-validation/blob/1.10.0/jquery.validate.js)
  2024-10-02: [Revised by Paola Mazzucchi & Jehu Njikonga]
     1. Restriction of the pattern of DOIString: &amp; &lt; &gt; &apos; &quot; not allowed, prefix lenght {4,9} digits and suffix max lenght {1,200}
     (to comply to Crossref)
-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.medra.org.ezproxy.stockton.edu/DOIMetadata/2.0/Citations" targetNamespace="http://www.medra.org.ezproxy.stockton.edu/DOIMetadata/2.0/Citations" elementFormDefault="qualified">
	<xs:element name="CitationList">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="ArticleCitation" minOccurs="0" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="ArticleCitation">
		<xs:complexType>
			<xs:choice>
				<xs:sequence>
					<xs:element name="ISSN" type="ISSN" minOccurs="0"/>
					<xs:element name="JournalTitle" type="NonEmptyString"/>
					<xs:element name="AuthorName" type="AuthorName"/>
					<xs:element name="JournalVolumeNumber" type="JournalVolumeNumber" minOccurs="0"/>
					<xs:element name="JournalIssueNumber" type="JournalIssueNumber" minOccurs="0"/>
					<xs:element name="JournalIssueDesignation" type="JournalIssueDesignationString" minOccurs="0"/>
					<xs:element name="FirstPageNumber" type="PageNumberString"/>
					<xs:element name="JournalIssueDate" type="JournalIssueDate" minOccurs="0"/>
					<xs:element name="DOI" type="DOIString" minOccurs="0"/>
					<xs:element name="ArticleTitle" type="NonEmptyString" minOccurs="0"/>
				</xs:sequence>
				<xs:sequence>
					<xs:element name="BookTitle" type="BookTitle"/>
					<xs:element name="ISBN" type="ISBN" minOccurs="0"/>
					<xs:element name="AuthorName" type="AuthorName"/>
					<xs:element name="ISSN" type="ISSN" minOccurs="0"/>
					<xs:element name="TitleOfSeries" type="TitleOfSeries" minOccurs="0"/>
					<xs:element name="NumberWithinSeries" type="NumberWithinSeries" minOccurs="0"/>
					<xs:element name="EditionNumber" type="EditionNumber" minOccurs="0"/>
					<xs:element name="PublicationDate" type="PublicationDate" minOccurs="0"/>
					<xs:element name="ComponentNumber" type="ComponentNumber" minOccurs="0"/>
					<xs:element name="FirstPageNumber" type="PageNumberString" minOccurs="0"/>
					<xs:element name="DOI" type="DOIString" minOccurs="0"/>
				</xs:sequence>
				<xs:element name="DOI" type="DOIString"/>
				<xs:element name="UnstructuredCitation" type="UnstructuredCitation"/>
			</xs:choice>
			<xs:attribute name="key" use="required">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:minLength value="11"/>
						<xs:pattern value="10\.\d*/\S*_ref\d+"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="ISSNValue">
		<xs:restriction base="xs:string">
			<xs:maxLength value="9"/>
			<xs:minLength value="8"/>
			<xs:pattern value="\d{4}-?\d{3}[\dX]"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="ISSN">
		<xs:simpleContent>
			<xs:extension base="ISSNValue">
				<xs:attribute name="media-type" default="print">
					<xs:simpleType>
						<xs:restriction base="xs:NMTOKEN">
							<xs:enumeration value="print"/>
							<xs:enumeration value="electronic"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="AuthorName">
		<xs:simpleContent>
			<xs:extension base="NonEmptyString">
				<xs:attribute name="referent-type" use="required">
					<xs:simpleType>
						<xs:restriction base="xs:NMTOKEN">
							<xs:enumeration value="person"/>
							<xs:enumeration value="corporate"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="UnstructuredCitation" mixed="true">
		<xs:choice minOccurs="0" maxOccurs="unbounded">
			<xs:group ref="faceMarkup"/>
		</xs:choice>
	</xs:complexType>
	<xs:group name="faceMarkup">
		<xs:choice>
			<xs:element ref="b"/>
			<xs:element ref="i"/>
			<xs:element ref="u"/>
			<xs:element ref="ovl"/>
			<xs:element ref="sup"/>
			<xs:element ref="sub"/>
			<xs:element ref="scp"/>
			<xs:element ref="tt"/>
		</xs:choice>
	</xs:group>
	<xs:element name="b" type="faces"/>
	<xs:element name="i" type="faces"/>
	<xs:element name="u" type="faces"/>
	<xs:element name="ovl" type="faces"/>
	<xs:element name="sup" type="faces"/>
	<xs:element name="sub" type="faces"/>
	<xs:element name="scp" type="faces"/>
	<xs:element name="tt" type="faces"/>
	<xs:complexType name="faces" mixed="true">
		<xs:choice minOccurs="0" maxOccurs="unbounded">
			<xs:group ref="faceMarkup"/>
		</xs:choice>
	</xs:complexType>
	<xs:element name="mEDRACitationMessage">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="Header"/>
				<xs:element name="Citations">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="DOICitations" type="DOICitations" maxOccurs="unbounded"/>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:complexType name="DOICitations">
		<xs:sequence>
			<xs:element name="DOI" type="DOIString"/>
			<xs:element ref="CitationList"/>
		</xs:sequence>
	</xs:complexType>
	<xs:element name="Header">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="RecordReferenceNumber"/>
				<xs:element ref="FromCompany"/>
				<xs:element ref="FromEmail"/>
				<xs:element name="NotificationResponse" type="NotificationResponse" minOccurs="0"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="DOIString">
		<xs:restriction base="xs:string">
			<xs:minLength value="6"/>
			<xs:pattern value="10\.[0-9]{4,9}/[^\s&amp;&lt;&gt;&apos;&quot;]{1,200}"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="FromCompany">
		<xs:simpleType>
			<xs:restriction base="xs:string">
				<xs:minLength value="1"/>
			</xs:restriction>
		</xs:simpleType>
	</xs:element>
	<xs:element name="FromEmail">
		<xs:simpleType>
			<xs:restriction base="xs:string">
				<xs:minLength value="1"/>
				<xs:pattern value="((([a-zA-Z]|\d|[!#&#x24;%&amp;'\*\+\-/=\?\^_`{\|}~]|[&#xA0;-&#xD7FF;&#xF900;-&#xFDCF;&#xFDF0;-&#xFFEF;])+(\.([a-zA-Z]|\d|[!#&#x24;%&amp;'\*\+\-/=\?\^_`{\|}~]|[&#xA0;-&#xD7FF;&#xF900;-&#xFDCF;&#xFDF0;-&#xFFEF;])+)*)|((&#x22;)((((&#x20;|&#x9;)*(&#xD;&#xA;))?(&#x20;|&#x9;)+)?(([&#x7F;]|&#x21;|[&#x23;-\&#x5B;]|[\&#x5D;-&#x7E;]|[&#xA0;-&#xD7FF;&#xF900;-&#xFDCF;&#xFDF0;-&#xFFEF;])|(\\([&#x9;&#xD;-&#x7F;]|[&#xA0;-&#xD7FF;&#xF900;-&#xFDCF;&#xFDF0;-&#xFFEF;]))))*(((&#x20;|&#x9;)*(&#xD;&#xA;))?(&#x20;|&#x9;)+)?(&#x22;)))@((([a-zA-Z]|\d|[&#xA0;-&#xD7FF;&#xF900;-&#xFDCF;&#xFDF0;-&#xFFEF;])|(([a-zA-Z]|\d|[&#xA0;-&#xD7FF;&#xF900;-&#xFDCF;&#xFDF0;-&#xFFEF;])([a-zA-Z]|\d|-|\.|_|~|[&#xA0;-&#xD7FF;&#xF900;-&#xFDCF;&#xFDF0;-&#xFFEF;])*([a-zA-Z]|\d|[&#xA0;-&#xD7FF;&#xF900;-&#xFDCF;&#xFDF0;-&#xFFEF;])))\.)+(([a-zA-Z]|[&#xA0;-&#xD7FF;&#xF900;-&#xFDCF;&#xFDF0;-&#xFFEF;])|(([a-zA-Z]|[&#xA0;-&#xD7FF;&#xF900;-&#xFDCF;&#xFDF0;-&#xFFEF;])([a-zA-Z]|\d|-|\.|_|~|[&#xA0;-&#xD7FF;&#xF900;-&#xFDCF;&#xFDF0;-&#xFFEF;])*([a-zA-Z]|[&#xA0;-&#xD7FF;&#xF900;-&#xFDCF;&#xFDF0;-&#xFFEF;])))"/>
			</xs:restriction>
		</xs:simpleType>
	</xs:element>
	<xs:element name="RecordReferenceNumber">
		<xs:simpleType>
			<xs:restriction base="xs:string">
				<xs:maxLength value="100"/>
				<xs:minLength value="4"/>
			</xs:restriction>
		</xs:simpleType>
	</xs:element>
	<xs:simpleType name="NonEmptyString">
		<xs:restriction base="xs:string">
			<xs:minLength value="1"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="JournalVolumeNumber">
		<xs:restriction base="xs:string">
			<xs:minLength value="1"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="JournalIssueNumber">
		<xs:restriction base="xs:string">
			<xs:minLength value="1"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="JournalIssueDesignationString">
		<xs:restriction base="xs:string">
			<xs:minLength value="1"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="PageNumberString">
		<xs:restriction base="xs:string">
			<xs:minLength value="1"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="JournalIssueDate">
		<xs:sequence>
			<xs:element name="DateFormat" type="DateFormatCode"/>
			<xs:element name="Date" type="JournalIssueDateString"/>
		</xs:sequence>
	</xs:complexType>
	<xs:simpleType name="DateFormatCode">
		<xs:restriction base="xs:string">
			<xs:enumeration value="00"/>
			<xs:enumeration value="01"/>
			<xs:enumeration value="02"/>
			<xs:enumeration value="03"/>
			<xs:enumeration value="04"/>
			<xs:enumeration value="05"/>
			<xs:enumeration value="06"/>
			<xs:enumeration value="07"/>
			<xs:enumeration value="08"/>
			<xs:enumeration value="09"/>
			<xs:enumeration value="10"/>
			<xs:enumeration value="11"/>
			<xs:enumeration value="12"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="JournalIssueDateString">
		<xs:restriction base="xs:string">
			<xs:minLength value="4"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="ISBN">
		<xs:restriction base="xs:string">
			<xs:maxLength value="13"/>
			<xs:minLength value="10"/>
			<xs:pattern value="(978|979)*\d{9}[\dX]"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="NumberWithinSeries">
		<xs:restriction base="xs:string">
			<xs:minLength value="1"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="PublicationDate">
		<xs:restriction base="xs:string">
			<xs:minLength value="1"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="TitleOfSeries">
		<xs:restriction base="xs:string">
			<xs:minLength value="1"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="BookTitle">
		<xs:restriction base="xs:string">
			<xs:minLength value="1"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="EditionNumber">
		<xs:restriction base="xs:string">
			<xs:minLength value="1"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="ComponentNumber">
		<xs:restriction base="xs:string">
			<xs:minLength value="1"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="NotificationResponse">
		<xs:restriction base="xs:string">	
			<!--e-mail-->			
			<xs:enumeration value="01"/>
			<!--callback-->
			<xs:enumeration value="02"/>
			<!--ftp-->
			<xs:enumeration value="03"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
