<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="urn:mpeg:maf:schema:mediastreaming:domain:2007"
		xmlns:msd="urn:mpeg:maf:schema:mediastreaming:domain:2007"
		xmlns="http://www.w3.org/2001/XMLSchema"
		xmlns:rel-r="urn:mpeg:mpeg21:2003:01-REL-R-NS" 
		xmlns:rel-sx="urn:mpeg:mpeg21:2003:01-REL-SX-NS" 
		xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"  
		xmlns:xenc="http://www.w3.org/2001/04/xmlenc#"  
		elementFormDefault="qualified" attributeFormDefault="unqualified">
	<import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd"/>
	<import namespace="urn:mpeg:mpeg21:2003:01-REL-R-NS" schemaLocation="http://www.dmpf.org/schemas/rel-r.xsd"/>
	<import namespace="urn:mpeg:mpeg21:2003:01-REL-SX-NS" schemaLocation="http://www.dmpf.org/schemas/rel-sx.xsd"/>
	<import namespace="http://www.w3.org/2001/04/xmlenc#" schemaLocation="http://www.w3.org/TR/2002/REC-xmlenc-core-20021210/xenc-schema.xsd"/>
	<complexType name="DomainBaseType" abstract="true"/>
	<complexType name="IDType">
		<sequence>
			<choice>
				<element name="id" type="anyURI"/>
				<element ref="dsig:X509Data" minOccurs="0"/>
			</choice>
		</sequence>
	</complexType>
	<element name="DomainID" type="msd:DomainIDType"/>
	<complexType name="DomainIDType">
		<complexContent>
			<extension base="msd:IDType">
				<sequence>
					<element ref="msd:DomainManagerID"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<element name="DACredentials" type="msd:DomainCredentialType"/>
	<element name="DomainMembershipCredentials" type="msd:DomainCredentialType"/>
	<complexType name="DomainCredentialType">
		<sequence>
			<element ref="msd:AccessID"/>
			<element ref="msd:AccessPassword"/>
		</sequence>
	</complexType>
	<element name="DomainManageInfo" type="msd:DomainManageInfoType"/>
	<complexType name="DomainManageInfoType">
		<complexContent>
			<extension base="msd:DomainBaseType">
				<sequence>
					<element ref="msd:DomainID"/>
					<element ref="msd:DACredentials" minOccurs="0"/>
					<element ref="msd:DomainMembershipCredentials" minOccurs="0"/>
					<choice minOccurs="0" maxOccurs="2">
						<element ref="msd:User"/>
						<element ref="msd:Device"/>
					</choice>
					<element ref="msd:DomainKey"/>
					<element name="Registration" type="dateTime"/>
					<element ref="msd:Expiration"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<element name="User" type="msd:UserType"/>
	<complexType name="UserType">
		<complexContent>
			<extension base="msd:DomainBaseType">
				<sequence>
					<element ref="msd:UserIDList"/>
					<element ref="msd:MaximumNumberOfUsers" minOccurs="0"/>
					<element ref="msd:MaximumFrequencyOfUpdateUser" minOccurs="0"/>
					<element ref="msd:UserRevocationList" minOccurs="0"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<element name="Device" type="msd:DeviceType"/>
	<complexType name="DeviceType">
		<complexContent>
			<extension base="msd:DomainBaseType">
				<sequence>
					<element ref="msd:DeviceIDList"/>
					<element ref="msd:MaximumNumberOfDevices" minOccurs="0"/>
					<element ref="msd:MaximumFrequencyOfUpdateDevice" minOccurs="0"/>
					<element ref="msd:DeviceRevocationList" minOccurs="0"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<element name="UserRevocationList" type="msd:UserRevocationListType"/>
	<complexType name="UserRevocationListType">
		<sequence minOccurs="0" maxOccurs="unbounded">
			<element ref="msd:UserID"/>
		</sequence>
	</complexType>
	<element name="DeviceIDList" type="msd:DeviceIDListType"/>
	<complexType name="DeviceIDListType">
		<sequence minOccurs="0" maxOccurs="unbounded">
			<element ref="msd:DeviceID"/>
			<element ref="msd:Expiration"/>
		</sequence>
	</complexType>
	<element name="UserIDList" type="msd:UserIDListType"/>
	<complexType name="UserIDListType">
		<sequence minOccurs="0" maxOccurs="unbounded">
			<element ref="msd:UserID"/>
			<element ref="msd:Expiration"/>
		</sequence>
	</complexType>
	<element name="DeviceRevocationList" type="msd:DeviceRevocationListType"/>
	<complexType name="DeviceRevocationListType">
		<sequence minOccurs="0" maxOccurs="unbounded">
			<element ref="msd:DeviceID"/>
		</sequence>
	</complexType>
	<element name="UseData" type="msd:UseDataType"/>
	<complexType name="UseDataType">
		<sequence>
			<element ref="msd:DomainID"/>
			<element ref="msd:Record" minOccurs="0" maxOccurs="unbounded"/>
		</sequence>
	</complexType>
	<element name="Record" type="msd:RecordType"/>
	<complexType name="RecordType">
		<sequence>
			<element ref="msd:DeviceID"/>
			<element name="StartTime" type="dateTime"/>
			<element name="EndTime" type="dateTime"/>
			<element name="NumberOfContentGroups" type="integer"/>
			<element ref="msd:ContentGroupID" minOccurs="0" maxOccurs="unbounded"/>
			<element name="NotificationFlag" type="boolean"/>
		</sequence>
	</complexType>	
	<element name="DomainManagerID" type="rel-r:KeyHolder"/>
	<element name="AccessPassword" type="string"/>
	<element name="AccessID" type="string"/>
	<element name="DomainKey" type="xenc:EncryptedKeyType"/>
	<element name="UserID" type="msd:IDType"/>
	<element name="DeviceID" type="msd:IDType"/>
	<element name="LocalDomainID" type="msd:IDType"/>
	<element name="ContentGroupID" type="anyURI"/>
	<element name="MaximumNumberOfDevices" type="unsignedInt"/>
	<element name="MaximumNumberOfUsers" type="unsignedInt"/>
	<element name="MaximumFrequencyOfUpdateDevice" type="duration"/>
	<element name="MaximumFrequencyOfUpdateUser" type="duration"/>
	<element name="Expiration" type="rel-sx:ValidityTimeMetered"/>
</schema>
