<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="urn:mpeg:maf:schema:mediastreaming:domainprotocol:2007"
		xmlns:msdp="urn:mpeg:maf:schema:mediastreaming:domainprotocol:2007"
		xmlns="http://www.w3.org/2001/XMLSchema" 
		xmlns:rel-r="urn:mpeg:mpeg21:2003:01-REL-R-NS" 
		xmlns:msd="urn:mpeg:maf:schema:mediastreaming:domain:2007" 
		xmlns:msbp="urn:mpeg:maf:schema:mediastreaming:baseprotocol:2007"  
		elementFormDefault="qualified" attributeFormDefault="unqualified">
	<import namespace="urn:mpeg:maf:schema:mediastreaming:domain:2007" schemaLocation="http://www.dmpf.org/schemas/msd.xsd"/>
	<import namespace="urn:mpeg:maf:schema:mediastreaming:baseprotocol:2007" schemaLocation="http://www.dmpf.org/schemas/msbp.xsd"/>
	<import namespace="urn:mpeg:mpeg21:2003:01-REL-R-NS" schemaLocation="http://www.dmpf.org/schemas/rel-r.xsd"/>
	<!-- **************************************************************** -->
	<!--                    DomainProtocolType                            -->
	<!-- **************************************************************** -->
	<complexType name="DomainProtocolType" abstract="true">
		<complexContent>
			<extension base="msbp:ProtocolType"/>
		</complexContent>
	</complexType>
	<!-- **************************************************************** -->
	<!--                            Ack                                   -->
	<!-- **************************************************************** -->
	<element name="Ack" type="msdp:AckType"/>
	<complexType name="AckType">
		<complexContent>
			<extension base="msdp:DomainProtocolType">
				<sequence minOccurs="0">
					<element ref="msbp:ProtocolResult"/>
				</sequence>
				<attribute name="Result" type="boolean" use="required"/>
			</extension>
		</complexContent>
	</complexType>
	<!-- **************************************************************** -->
	<!--                      AuthenticateReq                             -->
	<!-- **************************************************************** -->
	<element name="AuthenticateReq" type="msdp:AuthenticateReqType"/>
	<complexType name="AuthenticateReqType">
		<complexContent>
			<extension base="msdp:DomainProtocolType">
				<sequence>
					<element ref="msd:DomainID" minOccurs="0"/>
					<choice>
						<element ref="msd:DACredentials"/>
						<element ref="msd:DomainMembershipCredentials"/>
					</choice>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<!-- **************************************************************** -->
	<!--                   LocalDomainIDRequest                           -->
	<!-- **************************************************************** -->
	<element name="LocalDomainIDRequest" type="msdp:RequestLocalDomainIDType"/>
	<complexType name="RequestLocalDomainIDType">
		<complexContent>
			<extension base="msdp:DomainProtocolType"/>
		</complexContent>
	</complexType>
	<!-- **************************************************************** -->
	<!--                  LocalDomainIDResponse                           -->
	<!-- **************************************************************** -->
	<element name="LocalDomainIDResponse" type="msdp:LocalDomainIDResponseType"/>
	<complexType name="LocalDomainIDResponseType">
		<complexContent>
			<extension base="msdp:DomainProtocolType">
				<sequence>
					<element ref="msd:LocalDomainID"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<!-- **************************************************************** -->
	<!--                        RequestKey                                -->
	<!-- **************************************************************** -->
	<element name="RequestKey" type="msdp:RequestKeyType"/>
	<complexType name="RequestKeyType">
		<complexContent>
			<extension base="msdp:DomainProtocolType">
				<sequence>
					<element ref="msd:DomainID"/>
					<element ref="msd:ContentGroupID" minOccurs="0" maxOccurs="unbounded"/>
					<choice minOccurs="0" maxOccurs="unbounded">
						<element ref="msd:DeviceID"/>
						<element ref="msd:UserID"/>
					</choice>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<!-- **************************************************************** -->
	<!--                    RequestKeyResponse                            -->
	<!-- **************************************************************** -->
	<element name="RequestKeyResponse" type="msdp:RequestKeyResponseType"/>
	<complexType name="RequestKeyResponseType">
		<complexContent>
			<extension base="msdp:DomainProtocolType">
				<sequence>
					<element ref="msd:DomainKey"/>
					<element ref="msd:UserID" minOccurs="0" maxOccurs="unbounded"/>
					<element ref="msd:DeviceID" minOccurs="0" maxOccurs="unbounded"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<!-- **************************************************************** -->
	<!--                         AddDevice                                -->
	<!-- **************************************************************** -->
	<element name="AddDevice" type="msdp:AddDeviceType"/>
	<complexType name="AddDeviceType">
		<complexContent>
			<extension base="msdp:DomainProtocolType">
				<sequence>
					<element ref="msd:DeviceID"/>
					<element ref="msd:Expiration" minOccurs="0"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<!-- **************************************************************** -->
	<!--                          AddUser                                 -->
	<!-- **************************************************************** -->
	<element name="AddUser" type="msdp:AddUserType"/>
	<complexType name="AddUserType">
		<complexContent>
			<extension base="msdp:DomainProtocolType">
				<sequence>
					<element ref="msd:UserID"/>
					<element ref="msd:Expiration" minOccurs="0"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<!-- **************************************************************** -->
	<!--                        RenewDevice                               -->
	<!-- **************************************************************** -->
	<element name="RenewDevice" type="msdp:RenewDeviceType"/>
	<complexType name="RenewDeviceType">
		<complexContent>
			<extension base="msdp:DomainProtocolType">
				<sequence>
					<element ref="msd:DeviceID"/>
					<element ref="msd:UseData" minOccurs="0"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<!-- **************************************************************** -->
	<!--                         RenewUser                                -->
	<!-- **************************************************************** -->
	<element name="RenewUser" type="msdp:RenewUserType"/>
	<complexType name="RenewUserType">
		<complexContent>
			<extension base="msdp:DomainProtocolType">
				<sequence>
					<element ref="msd:UserID"/>
					<element ref="msd:UseData" minOccurs="0"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<!-- ************************************************************************** -->
	<!-- AddDeviceResponse, AddUserResponse, RenewDeviceResponse, RenewUserResponse -->
	<!-- ************************************************************************** -->
	<element name="AddDeviceResponse" type="msdp:LicenseResponseType"/>
	<element name="AddUserResponse" type="msdp:LicenseResponseType"/>
	<element name="RenewDeviceResponse" type="msdp:LicenseResponseType"/>
	<element name="RenewUserResponse" type="msdp:LicenseResponseType"/>
	<complexType name="LicenseResponseType">
		<complexContent>
			<extension base="msdp:DomainProtocolType">
				<sequence>
					<element ref="rel-r:license"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<!-- **************************************************************** -->
	<!--                        LeaveDevice                               -->
	<!-- **************************************************************** -->
	<element name="LeaveDevice" type="msdp:LeaveDeviceType"/>
	<complexType name="LeaveDeviceType">
		<complexContent>
			<extension base="msdp:DomainProtocolType">
				<sequence>
					<element ref="msd:DeviceID"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<!-- **************************************************************** -->
	<!--                         LeaveUser                                -->
	<!-- **************************************************************** -->
	<element name="LeaveUser" type="msdp:LeaveUserType"/>
	<complexType name="LeaveUserType">
		<complexContent>
			<extension base="msdp:DomainProtocolType">
				<sequence>
					<element ref="msd:UserID"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<!-- **************************************************************** -->
	<!--                       CreateDomain                               -->
	<!-- **************************************************************** -->
	<element name="CreateDomain" type="msdp:CreateDomainType"/>
	<complexType name="CreateDomainType">
		<complexContent>
			<extension base="msdp:DomainProtocolType">
				<sequence>
					<element ref="msd:DACredentials"/>
					<element ref="msd:Expiration"/>
					<element ref="msd:MaximumNumberOfUsers" minOccurs="0"/>
					<element ref="msd:MaximumNumberOfDevices" minOccurs="0"/>
					<element ref="msd:MaximumFrequencyOfUpdateUser" minOccurs="0"/>
					<element ref="msd:MaximumFrequencyOfUpdateDevice" minOccurs="0"/>
					<element ref="msd:UserRevocationList" minOccurs="0"/>
					<element ref="msd:DeviceRevocationList" minOccurs="0"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<!-- **************************************************************** -->
	<!--                   CreateDomainResponse                           -->
	<!-- **************************************************************** -->
	<element name="CreateDomainResponse" type="msdp:CreateDomainResponseType"/>
	<complexType name="CreateDomainResponseType">
		<complexContent>
			<extension base="msdp:DomainProtocolType">
				<sequence>
					<element ref="msd:DomainID"/>
					<element ref="msd:DomainMembershipCredentials" maxOccurs="unbounded"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<!-- **************************************************************** -->
	<!--                        RenewDomain                               -->
	<!-- **************************************************************** -->
	<element name="RenewDomain" type="msdp:RenewDomainType"/>
	<complexType name="RenewDomainType">
		<complexContent>
			<extension base="msdp:DomainProtocolType">
				<sequence>
					<element ref="msd:Expiration"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<!-- **************************************************************** -->
	<!--                       DeleteDomain                               -->
	<!-- **************************************************************** -->
	<element name="DeleteDomain" type="msdp:DeleteDomainType"/>
	<complexType name="DeleteDomainType">
		<complexContent>
			<extension base="msdp:DomainProtocolType"/>
		</complexContent>
	</complexType>
	<!-- **************************************************************** -->
	<!--              UnLicensedSimultaneousUseNotice                     -->
	<!-- **************************************************************** -->
	<element name="UnLicensedSimultaneousUseNotice" type="msdp:UnLicensedSimultaneousUseNoticeType"/>
	<complexType name="UnLicensedSimultaneousUseNoticeType">
		<complexContent>
			<extension base="msdp:DomainProtocolType">
				<sequence>
					<element ref="msd:UseData" maxOccurs="unbounded"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
</schema>
