<?xml version="1.0" encoding="UTF-8"?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
	<xs:element name="USED_DISKSPACE" type="xs:integer" />
	<xs:element name="TYPOLOGY" type="xs:string" />
	<xs:element name="OFFICIAL_NAME" type="xs:string" />
	<xs:element name="ENGLISH_NAME" type="xs:string" />
	<xs:element name="ICON_URI" type="xs:string" />
	<xs:element name="COUNTRY" type="xs:string" />
	<xs:element name="REPOSITORY_WEBPAGE" type="xs:string" />
	<xs:element name="ACCESS_PROTOCOL" type="xs:string" />
	<xs:element name="BASE_URL" type="xs:string" />
	<xs:element name="FORMAT" type="xs:string" />
	<xs:element name="REGISTERED_BY" type="xs:string" />
		<xs:element name="REPOSITORY_INSTITUTION" type="xs:string" />
		<xs:element name="ADMIN_INFO" type="xs:string" />
		<xs:element name="SET" type="xs:string" />
		<xs:element name="THROUGHPUT" type="xs:double" />
		<xs:complexType name="LAST_UPDATEType">
			<xs:attribute name="value" type="xs:dateTime" use="required" />
		</xs:complexType>

		<xs:element name="LOCATION">
			<xs:complexType>
				<xs:all>
					<xs:element name="LONGITUDE" type="xs:double" />
					<xs:element name="LATITUDE" type="xs:double" />
					<xs:element name="TIMEZONE">
						<xs:simpleType>
							<xs:restriction base="xs:double">
								<xs:pattern value="-?[0-9]*(\.[05])?" />
								<xs:minInclusive value="-12.0" />
								<xs:maxInclusive value="12.0" />
							</xs:restriction>
						</xs:simpleType>
					</xs:element>
				</xs:all>
			</xs:complexType>
		</xs:element>
		<xs:element name="STATUS">
			<xs:complexType mixed="true">
				<xs:all>
					<xs:element ref="HANDLED_DATASTRUCTURE" minOccurs="0" />
					<xs:element ref="USED_DISKSPACE" minOccurs="0" />
					<xs:element ref="NUMBER_OF_OBJECTS" />
					<xs:element name="LAST_UPDATE" type="LAST_UPDATEType"
						minOccurs="0" />
				</xs:all>
			</xs:complexType>
		</xs:element>
		<xs:element name="ACTION_STATUS">
			<xs:simpleType>
				<xs:restriction base="xs:string">
					<xs:enumeration value="DONE" />
					<xs:enumeration value="ONGOING" />
					<xs:enumeration value="FAILED" />
					<xs:enumeration value="WAITING" />
					<xs:enumeration value="ASSIGNED" />
				</xs:restriction>
			</xs:simpleType>
		</xs:element>
		<xs:element name="SECURITY_PARAMETERS" type="xs:string" />
		<xs:element name="RESPONSE_TIME" type="xs:integer" />
		<xs:element name="RESOURCE_PROFILE">
			<xs:complexType>
				<xs:sequence>
					<xs:element name="HEADER" type="HEADERType" />
					<xs:element name="BODY" type="BODYType" />
				</xs:sequence>
			</xs:complexType>



		</xs:element>
		<xs:element name="SETS">
			<xs:complexType>
				<xs:sequence>
					<xs:element ref="SET" minOccurs="0" maxOccurs="unbounded" />
				</xs:sequence>
			</xs:complexType>
		</xs:element>
		<xs:element name="FORMATS">
			<xs:complexType>
				<xs:sequence>
					<xs:element ref="FORMAT" maxOccurs="unbounded" />
				</xs:sequence>
			</xs:complexType>
		</xs:element>
		<xs:element name="INTERFACE">
			<xs:complexType>
				<xs:sequence>
					<xs:element ref="ACCESS_PROTOCOL" />
					<xs:element ref="BASE_URL" />
					<xs:element ref="FORMATS" />
					<xs:element ref="SETS" />
				</xs:sequence>
			</xs:complexType>
		</xs:element>
		<xs:element name="INTERFACES">
			<xs:complexType>
				<xs:sequence>
					<xs:element ref="INTERFACE" maxOccurs="unbounded" />
				</xs:sequence>
			</xs:complexType>
		</xs:element>
		<xs:element name="EXTRA_FIELDS">
			<xs:complexType>
				<xs:sequence>
					<xs:element name="FIELD" type="FieldType" maxOccurs="unbounded" />
				</xs:sequence>
			</xs:complexType>
		</xs:element>

		<xs:complexType name="FieldType">
			<xs:all>
				<xs:element name="key" type="xs:string" />
				<xs:element name="value" type="xs:string" />
			</xs:all>
		</xs:complexType>
		<xs:complexType name="RESOURCE_TYPEType">
			<xs:attribute name="value" use="required">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:enumeration value="RepositoryServiceResourceType" />
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
		</xs:complexType>
		<xs:complexType name="RESOURCE_URIType">
			<xs:attribute name="value" type="xs:string" use="required" />
		</xs:complexType>
		<xs:complexType name="RESOURCE_KINDType">
			<xs:attribute name="value" use="required">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<xs:enumeration value="RepositoryServiceResources" />
						<xs:enumeration value="PendingRepositoryResources" />
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
		</xs:complexType>
		<xs:complexType name="RESOURCE_IDENTIFIERType">
			<xs:attribute name="value" type="xs:string" use="required" />
		</xs:complexType>
		<xs:complexType name="DATE_OF_CREATIONType">
			<xs:attribute name="value" type="xs:dateTime" use="required" />
		</xs:complexType>
		<xs:element name="PROTOCOL" type="xs:string" />
		<xs:element name="QOS">
			<xs:complexType>
				<xs:sequence>
					<xs:element ref="AVAILABILITY" />
					<xs:element ref="CAPACITY" />
					<xs:element ref="RESPONSE_TIME" minOccurs="0" />
					<xs:element ref="THROUGHPUT" />
				</xs:sequence>
			</xs:complexType>
		</xs:element>
		<xs:element name="PARAMETERS">
			<xs:complexType>
				<xs:simpleContent>
					<xs:extension base="xs:string">
						<xs:attribute name="name" type="xs:string" use="required" />
					</xs:extension>
				</xs:simpleContent>
			</xs:complexType>
		</xs:element>
		<xs:element name="MESSAGE">
			<xs:complexType>
				<xs:sequence>
					<xs:element ref="ACTION" />
					<xs:element ref="PARAMETERS" maxOccurs="unbounded" />
					<xs:element ref="ACTION_STATUS" />
				</xs:sequence>
				<xs:attribute name="id" type="xs:string" use="required" />
			</xs:complexType>
		</xs:element>
		<xs:element name="MAX_SIZE_OF_DATASTRUCTURE" type="xs:integer" />
		<xs:element name="MAX_NUMBER_OF_DATASTRUCTURE" type="xs:integer" />
		<xs:complexType name="HEADERType">
			<xs:all>
				<xs:element name="RESOURCE_IDENTIFIER" type="RESOURCE_IDENTIFIERType" /> <!-- ci pensa il registry -->
				<xs:element name="RESOURCE_TYPE" type="RESOURCE_TYPEType" />
				<xs:element name="RESOURCE_KIND" type="RESOURCE_KINDType" />
				<xs:element name="RESOURCE_URI" type="RESOURCE_URIType" />
				<xs:element name="DATE_OF_CREATION" type="DATE_OF_CREATIONType" /> <!-- ci pensa il registry -->
				<xs:element ref="PROTOCOL" />
			</xs:all>
		</xs:complexType>
		<xs:element name="HANDLED_DATASTRUCTURE" type="xs:integer" />
		<xs:element name="NUMBER_OF_OBJECTS" type="xs:integer" />
		<xs:element name="CONFIGURATION">
			<xs:complexType>
				<xs:all>
					<xs:element ref="TYPOLOGY" />
					<xs:element ref="MAX_SIZE_OF_DATASTRUCTURE" />
					<xs:element ref="AVAILABLE_DISKSPACE" />
					<xs:element ref="MAX_NUMBER_OF_DATASTRUCTURE" />
					<xs:element ref="OFFICIAL_NAME" />
					<xs:element ref="ENGLISH_NAME" />
					<xs:element ref="ICON_URI" />
					<xs:element ref="COUNTRY" />
					<xs:element ref="LOCATION" />
					<xs:element ref="REPOSITORY_WEBPAGE" />
					<xs:element ref="REPOSITORY_INSTITUTION" />
					<xs:element ref="ADMIN_INFO" />
					<xs:element ref="INTERFACES" />
					<xs:element ref="EXTRA_FIELDS" minOccurs="0"/>
					<xs:element ref="REGISTERED_BY" minOccurs="0"/>
				</xs:all>
			</xs:complexType>
		</xs:element>
		<xs:element name="CAPACITY" type="xs:string" />
		<xs:complexType name="BODYType">
			<xs:sequence>
				<xs:element ref="CONFIGURATION" />
				<xs:element ref="STATUS" />
				<xs:element ref="QOS" />
				<xs:element ref="SECURITY_PARAMETERS" />
				<xs:element ref="BLACKBOARD" />
			</xs:sequence>
		</xs:complexType>
		<xs:element name="BLACKBOARD">
			<xs:complexType>
				<xs:sequence>
					<xs:element name="LAST_REQUEST" type="xs:string"
						minOccurs="0" maxOccurs="1" />
					<xs:element name="LAST_RESPONSE" type="xs:string"
						minOccurs="0" maxOccurs="1" />
					<xs:element ref="MESSAGE" minOccurs="0" maxOccurs="unbounded" />
				</xs:sequence>
			</xs:complexType>
		</xs:element>
		<xs:element name="AVAILABLE_DISKSPACE" type="xs:string" />
		<xs:element name="AVAILABILITY" type="xs:string" />
		<xs:element name="ACTION">
			<xs:simpleType>
				<xs:restriction base="xs:string">
					<xs:enumeration value="CREATE" />
					<xs:enumeration value="DELETE" />
					<xs:enumeration value="UPDATE" />
					<xs:enumeration value="MANAGE" />
					<xs:enumeration value="RELEASE" />
					<xs:enumeration value="CANCEL" />
				</xs:restriction>
			</xs:simpleType>
		</xs:element>
</xs:schema>