<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:mods="http://www.loc.gov/standards/mods//" xmlns:dcterms="http://dublincore.org/documents/2003/03/04/dcmi-terms/" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:import namespace="http://www.loc.gov/standards/mods//" schemaLocation="http://www.loc.gov/standards/mods/mods.xsd"/>
	<xs:import namespace="http://purl.org/dc/elements/1.1/" schemaLocation="http://dublincore.org/schemas/xmls/qdc/2003/04/02/dc.xsd"/>
	<!-- <xs:import namespace="http://dublincore.org/documents/2003/03/04/dcmi-terms/" schemaLocation="http://uk.dublincore.org/schemas/xmls/qdc/2003/04/02/dcterms.xsd"/>-->
	<!-- A VERY EARLY DRAFT. This is proof of one concept, leaving out whole sections that lend 
themselves to external schemas (ours or someone else's),  e.g., License, Organizations. Placeholders 
for such segments, which have not been consistently supplied, are commented out.

This needs a thorough style overhaul, as parts represent an evolution in thinking not yet consistently applied. 
It also needs consistent annotation and documentation

Element types, repeatability, etc. are all subject to revision. 

I've tried to reinterpret for XML schema the structures that were defined with an RDBMS in mind, 
using ID/IDREF attribute pairs rather than separate identifier and link elements all over hither and yon.

  2003/11/13  Robin Wendler
-->
	<xs:element name="ERManageMD" type="ERManageMDTYPE">
		<xs:annotation>
			<xs:documentation>Overall root element for entire schema</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:attribute name="ID" type="xs:ID" use="optional"/>
	<xs:complexType name="ERManageMDTYPE">
		<xs:sequence>
			<xs:element ref="EResource"/>
			<xs:element ref="Work"/>
			<xs:element ref="Interface" minOccurs="0"/>
			<xs:element ref="Acquisition" minOccurs="0"/>
			<xs:element ref="AdminInfo" minOccurs="0"/>
			<xs:element ref="Access" minOccurs="0"/>
			<xs:element ref="ProcessingWorkflow" minOccurs="0"/>
			<xs:element ref="Trial" minOccurs="0"/>
			<!-- The following elements should probably all be optional, perhaps some need to be repeatable -->
			<!--			<xs:element name="ERTerms" type="ERTermsTYPE" minOccurs="0"/>
			<xs:element name="ERLicense" type="ERLicenseTYPE" minOccurs="0"/>-->
			<!--			<xs:element name="ERLibrary" type="EROrgParticipantsTYPE"/> -->
		</xs:sequence>
	</xs:complexType>
	<xs:element name="EResource">
		<!-- supply ID attribute as the "Electronic Resource ID" -->
		<xs:complexType>
			<xs:sequence>
				<xs:group ref="EResourceIDs"/>
				<xs:group ref="EResourceTitle"/>
				<xs:group ref="EResourceLinks" minOccurs="0" maxOccurs="unbounded"/>
				<xs:group ref="EResourceOtherDescriptor" minOccurs="0" maxOccurs="unbounded"/>
				<xs:group ref="ERHoldings" minOccurs="0"/>
				<xs:element ref="electronicResourceStatus"/>
				<xs:element ref="PrintVersion" minOccurs="0" maxOccurs="unbounded"/>
			</xs:sequence>
			<xs:attribute name="InterfaceID" type="xs:IDREF"/>
			<xs:attribute name="AssociatedWorkID" type="xs:IDREF"/>
			<xs:attribute name="AcquisitionID" type="xs:IDREF" use="optional"/>
			<xs:attribute name="TermsID" type="xs:IDREF" use="optional"/>
			<xs:attribute name="AccessID" type="xs:IDREF" use="optional"/>
			<xs:attribute name="AdminInfoID" type="xs:IDREF" use="optional"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="electronicResourceStatus" type="status"/>
	<xs:simpleType name="status">
		<xs:restriction base="xs:string">
			<xs:enumeration value="pre-selection"/>
			<xs:enumeration value="on trial"/>
			<xs:enumeration value="ordered"/>
			<xs:enumeration value="implementation"/>
			<xs:enumeration value="in process"/>
			<xs:enumeration value="active"/>
			<xs:enumeration value="under review"/>
			<xs:enumeration value="retired"/>
			<xs:enumeration value="perpetuated archive"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="Work">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="ERTitleContinues" minOccurs="0"/>
				<xs:element ref="ERTitleContinuedBy" minOccurs="0"/>
				<xs:element ref="ISTC" minOccurs="0"/>
				<xs:element ref="Subject" minOccurs="0" maxOccurs="unbounded"/>
				<!-- Could ref DC.subject here or possibly MODS.subject -->
				<xs:element ref="UniformTitle"/>
				<!-- Equivalent to MODS titleInfo/title[@type="uniform"] , but impossible to ref-->
				<xs:element ref="Author" minOccurs="0" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="ERTitleContinues" type="xs:string"/>
	<xs:element name="ERTitleContinuedBy" type="xs:string"/>
	<xs:element name="ISTC"/>
	<!-- what should the datatype for ISTC be? -->
	<xs:element name="Subject" type="xs:string"/>
	<xs:element name="UniformTitle" type="xs:string"/>
	<!-- Equivalent to MODS titleInfo/title[@type="uniform"] , but that's impossible to ref-->
	<xs:element name="Author" type="xs:string"/>
	<!-- Would ERMI consider Dublin Core terminology of Creator or simply MODS use of name, given that author is a very specific relationship to the work? -->
	<xs:element name="Interface">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="interfaceName"/>
				<xs:element ref="medium" minOccurs="0"/>
				<xs:element ref="DOI" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element ref="interfaceOtherIdentifier" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element ref="publicNote" minOccurs="0"/>
				<xs:element ref="interfaceStatus"/>
				<xs:element ref="interfacePublicNote" minOccurs="0"/>
				<!--	I'd prefer to ref dcterms:medium, but my version of XMLSpy, at least, gags on simpleTypes containing complexTypes and complexContent	-->
			</xs:sequence>
			<xs:attribute name="ERAcqID" type="xs:IDREF" use="optional"/>
			<xs:attribute name="ERAccessID" type="xs:IDREF" use="optional"/>
			<xs:attribute name="AdminInfoID" type="xs:IDREF" use="optional"/>
			<!-- <xs:attribute name="InterfaceProvider" type="xs:IDREF"/>
		This can be activated when an Organizational Entity is defined, which will have the global ID attribute. -->
			<!-- <xs:attribute name="InterfaceTerms" type="xs:IDREF" use="optional"/>
		This can be activated when a Terms Entity is defined, which will have the global ID attribute. -->
		</xs:complexType>
	</xs:element>
	<xs:element name="interfaceName" type="xs:string"/>
	<xs:element name="medium"/>
	<xs:element name="DOI" type="xs:string"/>
	<xs:element name="interfaceOtherIdentifier">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="xs:string">
					<xs:attribute name="Source" type="xs:string"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="interfaceStatus" type="status"/>
	<xs:element name="interfacePublicNote" type="xs:string"/>
	<xs:element name="Acquisition">
		<xs:complexType>
			<xs:sequence>
				<xs:group ref="AcqIDs"/>
				<xs:group ref="AcqConsortialAgreement"/>
				<xs:group ref="AcqRenewal"/>
				<xs:group ref="AcqPricePayment"/>
				<xs:group ref="AcqLocal"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<!--	<xs:complexType name="ERTermsTYPE">
		<xs:sequence>
			<xs:group ref="TermsID"/>
			<xs:group ref="TermsofUse"/>
			<xs:group ref="TermsofRestriction"/>
			<xs:group ref="TermsofPerpetualRights"/>
			<xs:group ref="TermsofMutualObligs"/>
		</xs:sequence>
	</xs:complexType> -->
	<!--	<xs:complexType name="ERLicenseTYPE">
		<xs:sequence>
			<xs:group ref="LicenseID"/>
			<xs:group ref="LicenseDate"/>
			<xs:group ref="LicenseParties"/>
			<xs:group ref="LinkedLicenses"/>
			<xs:element name="LicenseNotes"/>
		</xs:sequence>
	</xs:complexType> -->
	<xs:element name="AdminInfo">
		<xs:complexType>
			<xs:sequence>
				<xs:group ref="AdminID"/>
				<xs:group ref="AdminConfiguration"/>
				<xs:group ref="AdminUsageStats"/>
				<xs:group ref="AdminSupport"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="Access">
		<xs:complexType>
			<xs:sequence>
				<xs:group ref="AccessIdentifiers"/>
				<xs:group ref="Authentication"/>
				<xs:group ref="Proxy"/>
				<xs:group ref="Z39.50"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="ProcessingWorkflow">
	<xs:complexType>
		<xs:sequence>
			<xs:choice>
				<xs:element ref="InterfaceInProcess" minOccurs="0"/>
				<xs:element ref="EResourceInProcess" minOccurs="0"/>
			</xs:choice>
			<xs:group ref="PreSelection" minOccurs="0"/>
			<xs:group ref="InProcess" minOccurs="0"/>
			<xs:group ref="RenewalAndTermination" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	</xs:element>
	<xs:element name="InterfaceInProcess" type="xs:IDREF"/>
	<xs:element name="EResourceInProcess" type="xs:IDREF"/>
	<xs:group name="PreSelection">
		<xs:sequence>
			<xs:element ref="PreSelectionStatus"/>
			<xs:element ref="ExpectedDecisionDate"/>
			<xs:element ref="PreSelectionCostInformation"/>
			<xs:element ref="PreSelectionStatusNote"/>
			<xs:element ref="PreSelectionEvaluationHistory"/>
		</xs:sequence>
	</xs:group>
	<xs:element name="PreSelectionStatus" type="xs:string"/>
	<xs:element name="ExpectedDecisionDate" type="xs:date"/>
	<xs:element name="PreSelectionCostInformation" type="xs:string"/>
	<xs:element name="PreSelectionStatusNote" type="xs:string"/>
	<xs:element name="PreSelectionEvaluationHistory" type="xs:string"/>
	<xs:group name="InProcess">
		<xs:sequence>
			<xs:element ref="OrderRequestDate"/>
			<xs:element ref="OrderRequestStatus"/>
			<xs:element ref="DateIPAddressRegistered" minOccurs="0"/>
			<xs:element ref="OtherAuthenticationHandled" minOccurs="0"/>
			<xs:element ref="Z39.50AccessStatus" minOccurs="0"/>
			<xs:element ref="AdminAndAccessRecordStatus" minOccurs="0"/>
			<xs:element ref="CatalogRequestDate" minOccurs="0"/>
			<xs:element ref="CatalogingPriority" minOccurs="0"/>
			<xs:element ref="AccessTested" minOccurs="0"/>
			<xs:element ref="AccessTestedDate" minOccurs="0"/>
			<xs:element ref="LocalServicesStatus" minOccurs="0"/>
			<xs:element ref="InProcessNote" minOccurs="0"/>
			<xs:element ref="InterfaceCustomizationStatus" minOccurs="0"/>
			<xs:element ref="PublicityStatus" minOccurs="0"/>
			<xs:element ref="InstructionToolsStatus" minOccurs="0"/>
			<xs:element ref="PublicDisplayRelease" minOccurs="0"/>
			<xs:element ref="UsageDataSetup" minOccurs="0"/>
		</xs:sequence>
	</xs:group>
	<!-- Most of the text elements in this group lend themselves to a single
		simple type with values "pending", "done", and possibly others, but Entities 
		and Elements Doc not firm about them as of 11/4/2003 -->
	<xs:element name="OrderRequestDate" type="xs:date"/>
	<xs:element name="OrderRequestStatus" type="xs:string"/>
	<xs:element name="DateIPAddressRegistered" type="xs:date"/>
	<xs:element name="OtherAuthenticationHandled" type="xs:string"/>
	<xs:element name="Z39.50AccessStatus" type="xs:string"/>
	<xs:element name="AdminAndAccessRecordStatus" type="xs:string"/>
	<xs:element name="CatalogRequestDate" type="xs:date"/>
	<xs:element name="CatalogingPriority" type="xs:string"/>
	<xs:element name="AccessTested" type="xs:string"/>
	<xs:element name="AccessTestedDate" type="xs:date"/>
	<xs:element name="LocalServicesStatus" type="xs:string"/>
	<xs:element name="InProcessNote" type="xs:string"/>
	<xs:element name="InterfaceCustomizationStatus" type="xs:string"/>
	<xs:element name="PublicityStatus" type="xs:string"/>
	<xs:element name="InstructionToolsStatus" type="xs:string"/>
	<xs:element name="PublicDisplayRelease" type="xs:string"/>
	<xs:element name="UsageDataSetup" type="xs:string"/>
	<xs:group name="RenewalAndTermination">
		<xs:sequence>
			<xs:element ref="RenewalReviewStatus"/>
			<xs:element ref="RenewalExpectedDecisionDate"/>
			<xs:element ref="RenewalStatusNote" minOccurs="0"/>
			<xs:element ref="EvaluationHistory" minOccurs="0"/>
			<xs:element ref="TerminationStatus" minOccurs="0"/>
			<xs:element ref="TerminationStatusNote" minOccurs="0"/>
		</xs:sequence>
	</xs:group>
	<xs:element name="RenewalReviewStatus" type="xs:string"/>
	<xs:element name="RenewalExpectedDecisionDate" type="xs:date"/>
	<xs:element name="RenewalStatusNote" type="xs:string"/>
	<xs:element name="EvaluationHistory" type="xs:string"/>
	<xs:element name="TerminationStatus" type="xs:string"/>
	<xs:element name="TerminationStatusNote" type="xs:string"/>
	<xs:element name="Trial">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="TrialURI" minOccurs="0"/>
				<xs:element ref="TrialUserName" minOccurs="0"/>
				<xs:element ref="TrialPassword" minOccurs="0"/>
				<xs:element ref="TrialStartDate"/>
				<xs:element ref="TrialExpireDate"/>
				<xs:element ref="TrialAvailableToPublic"/>
				<xs:element ref="TrialLicenseRequired"/>
				<xs:element ref="TrialNote" minOccurs="0"/>
			</xs:sequence>
			<xs:attribute name="EResourceID" type="xs:IDREF"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="TrialURI" type="URI"/>
	<xs:element name="TrialUserName" type="xs:string"/>
	<xs:element name="TrialPassword" type="xs:string"/>
	<xs:element name="TrialStartDate" type="xs:date"/>
	<xs:element name="TrialExpireDate" type="xs:date"/>
	<xs:element name="TrialAvailableToPublic" type="xs:boolean"/>
	<xs:element name="TrialLicenseRequired" type="xs:boolean"/>
	<xs:element name="TrialNote" type="xs:string"/>
	<!-- I've left these out pending adoption of vCard or other some 
	      other external schema  
	<xs:complexType name="EROrgParticipantsTYPE">
		<xs:sequence>
			<xs:group ref="SourceLibrary"/>
			<xs:group ref="PartnerLibrary"/>
			<xs:group ref="ConsortialPartner"/>
			<xs:group ref="Organization"/>
			<xs:group ref="Contacts"/>
		</xs:sequence>
	</xs:complexType> -->
	<xs:group name="EResourceIDs">
		<xs:sequence>
			<xs:element ref="OCLCNumber" minOccurs="0"/>
			<xs:element ref="EISSN" minOccurs="0"/>
			<xs:element ref="EISBN" minOccurs="0"/>
			<xs:element ref="DOI" minOccurs="0"/>
			<xs:element ref="VendorTitleID" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element ref="LocalERID" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element ref="OtherID" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<!-- need to verify requirements, data types, etc.-->
	</xs:group>
	<xs:element name="OCLCNumber" type="xs:string"/>
	<xs:element name="EISSN" type="xs:string"/>
	<xs:element name="EISBN" type="xs:string"/>
	<xs:element name="VendorTitleID">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="xs:string">
					<xs:attribute name="VendorID" type="xs:IDREF"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="LocalERID" type="xs:string"/>
	<xs:element name="OtherID">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="xs:string">
					<xs:attribute name="Source" type="xs:string"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:group name="EResourceTitle">
		<xs:sequence>
			<xs:element ref="dc:title"/>
			<xs:element ref="ERAlternateTitle" minOccurs="0" maxOccurs="unbounded"/>
			<!-- could ref dcterms.alternate but XML Spy does not like dcterms.xsd-->
		</xs:sequence>
	</xs:group>
	<xs:element name="ERTitle" type="xs:string"/>
	<xs:element name="ERAlternateTitle" type="xs:string"/>
	<xs:group name="EResourceLinks">
		<xs:sequence>
			<xs:element ref="containedIn" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element ref="contains" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:group>
	<xs:element name="containedIn" type="xs:IDREF"/>
	<xs:element name="contains" type="xs:IDREF"/>
	<xs:group name="EResourceOtherDescriptor">
		<xs:sequence>
			<xs:element ref="packageType" minOccurs="0"/>
			<xs:element ref="dc:language" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element ref="dc:format" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element ref="updateFrequency" minOccurs="0"/>
			<xs:element ref="dc:description" minOccurs="0"/>
			<xs:element ref="publicNote" minOccurs="0"/>
			<xs:element ref="dc:type" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:group>
	<xs:element name="packageType">
		<xs:simpleType>
			<xs:restriction base="xs:string">
				<xs:enumeration value="complete"/>
				<xs:enumeration value="partial"/>
			</xs:restriction>
		</xs:simpleType>
	</xs:element>
	<xs:element name="updateFrequency" type="xs:string"/>
	<xs:element name="publicNote" type="xs:string"/>
	<xs:group name="ERHoldings">
		<xs:sequence>
			<xs:element ref="electronicHoldings"/>
			<xs:element ref="embargoPeriod"/>
			<!-- could ref dcterms:extent, but have that parsing problem again.-->
		</xs:sequence>
	</xs:group>
	<xs:element name="electronicHoldings" type="xs:string"/>
	<xs:element name="embargoPeriod" type="xs:positiveInteger"/>
	<xs:element name="PrintVersion">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="dc:title"/>
				<xs:element ref="PrintISBN" minOccurs="0"/>
				<xs:element ref="PrintISSN" minOccurs="0"/>
				<xs:element ref="dc:publisher" minOccurs="0"/>
				<xs:element ref="dc:language" minOccurs="0"/>
				<xs:element ref="PrintLocalRecordID" minOccurs="0"/>
				<xs:element ref="PrintSubscriberID" minOccurs="0"/>
			</xs:sequence>
			<xs:attribute name="AssociatedWork" type="xs:IDREF"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="PrintISBN" type="xs:string"/>
	<xs:element name="PrintISSN" type="xs:string"/>
	<xs:element name="PrintLocalRecordID" type="xs:string"/>
	<xs:element name="PrintSubscriberID" type="xs:string"/>
	<xs:group name="AcqIDs">
		<xs:sequence>
			<xs:element ref="vendorID"/>
			<xs:element ref="resourceID"/>
			<xs:element ref="purchaseOrderNumber"/>
			<!-- 		acquisition ID not needed in XML, since entire ERAcq element has an ID attribute	
			<xs:element ref="acquisitionID"/> -->
		</xs:sequence>
	</xs:group>
	<!--	<xs:element name="acquisitionID" type="xs:ID"/>  See note on ref above.-->
	<xs:element name="vendorID" type="xs:string"/>
	<xs:element name="resourceID" type="xs:string"/>
	<xs:element name="purchaseOrderNumber" type="xs:string"/>
	<xs:group name="AcqConsortialAgreement">
		<xs:sequence>
			<xs:element ref="consortialAgreement"/>
			<xs:element ref="consortiumID" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element ref="numberOfConsortialPartners" maxOccurs="unbounded"/>
			<!-- Does it make sense for consortial ID and number of consortial partners to be repeatable?-->
		</xs:sequence>
		<!-- Instead of a group,  this could be expressed as a Consortial Agreement element, with attributes consortiumID, 
	which links via IDREF to the relevant Consortium Entity, and a no. of cons. partners attribute.-->
	</xs:group>
	<xs:element name="consortialAgreement" type="xs:boolean"/>
	<xs:element name="consortiumID" type="xs:string"/>
	<xs:element name="numberOfConsortialPartners" type="xs:integer"/>
	<xs:group name="AcqRenewal">
		<xs:sequence>
			<xs:element ref="purchaseRenewalDate" minOccurs="0"/>
			<xs:element ref="purchaseRenewalTickler"/>
		</xs:sequence>
	</xs:group>
	<xs:element name="purchaseRenewalDate" type="xs:date"/>
	<xs:element name="purchaseRenewalTickler" type="xs:integer"/>
	<xs:group name="AcqPricePayment">
		<xs:sequence>
			<xs:element ref="price" minOccurs="0"/>
			<xs:element ref="discountOnPrice" minOccurs="0"/>
			<xs:element ref="pricingModel" minOccurs="0"/>
			<xs:element ref="printCancellationRestriction" minOccurs="0"/>
			<xs:element ref="printCancellationNote" minOccurs="0"/>
			<xs:element ref="priceCap" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element ref="paymentDetails" minOccurs="0"/>
			<xs:element ref="paymentNotes" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:group>
	<xs:element name="price" type="xs:decimal"/>
	<xs:element name="discountOnPrice" type="xs:decimal"/>
	<xs:element name="pricingModel" type="xs:string"/>
	<xs:element name="printCancellationRestriction" type="xs:boolean"/>
	<xs:element name="printCancellationNote" type="xs:string"/>
	<xs:element name="priceCap" type="xs:string"/>
	<xs:element name="paymentDetails" type="xs:string"/>
	<xs:element name="paymentNotes" type="xs:string"/>
	<xs:group name="AcqLocal">
		<xs:sequence>
			<xs:element ref="acquisitionNotes" minOccurs="0"/>
			<xs:element ref="acquisitionsLocallyDefinedField" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:group>
	<xs:element name="acquisitionNotes" type="xs:string"/>
	<xs:element name="acquisitionsLocallyDefinedField" type="xs:string"/>
	<xs:group name="AdminID">
		<xs:sequence>
			<xs:element ref="onlineAdministrationModule"/>
			<xs:element ref="administrativeURI" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element ref="administrativeID" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element ref="administrativePassword" minOccurs="0"/>
			<xs:element ref="administrativePasswordNote" minOccurs="0"/>
			<!-- Is this necessary, since the ERAdmin element has an ID attribute? 
			<xs:element ref="administrativeInformationID"/> -->
			<!-- Can't find provider account ID in dictionary-->
		</xs:sequence>
	</xs:group>
	<xs:element name="onlineAdministrationModule" type="xs:boolean"/>
	<xs:element name="administrativeURI" type="URI"/>
	<xs:element name="administrativeID" type="xs:string"/>
	<xs:element name="administrativePassword" type="xs:string"/>
	<xs:element name="administrativePasswordNote" type="xs:string"/>
	<xs:group name="AdminConfiguration">
		<xs:sequence>
			<xs:element ref="sessionTimeout"/>
			<xs:element ref="sessionTimeoutValue"/>
			<xs:element ref="logoutURI"/>
			<xs:element ref="logoutURIValue"/>
			<xs:element ref="userInterfaceConfiguration"/>
			<xs:element ref="subscriberBranding"/>
			<xs:element ref="subscriberBrandingActivationStatus" minOccurs="0"/>
			<xs:element ref="personalizationServices"/>
			<xs:element ref="z3950"/>
			<xs:element ref="hookToHoldings"/>
			<xs:element ref="holdingsActivated" minOccurs="0"/>
			<xs:element ref="provideReferenceLinking"/>
			<xs:element ref="openURLCompliant" minOccurs="0"/>
			<xs:element ref="openURLActivationStatus" minOccurs="0"/>
			<xs:element ref="linkingNote" minOccurs="0"/>
			<xs:element ref="MARCRecordAvailability"/>
			<xs:element ref="MARCRecordNote" minOccurs="0"/>
			<xs:element ref="interfaceLanguagesAvailability" minOccurs="0"/>
			<xs:element ref="interfaceLanguageImplemented" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element ref="localAdmin" minOccurs="0" maxOccurs="unbounded"/>
			<!-- Should be a complex type with a Type attribute -->
		</xs:sequence>
	</xs:group>
	<xs:element name="sessionTimeout" type="xs:boolean"/>
	<xs:element name="sessionTimeoutValue" type="xs:integer"/>
	<xs:element name="logoutURI" type="xs:boolean"/>
	<xs:element name="logoutURIValue" type="xs:string"/>
	<xs:element name="userInterfaceConfiguration" type="xs:boolean"/>
	<xs:element name="subscriberBranding" type="xs:boolean"/>
	<xs:element name="subscriberBrandingActivationStatus" type="xs:date"/>
	<xs:element name="personalizationServices" type="xs:boolean"/>
	<xs:element name="z3950" type="xs:boolean"/>
	<xs:element name="hookToHoldings" type="xs:boolean"/>
	<xs:element name="holdingsActivated" type="xs:date"/>
	<xs:element name="provideReferenceLinking" type="xs:boolean"/>
	<xs:element name="openURLCompliant" type="xs:boolean"/>
	<xs:element name="openURLActivationStatus" type="xs:date"/>
	<xs:element name="linkingNote" type="xs:string"/>
	<xs:element name="MARCRecordAvailability" type="xs:boolean"/>
	<xs:element name="MARCRecordNote" type="xs:string"/>
	<xs:element name="interfaceLanguagesAvailability" type="xs:boolean"/>
	<xs:element name="interfaceLanguageImplemented" type="xs:string"/>
	<xs:element name="localAdmin" type="xs:string"/>
	<xs:group name="AdminUsageStats">
		<xs:sequence>
			<xs:element ref="USAvailable"/>
			<xs:element ref="USDeliveryMethod" minOccurs="0"/>
			<xs:element ref="USFormat" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element ref="USFrequency" minOccurs="0"/>
			<xs:element ref="USOnlineLocation" minOccurs="0"/>
			<xs:element ref="USUserIdentifier" minOccurs="0"/>
			<xs:element ref="USPassword" minOccurs="0"/>
			<xs:element ref="USDeliveryAddress" minOccurs="0"/>
			<xs:element ref="USNote" minOccurs="0"/>
			<xs:element ref="USLocallyStored" minOccurs="0"/>
		</xs:sequence>
	</xs:group>
	<xs:element name="USAvailable" type="xs:boolean"/>
	<xs:element name="USDeliveryMethod" type="xs:string"/>
	<!-- USDM should have enumerated values-->
	<xs:element name="USFormat" type="xs:string"/>
	<xs:element name="USFrequency" type="xs:string"/>
	<xs:element name="USOnlineLocation" type="xs:string"/>
	<xs:element name="USUserIdentifier" type="xs:string"/>
	<xs:element name="USPassword" type="xs:string"/>
	<xs:element name="USDeliveryAddress" type="xs:string"/>
	<!-- Ultimately, USDeliveryAddress should be a pointer to a Contact Entity-->
	<xs:element name="USNote" type="xs:string"/>
	<xs:element name="USLocallyStored" type="xs:string"/>
	<xs:group name="AdminSupport">
		<xs:sequence>
			<xs:element ref="hardwareRequirements" minOccurs="0"/>
			<xs:element ref="softwareRequirements" minOccurs="0"/>
			<xs:element ref="maintenanceWindow" minOccurs="0"/>
			<xs:element ref="providerSystemStatusURI" minOccurs="0"/>
			<xs:element ref="resourceUnavailableFlag" minOccurs="0"/>
			<xs:element ref="resourceAdvisoryNote" minOccurs="0"/>
			<xs:element ref="localPerformanceMonitoringNotes" minOccurs="0"/>
			<xs:element ref="incidentLog" minOccurs="0"/>
			<xs:element ref="trainingInformation" minOccurs="0"/>
			<xs:element ref="administrativeDocumentation" minOccurs="0"/>
			<xs:element ref="userDocumentation" minOccurs="0"/>
		</xs:sequence>
	</xs:group>
	<xs:element name="hardwareRequirements" type="xs:string"/>
	<xs:element name="softwareRequirements" type="xs:string"/>
	<xs:element name="maintenanceWindow" type="xs:string"/>
	<xs:element name="providerSystemStatusURI" type="URI"/>
	<xs:element name="resourceUnavailableFlag" type="xs:boolean"/>
	<xs:element name="resourceAdvisoryNote" type="xs:string"/>
	<xs:element name="localPerformanceMonitoringNotes" type="xs:string"/>
	<xs:element name="incidentLog" type="xs:string"/>
	<!-- What kind of an element is "IncidentLog"? If the actual log, it would 
		need a substructure with things like "date", etc., wouldn't it?-->
	<xs:element name="trainingInformation" type="xs:string">
		<xs:annotation>
			<xs:documentation>Information about special arrangements available for training, for example to circumvent simultaneous user restrictions.  
			May also include training contact names and other general information. Value might be a URI pointing to training documentation or interactive 
			tutorials.</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="administrativeDocumentation" type="xs:string"/>
	<xs:element name="userDocumentation" type="xs:string"/>
	<xs:group name="AccessIdentifiers">
		<xs:sequence>
			<xs:element ref="accessInformationID"/>
			<xs:element name="primaryAccessURI" type="URI" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="alternativeAccessURI" type="URI" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="interfaceURI" type="URI" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element name="localPersistentURI" type="URI" minOccurs="0" maxOccurs="unbounded"/>
			<!-- E+E doc says the Primary Access URI is repeatable, so I made it so. Does it mean that? -->
		</xs:sequence>
	</xs:group>
	<xs:complexType name="URI">
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute name="URIType">
					<xs:simpleType>
						<xs:restriction base="xs:string">
							<xs:enumeration value="URN"/>
							<xs:enumeration value="URL"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:element name="accessInformationID" type="xs:ID"/>
	<xs:element name="alternativeAccessURI" type="xs:string"/>
	<xs:group name="Authentication">
		<xs:sequence>
			<xs:element ref="authorizationMethod" maxOccurs="unbounded"/>
			<xs:element ref="alternativeAuthorizationMethod" minOccurs="0" maxOccurs="unbounded"/>
			<xs:element ref="electronicResourceUserID" maxOccurs="unbounded"/>
			<xs:element ref="electronicResourceUserPassword" maxOccurs="unbounded"/>
			<xs:element ref="electronicResourceUserPasswordNote" minOccurs="0"/>
			<xs:element ref="IPAddressRegistrationMethod"/>
			<xs:element ref="IPAddressRegistrationInstructions" minOccurs="0"/>
			<xs:element ref="IPAddressRegisteredForAccess"/>
			<xs:element ref="dateIPAddressRegistered"/>
			<xs:element ref="IPAddressGeneralNote" minOccurs="0"/>
		</xs:sequence>
	</xs:group>
	<xs:element name="authorizationMethod" type="xs:string"/>
	<xs:element name="alternativeAuthorizationMethod" type="xs:string"/>
	<xs:element name="electronicResourceUserID" type="xs:string"/>
	<xs:element name="electronicResourceUserPassword" type="xs:string"/>
	<xs:element name="electronicResourceUserPasswordNote" type="xs:string"/>
	<xs:element name="IPAddressRegistrationMethod" type="xs:string"/>
	<xs:element name="IPAddressRegistrationInstructions" type="xs:string"/>
	<xs:element name="IPAddressRegisteredForAccess" type="xs:string"/>
	<xs:element name="dateIPAddressRegistered" type="xs:date"/>
	<xs:element name="IPAddressGeneralNote" type="xs:string"/>
	<xs:group name="Proxy">
		<xs:sequence>
			<xs:element ref="proxyServer"/>
			<xs:element ref="proxyPrependString" minOccurs="0"/>
			<xs:element ref="proxyRegistrationStatus" minOccurs="0"/>
			<xs:element ref="domainNames" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:group>
	<xs:element name="proxyServer" type="xs:boolean"/>
	<xs:element name="proxyPrependString" type="xs:string"/>
	<xs:element name="proxyRegistrationStatus" type="xs:string"/>
	<xs:element name="domainNames" type="xs:string"/>
	<xs:group name="Z39.50">
		<xs:sequence>
			<xs:element ref="Z39.50Address"/>
			<xs:element ref="Z39.50Port"/>
			<xs:element ref="Z39.50UseAttributes"/>
			<xs:element ref="URLtoVendorZ39.50Info"/>
			<xs:element ref="Z39.50DatabaseNameLong"/>
			<xs:element ref="Z39.50DatabaseNameShort"/>
			<xs:element ref="Z39.50AuthenticationInfo"/>
		</xs:sequence>
	</xs:group>
	<xs:element name="Z39.50Address" type="xs:string"/>
	<xs:element name="Z39.50Port" type="xs:positiveInteger"/>
	<xs:element name="Z39.50UseAttributes" type="xs:string"/>
	<xs:element name="URLtoVendorZ39.50Info" type="xs:string"/>
	<xs:element name="Z39.50DatabaseNameLong" type="xs:string"/>
	<xs:element name="Z39.50DatabaseNameShort" type="xs:string"/>
	<xs:element name="Z39.50AuthenticationInfo" type="xs:string"/>
</xs:schema>

