<?xml version="1.0"?>
<schema targetNamespace="urn:mpeg:mpeg21:2004:01-IPMPINFO-NS"
		xmlns:ipmpinfo="urn:mpeg:mpeg21:2004:01-IPMPINFO-NS"
		xmlns="http://www.w3.org/2001/XMLSchema"
		xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" 
		xmlns:rel-r="urn:mpeg:mpeg21:2003:01-REL-R-NS" 
		xmlns:ipmpmsg="urn:mpeg:mpegB:schema:IPMP-XML-MESSAGES:2007"  
		xmlns:mpeg4ipmp="urn:mpeg:mpeg4:IPMPSchema:2002" 
		xmlns:ipmpinfo-msx="urn:mpeg:maf:Schema:mediastreaming:IPMPINFOextensions:2007"  
		elementFormDefault="qualified" attributeFormDefault="unqualified" version="0.01">
	<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:mpegB:schema:IPMP-XML-MESSAGES:2007" schemaLocation="http://www.dmpf.org/schemas/ipmpmsg.xsd"/>
	<import namespace="urn:mpeg:mpeg4:IPMPSchema:2002" schemaLocation="http://www.dmpf.org/schemas/mpeg4ipmp.xsd"/>
	<import namespace="urn:mpeg:maf:Schema:mediastreaming:IPMPINFOextensions:2007" schemaLocation="http://www.dmpf.org/schemas/ipmpinfo-msx.xsd"/>
	<!-- elements-->
	<element name="IPMPInfoDescriptor" type="ipmpinfo:IPMPInfoDescriptorType"/>
	<complexType name="IPMPInfoDescriptorType">
		<sequence>
			<element ref="ipmpinfo:Tool" minOccurs="0" maxOccurs="unbounded"/>
			<element ref="ipmpinfo:RightsDescriptor" minOccurs="0" maxOccurs="unbounded"/>
			<element ref="dsig:Signature" minOccurs="0"/>
		</sequence>
	</complexType>
	<element name="Tool" type="ipmpinfo:ToolType"/>
	<complexType name="ToolType">
		<sequence>
			<choice>
				<element ref="ipmpinfo:ToolBaseDescription"/>
				<element ref="ipmpinfo:ToolRef"/>
			</choice>
			<element ref="ipmpinfo:InitializationSettings" minOccurs="0"/>
			<element ref="ipmpinfo:RightsDescriptor" minOccurs="0"/>
			<element ref="dsig:Signature" minOccurs="0"/>
		</sequence>
		<attribute name="order" type="positiveInteger"/>
	</complexType>
	<element name="ToolBaseDescription" type="ipmpinfo:ToolBaseDescriptionType"/>
	<complexType name="ToolBaseDescriptionType">
		<sequence>
			<element ref="ipmpinfo:IPMPToolID"/>
			<choice minOccurs="0">
				<element ref="ipmpinfo:Inline"/>
				<element ref="ipmpinfo:Remote"/>
			</choice>
			<element ref="ipmpinfo:ConfigurationSettings" minOccurs="0"/>
			<element ref="dsig:Signature" minOccurs="0"/>
		</sequence>
	</complexType>
	<element name="ToolRef" type="ipmpinfo:ToolRef"/>
	<complexType name="ToolRef">
		<attribute name="localidref" type="IDREF" use="required"/>
	</complexType>
	<element name="IPMPToolID" type="anyURI"/>
	<element name="Inline" type="ipmpinfo:InlineType"/>
	<complexType name="InlineType">
		<sequence>
			<element ref="ipmpinfo:Binary"/>
			<element ref="dsig:Signature" minOccurs="0"/>
		</sequence>
	</complexType>
	<element name="Binary" type="base64Binary"/>
	<element name="Remote" type="ipmpinfo:RemoteType"/>
	<complexType name="RemoteType">
		<sequence>
			<element ref="dsig:Signature" minOccurs="0"/>
		</sequence>
		<attribute name="ref" type="anyURI"/>
	</complexType>
	<element name="ConfigurationSettings" type="ipmpinfo:ConfigurationSettingsType"/>
	<complexType name="ConfigurationSettingsType" mixed="true">
		<sequence>
			<element ref="ipmpinfo:Configuration"/>
			<element ref="ipmpinfo:Update" minOccurs="0"/>
		</sequence>
	</complexType>
	<element name="Configuration" type="ipmpinfo:ConfigurationType"/>
	<complexType name="ConfigurationType" mixed="true">
		<sequence>
			<element ref="ipmpinfo-msx:ToolBody"/>
		</sequence>
	</complexType>
	<element name="Update" type="ipmpinfo:UpdateType"/>
	<complexType name="UpdateType">
		<sequence>
			<element ref="ipmpinfo:Location" maxOccurs="unbounded"/>
			<element ref="ipmpinfo:ScheduledUpdateTime" minOccurs="0"/>
			<element ref="ipmpinfo:SupportedPlatform" minOccurs="0" maxOccurs="unbounded"/>
			<element ref="dsig:Signature" minOccurs="0"/>
		</sequence>
	</complexType>
	<element name="Location" type="ipmpinfo:RemoteType"/>
	<element name="Condition" type="ipmpinfo:ConditionType"/>
	<complexType name="ConditionType">
		<sequence>
			<element ref="ipmpinfo:ScheduledUpdateTime" minOccurs="0"/>
			<element ref="ipmpinfo:SupportedPlatform" minOccurs="0" maxOccurs="unbounded"/>
		</sequence>
	</complexType>
	<element name="ScheduledUpdateTime" type="ipmpinfo:ScheduledUpdateTimeType"/>
	<complexType name="ScheduledUpdateTimeType">
		<simpleContent>
			<extension base="dateTime">
				<attribute name="periodic" type="duration" use="optional"/>
			</extension>
		</simpleContent>
	</complexType>
	<element name="SupportedPlatform" type="ipmpinfo:SupportedPlatformType"/>
	<complexType name="SupportedPlatformType">
		<sequence>
			<element ref="ipmpinfo-msx:DeviceInformation"/>
		</sequence>
	</complexType>
	<element name="InitializationSettings" type="ipmpinfo:InitializationSettingsType"/>
	<complexType name="InitializationSettingsType" mixed="true">
		<sequence>
			<element ref="ipmpinfo:InitializationData"/>
		</sequence>
	</complexType>
	<element name="InitializationData" type="ipmpinfo:InitializationDataType"/>
	<complexType name="InitializationDataType" mixed="true">
		<sequence>
			<sequence minOccurs="0" maxOccurs="unbounded">
				<element ref="ipmpmsg:ControlPointID" minOccurs="0"/>
				<element ref="ipmpmsg:ControlPointAddress" minOccurs="0"/>
			</sequence>
			<element ref="ipmpmsg:Data_BaseClass" minOccurs="0" maxOccurs="unbounded"/>
		</sequence>
	</complexType>
	<element name="RightsDescriptor" type="ipmpinfo:RightsDescriptorType"/>
	<complexType name="RightsDescriptorType">
		<sequence>
			<choice minOccurs="0">
				<element ref="ipmpinfo:License"/>
				<element ref="ipmpinfo:LicenseReference"/>
			</choice>
		</sequence>
	</complexType>
	<element name="License" type="ipmpinfo:LicenseType"/>
	<complexType name="LicenseType" mixed="true">
		<sequence>
			<element ref="rel-r:license" maxOccurs="unbounded"/>
		</sequence>
	</complexType>
	<element name="LicenseReference" type="ipmpinfo:LicenseReferenceType"/>
	<complexType name="LicenseReferenceType">
		<simpleContent>
			<extension base="anyURI"/>
		</simpleContent>
	</complexType>
	<!--********************************* -->
	<!-- IPMPGeneralInfoDescriptor -->
	<!--********************************* -->
	<element name="IPMPGeneralInfoDescriptor" type="ipmpinfo:IPMPGeneralInfoDescriptorType"/>
	<complexType name="IPMPGeneralInfoDescriptorType">
		<sequence>
			<element ref="ipmpinfo:ToolList" minOccurs="0"/>
			<element ref="ipmpinfo:LicenseCollection" minOccurs="0"/>
			<element ref="dsig:Signature" minOccurs="0"/>
			<!--Signature for the IPMPGeneralInfoDescriptor element and children -->
		</sequence>
	</complexType>
	<element name="ToolList" type="ipmpinfo:ToolListType"/>
	<complexType name="ToolListType">
		<sequence>
			<element ref="ipmpinfo:ToolDescription" maxOccurs="unbounded"/>
		</sequence>
	</complexType>
	<element name="ToolDescription" type="ipmpinfo:ToolDescriptionType"/>
	<complexType name="ToolDescriptionType">
		<sequence>
			<element ref="ipmpinfo:IPMPToolID"/>
			<element ref="ipmpinfo:MemberOf" minOccurs="0"/>
			<choice minOccurs="0">
				<element ref="ipmpinfo:Inline"/>
				<element ref="ipmpinfo:Remote"/>
			</choice>
			<element ref="ipmpinfo:RightsDescriptor" minOccurs="0"/>
			<element ref="dsig:Signature" minOccurs="0"/>
		</sequence>
		<attribute name="localID" type="ID" use="required"/>
	</complexType>
	<element name="MemberOf" type="ipmpinfo:MemberOfType"/>
	<complexType name="MemberOfType">
		<sequence maxOccurs="unbounded">
			<element ref="ipmpinfo:AlternateGroup"/>
		</sequence>
	</complexType>
	<element name="AlternateGroup" type="ipmpinfo:AlternateGroupType"/>
	<complexType name="AlternateGroupType">
		<attribute name="groupID" type="positiveInteger" use="required"/>
	</complexType>
	<element name="LicenseCollection" type="ipmpinfo:LicenseCollectionType"/>
	<complexType name="LicenseCollectionType" mixed="true">
		<sequence>
			<element ref="ipmpinfo:RightsDescriptor" maxOccurs="unbounded"/>
		</sequence>
	</complexType>
</schema>
