<?xml version="1.0"?>
<!--============================================================-->
<!--============================================================-->
<!--                                                            -->
<!--           Schema for ERL XML Document Type                 -->
<!--                                                            -->
<!--============================================================-->
<!--============================================================-->
<xsd:schema targetNamespace="urn:mpeg:mpeg21:2005:01-ERL-NS" 
			xmlns:erl="urn:mpeg:mpeg21:2005:01-ERL-NS"
			xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" 
			xmlns:rel-r="urn:mpeg:mpeg21:2003:01-REL-R-NS" 
			xmlns:dii="urn:mpeg:mpeg21:2002:01-DII-NS" 
			xmlns:dia="urn:mpeg:mpeg21:2003:01-DIA-NS" 
			xmlns:mpeg7="urn:mpeg:mpeg7:schema:2001" 
			xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
			elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xsd:import namespace="urn:mpeg:mpeg21:2003:01-DIA-NS" schemaLocation="http://www.dmpf.org/schemas/dia.xsd"/>
	<xsd:import namespace="urn:mpeg:mpeg21:2002:01-DII-NS" schemaLocation="http://www.dmpf.org/schemas/dii.xsd"/>
	<xsd:import namespace="urn:mpeg:mpeg21:2003:01-REL-R-NS" schemaLocation="http://www.dmpf.org/schemas/rel-r.xsd"/>
	<xsd:import namespace="urn:mpeg:mpeg21:2003:01-REL-SX-NS" schemaLocation="http://www.dmpf.org/schemas/rel-sx.xsd"/>
	<xsd:import namespace="urn:mpeg:mpeg7:schema:2001" schemaLocation="http://www.dmpf.org/schemas/mpeg7.xsd"/>
	<!-- ############################################ -->
	<!--  7.1 Definition of an Event Report Request   -->
	<!-- ############################################ -->
	<xsd:element name="ERR">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element ref="erl:ERRDescriptor"/>
				<xsd:element ref="erl:ERSpecification"/>
				<xsd:element ref="erl:EventConditionDescriptor"/>
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
	<!-- ######################################## -->
	<!-- 7.2 Definition of ERRDescriptor          -->
	<!-- ######################################## -->
	<xsd:element name="ERRDescriptor">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element name="LifeTime" minOccurs="0">
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="StartTime" type="xsd:dateTime"/>
							<xsd:element name="EndTime" type="xsd:dateTime"/>
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="Modification" type="erl:ModificationType" maxOccurs="unbounded"/>
				<xsd:element name="Priority" default="2" minOccurs="0">
					<xsd:simpleType>
						<xsd:restriction base="xsd:string">
							<xsd:enumeration value="0"/>
							<xsd:enumeration value="1"/>
							<xsd:enumeration value="2"/>
							<xsd:enumeration value="3"/>
							<xsd:enumeration value="4"/>
							<xsd:enumeration value="5"/>
						</xsd:restriction>
					</xsd:simpleType>
				</xsd:element>
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
	<xsd:complexType name="ModificationType">
		<xsd:sequence>
			<xsd:element ref="erl:PeerId"/>
			<xsd:element ref="erl:UserId"/>
			<xsd:element name="Time" type="xsd:dateTime"/>
			<xsd:element name="Description" type="erl:DescriptionType" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>
	<!-- ############################################### -->
	<!-- 7.3 Definition of ER Descriptor within an ER-R  -->
	<!-- ############################################### -->
	<xsd:element name="ERSpecification">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element ref="dii:Identifier" minOccurs="0"/>
				<xsd:element name="ERDescription" type="erl:DescriptionType" minOccurs="0"/>
				<xsd:element name="AccessControl" type="xsd:anyType" minOccurs="0"/>
				<xsd:element name="ERPayloadSpecification">
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="ERIdentifier" minOccurs="0">
								<xsd:complexType>
									<xsd:simpleContent>
										<xsd:extension base="xsd:anyURI">
											<xsd:attribute name="baseId" type="xsd:boolean"/>
										</xsd:extension>
									</xsd:simpleContent>
								</xsd:complexType>
							</xsd:element>
							<xsd:element name="PeerId" minOccurs="0"/>
							<xsd:element name="UserId" minOccurs="0"/>
							<xsd:element name="Time" minOccurs="0"/>
							<xsd:element name="Location" minOccurs="0"/>
							<xsd:element name="DIOperation" minOccurs="0" maxOccurs="unbounded"/>
							<xsd:element name="DomainData" minOccurs="0" maxOccurs="unbounded">
								<xsd:complexType>
									<xsd:attribute name="reportTag" type="xsd:string" use="optional"/>
									<xsd:attribute name="semantics" type="xsd:anyURI" use="required"/>
									<xsd:attribute name="syntax" type="xsd:anyURI" use="required"/>
									<xsd:attribute name="value" type="xsd:string" use="optional"/>
								</xsd:complexType>
							</xsd:element>
							<xsd:element name="DIMetadata" minOccurs="0" maxOccurs="unbounded">
								<xsd:complexType>
									<xsd:sequence>
										<xsd:element name="DISelection" minOccurs="0">
											<xsd:complexType>
												<xsd:choice>
													<xsd:element name="DISelectionViaDII" minOccurs="0"/>
													<xsd:element name="DISelectionViaRelatedDII" minOccurs="0"/>
													<xsd:element name="DISelectionViaXPath" minOccurs="0"/>
													<xsd:element name="DISelectionViaMetadataElements" minOccurs="0" maxOccurs="unbounded">
														<xsd:complexType>
															<xsd:attribute name="nameSpace"/>
															<xsd:attribute name="itemType"/>
															<xsd:attribute name="itemName"/>
															<xsd:attribute name="internalOperator"/>
															<xsd:attribute name="itemValue"/>
															<xsd:attribute name="externalOperator"/>
														</xsd:complexType>
													</xsd:element>
												</xsd:choice>
											</xsd:complexType>
										</xsd:element>
										<xsd:element name="DIMetadataElement" minOccurs="0" maxOccurs="unbounded">
											<xsd:complexType>
												<xsd:attribute name="nameSpace"/>
												<xsd:attribute name="tagName"/>
											</xsd:complexType>
										</xsd:element>
										<!-- Selection of the DI from which the metadata will be reported -->
										<!-- Selection of the metadata to be reported -->
									</xsd:sequence>
								</xsd:complexType>
							</xsd:element>
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="ERFormatSpecification">
					<xsd:complexType>
						<xsd:choice>
							<xsd:element name="Ref" type="xsd:anyURI"/>
							<xsd:element name="XMLschema" type="xsd:anyURI"/>
							<xsd:element name="MimeType" type="xsd:string"/>
						</xsd:choice>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="ERDeliverySpecification" minOccurs="0" maxOccurs="unbounded">
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name="Recipient" minOccurs="0" maxOccurs="unbounded" type="erl:RecipientType"/>
							<xsd:element name="DeliveryTime" type="erl:TimeType"/>
						  <xsd:element name="DITransportService">
								<xsd:complexType>
									<xsd:sequence>
									 <xsd:element ref="rel-r:serviceReference"/>
									</xsd:sequence>
								</xsd:complexType>
						  </xsd:element>
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>
				<xsd:element ref="erl:EmbeddedERR" minOccurs="0" maxOccurs="unbounded"/>
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
	<!-- ############################################ -->
	<!-- 7.4 Definition of Event Condition Descriptor -->
	<!-- ############################################ -->
	<xsd:element name="EventConditionDescriptor">
		<xsd:complexType>
			<xsd:group ref="erl:EventConditionGroup" maxOccurs="unbounded"/>
		</xsd:complexType>
	</xsd:element>

	<!-- Original one - not validating -->
	<!-- 
	<xsd:group name="EventConditionGroup">
		<xsd:sequence>
			<xsd:element name="Operator" type="erl:ExternalOperator" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="TimeCondition" minOccurs="0" maxOccurs="unbounded">
				<xsd:complexType>
					<xsd:group ref="erl:TimeConditionGroup" maxOccurs="unbounded"/>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="Operator" type="erl:ExternalOperator" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="DIOperationCondition" minOccurs="0" maxOccurs="unbounded">
				<xsd:complexType>
					<xsd:group ref="erl:DIOperationConditionGroup" maxOccurs="unbounded"/>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="Operator" type="erl:ExternalOperator" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="PeerCondition" minOccurs="0" maxOccurs="unbounded">
				<xsd:complexType>
					<xsd:group ref="erl:PeerConditionGroup" maxOccurs="unbounded"/>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="Operator" type="erl:ExternalOperator" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:group>
	-->
	<!-- Modified one - validating -->
	<xsd:group name="EventConditionGroup">
		<xsd:sequence>
			<xsd:element name="Operator1" type="erl:ExternalOperator" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="TimeCondition" minOccurs="0" maxOccurs="unbounded">
				<xsd:complexType>
					<xsd:group ref="erl:TimeConditionGroup" maxOccurs="unbounded"/>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="Operator2" type="erl:ExternalOperator" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="DIOperationCondition" minOccurs="0" maxOccurs="unbounded">
				<xsd:complexType>
					<xsd:group ref="erl:DIOperationConditionGroup" maxOccurs="unbounded"/>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="Operator3" type="erl:ExternalOperator" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="PeerCondition" minOccurs="0" maxOccurs="unbounded">
				<xsd:complexType>
					<xsd:group ref="erl:PeerConditionGroup" maxOccurs="unbounded"/>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="Operator4" type="erl:ExternalOperator" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:group>	
	
	<xsd:group name="TimeConditionGroup">
		<xsd:sequence>
			<xsd:element name="TimeEvent" type="erl:TimeType" />
			<xsd:element name="Operator" type="erl:ExternalOperator" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:group>
	
	<xsd:group name="DIOperationConditionGroup">
		<xsd:sequence>
			<xsd:element name="DIOperationEvent">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:element ref="erl:UserId" minOccurs="0" maxOccurs="unbounded"/>
						<xsd:element ref="erl:PeerId" minOccurs="0" maxOccurs="unbounded"/>
						<xsd:element name="Operation" type="xsd:anyURI"/>
						<xsd:element name="DII" type="xsd:anyURI" maxOccurs="unbounded"/>
						<xsd:element name="RelatedDII" type="xsd:anyURI" minOccurs="0" maxOccurs="unbounded"/>
					</xsd:sequence>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="Operator" type="erl:ExternalOperator" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:group>
	
	<xsd:group name="PeerConditionGroup">
		<xsd:sequence>
			<xsd:element name="PeerEvent">
				<xsd:complexType>
					<xsd:sequence>
						<xsd:any namespace="##any" processContents="lax" maxOccurs="unbounded"/>
					</xsd:sequence>
					<xsd:attributeGroup ref="erl:InternalOperator"/>
				</xsd:complexType>
			</xsd:element>
			<xsd:element name="Operator" type="erl:ExternalOperator" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:group>
	<!-- ############################################ -->
	<!-- 8.1 Definition of ER                         -->
	<!-- ############################################ -->
	<xsd:element name="ER">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element ref="erl:ERDescriptor"/>
				<xsd:element ref="erl:ERData"/>
				<xsd:element ref="erl:EmbeddedERR" minOccurs="0" maxOccurs="unbounded"/>
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
	<!-- ########################################## -->
	<!-- 8.2 Definition of Event Report Descriptor  -->
	<!-- ########################################## -->
	<xsd:element name="ERDescriptor">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element name="Description" type="erl:DescriptionType" minOccurs="0"/>
				<xsd:element name="Recipient" type="erl:RecipientType"/>
				<xsd:element name="Status">
					<xsd:complexType>
						<xsd:attribute name="value" type="xsd:boolean" default="false"/>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="Modification" type="erl:ModificationType" maxOccurs="unbounded"/>
				<xsd:element name="ERSource">
					<xsd:complexType>
						<xsd:choice>
							<xsd:element ref="erl:ERR" minOccurs="0"/>
							<xsd:element name="ERRReference" type="xsd:anyURI" minOccurs="0"/>
							<xsd:element name="OtherSource" type="xsd:anyURI" minOccurs="0"/>
						</xsd:choice>
					</xsd:complexType>
				</xsd:element>
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
	<!-- ############################################ -->
	<!-- 8.3 Definition of ERData                     -->
	<!-- ############################################ -->
	<xsd:element name="ERData">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element ref="erl:PeerId" minOccurs="0"/>
				<xsd:element ref="erl:UserId" minOccurs="0"/>
				<xsd:element name="Time" type="xsd:dateTime" minOccurs="0"/>
				<xsd:element name="Location" type="mpeg7:PlaceType" minOccurs="0"/>
				<xsd:element name="DII" type="xsd:anyURI" minOccurs="0"/>
				<xsd:element name="RelatedDII" type="xsd:anyURI" minOccurs="0"/>
				<xsd:element name="DIOperation" type="xsd:anyURI" minOccurs="0"/>
				<xsd:element name="ReportedDomainData" minOccurs="0" maxOccurs="unbounded">
					<xsd:complexType>
						<xsd:sequence>
							<xsd:any namespace="##any" processContents="lax" maxOccurs="unbounded"/>
						</xsd:sequence>
						<xsd:attribute name="name" type="xsd:string"/>
					</xsd:complexType>
				</xsd:element>
				<xsd:element name="ReportedDIMetadata" minOccurs="0" maxOccurs="unbounded">
					<xsd:complexType>
						<xsd:sequence>
							<xsd:any namespace="##any" processContents="lax" maxOccurs="unbounded"/>
						</xsd:sequence>
						<xsd:attribute name="name" type="xsd:string"/>
					</xsd:complexType>
				</xsd:element>
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
	<!-- ############################################### -->
	<!-- 8.4 Definition of Embedded Event Report Request -->
	<!-- ############################################### -->
	<xsd:element name="EmbeddedERR">
		<xsd:complexType>
			<xsd:choice maxOccurs="unbounded">
				<xsd:element ref="erl:ERR"/>
				<xsd:element name="ERRReference" type="xsd:anyURI"/>
			</xsd:choice>
		</xsd:complexType>
	</xsd:element>
	<!-- ############################################ -->
	<!-- 9.1 Definition of Time types                 -->
	<!-- ############################################ -->
	<xsd:complexType name="TimeType">
		<xsd:choice minOccurs="0">
			<xsd:element name="SpecificTime" type="erl:SpecificTime"/>
			<xsd:element name="ElapsedTime" type="erl:ElapsedTime"/>
			<xsd:element name="PeriodicTime" type="erl:PeriodicTime"/>
		</xsd:choice>
	</xsd:complexType>
	<xsd:complexType name="SpecificTime">
		<xsd:choice>
			<xsd:element name="OnTime" type="xsd:dateTime"/>
			<xsd:sequence>
				<xsd:element name="AfterOn" type="xsd:dateTime" minOccurs="0"/>
				<xsd:element name="BeforeOn" type="xsd:dateTime" minOccurs="0"/>
			</xsd:sequence>
		</xsd:choice>
	</xsd:complexType>
	<xsd:complexType name="ElapsedTime">
		<xsd:sequence>
			<xsd:element name="StartElapse" type="erl:StartElapse" minOccurs="0"/>
			<xsd:element name="EndElapse" type="erl:EndElapse" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="StartElapse">
		<xsd:choice>
			<xsd:element name="sTime" type="xsd:time"/>
			<xsd:element name="sDuration" type="xsd:duration"/>
		</xsd:choice>
	</xsd:complexType>
	<xsd:complexType name="EndElapse">
		<xsd:choice>
			<xsd:element name="eTime" type="xsd:time"/>
			<xsd:element name="eDuration" type="xsd:duration"/>
		</xsd:choice>
	</xsd:complexType>
	<xsd:complexType name="PeriodicTime">
		<xsd:sequence>
			<xsd:element name="Start" type="xsd:dateTime"/>
			<xsd:element name="DayofWeek" type="erl:DayofWeekType" minOccurs="0"/>
			<xsd:element name="Period" type="xsd:duration"/>
			<xsd:element name="Duration" type="xsd:duration"/>
			<xsd:element name="End" type="xsd:dateTime"/>
		</xsd:sequence>
	</xsd:complexType>
	<!-- Definition of DayofWeekType datatype -->
	<xsd:simpleType name="DayofWeekType">
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="\-?[1-5]{1}W[1-7]{1}D"/>
		</xsd:restriction>
	</xsd:simpleType>
	<!-- ############################################ -->
	<!-- 9.2 Definition of PeerId                     -->
	<!-- ############################################ -->
	<xsd:element name="PeerId" type="xsd:anyURI"/>
	<!-- ############################################ -->
	<!-- 9.3 Definition of UserId                     -->
	<!-- ############################################ -->
	<xsd:element name="UserId" type="xsd:anyURI"/>
	<!-- ############################################ -->
	<!-- 9.4 Definition of External operator          -->
	<!-- ############################################ -->
	<xsd:complexType name="ExternalOperator">
		<xsd:attribute name="name" type="erl:ExternalOprType"/>
	</xsd:complexType>
	<xsd:simpleType name="ExternalOprType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="AND"/>
			<xsd:enumeration value="OR"/>
			<xsd:enumeration value="XOR"/>
			<xsd:enumeration value="NOT"/>
			<xsd:enumeration value="("/>
			<xsd:enumeration value=")"/>
		</xsd:restriction>
	</xsd:simpleType>
	
	<!-- ############################################ -->
	<!-- 9.5 Definition of Internal operator          -->
	<!-- ############################################ -->
	<xsd:attributeGroup name="InternalOperator">
		<xsd:attribute name="name" type="erl:InternalOprType"/>
		<xsd:attribute name="location" type="erl:InternalOprLocationType"/>
	</xsd:attributeGroup>
	<xsd:simpleType name="InternalOprType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="&gt;"/>
			<xsd:enumeration value="&lt;"/>
			<xsd:enumeration value="&gt;="/>
			<xsd:enumeration value="&lt;="/>
			<xsd:enumeration value="&gt;&lt;"/>
			<xsd:enumeration value="="/>
			<xsd:enumeration value="+"/>
			<xsd:enumeration value="-"/>
			<xsd:enumeration value="*"/>
			<xsd:enumeration value="/"/>
			<xsd:enumeration value="%"/>
			<xsd:enumeration value="("/>
			<xsd:enumeration value=")"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="InternalOprLocationType">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="prefix"/>
			<xsd:enumeration value="infix"/>
			<xsd:enumeration value="postfix"/>
		</xsd:restriction>
	</xsd:simpleType>
	<!-- ############################################ -->
	<!-- 9.6 Definition of DescriptionType            -->
	<!-- ############################################ -->
	<xsd:simpleType name="DescriptionType">
		<xsd:restriction base="xsd:string"/>
	</xsd:simpleType>
	<!-- ############################################ -->
	<!-- 9.8 Definition of RecipientType              -->
	<!-- ############################################ -->
	<xsd:complexType name="RecipientType">
		<xsd:sequence>
			<xsd:element ref="erl:PeerId"/>
			<xsd:element ref="erl:UserId" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>
</xsd:schema>