<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="urn:dmp:idp:Represent:StoreContentProtocol:2007"
		xmlns:dmprscp="urn:dmp:idp:Represent:StoreContentProtocol:2007"
		xmlns:bbl="urn:mpeg:mpeg21:2007:01-BBL-NS"
		xmlns="http://www.w3.org/2001/XMLSchema"
		xmlns:didl="urn:mpeg:mpeg21:2006:07-DIDL-NS"
		xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"
		xmlns:msbp="urn:mpeg:maf:schema:mediastreaming:baseprotocol:2007"
		elementFormDefault="qualified" attributeFormDefault="unqualified">
	<import namespace="urn:mpeg:mpeg21:2006:07-DIDL-NS" schemaLocation="http://www.dmpf.org/schemas/didl.xsd"/>
	<import namespace="urn:mpeg:mpeg21:2007:01-BBL-NS" schemaLocation="http://www.dmpf.org/schemas/bbl.xsd"/>
	<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:maf:schema:mediastreaming:baseprotocol:2007" schemaLocation="http://www.dmpf.org/schemas/msbp.xsd"/>
	<!-- **************************************************************** -->
	<!--              StoreContentProtocolType                            -->
	<!-- **************************************************************** -->
	<complexType name="StoreContentProtocolType" abstract="true">
		<complexContent>
			<extension base="msbp:ProtocolType"/>
		</complexContent>
	</complexType>
	<!-- **************************************************************** -->
	<!--                           Ack                                    -->
	<!-- **************************************************************** -->
	<element name="Ack" type="dmprscp:AckType"/>
	<complexType name="AckType">
		<complexContent>
			<extension base="dmprscp:StoreContentProtocolType">
				<sequence minOccurs="0">
					<element ref="msbp:ProtocolResult"/>
				</sequence>
				<attribute name="Result" type="boolean" use="required"/>
			</extension>
		</complexContent>
	</complexType>
	<!-- **************************************************************** -->
	<!--              TransferProtocolRequest                             -->
	<!-- **************************************************************** -->
	<element name="TransferProtocolRequest" type="dmprscp:TransferProtocolRequestType"/>
	<complexType name="TransferProtocolRequestType">
		<complexContent>
			<extension base="dmprscp:StoreContentProtocolType">
				<sequence>
					<element name="TransferProtocol" type="dmprscp:TransferProtocolType" maxOccurs="unbounded"/>
					<element ref="dsig:Signature" minOccurs="0"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="TransferProtocolType">
		<complexContent>
			<extension base="msbp:ProtocolBaseType">
				<sequence>
					<choice>
						<element name="StandardProtocol" type="dmprscp:StandardProtocolType"/>
						<element name="CustomProtocol" type="dmprscp:CustomProtocolType"/>
					</choice>
				</sequence>
				<attribute name="priority" type="int" use="required"/>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StandardProtocolType">
		<complexContent>
			<extension base="msbp:ProtocolBaseType">
				<sequence>
					<element name="Option" type="dmprscp:ProtocolOptionType" minOccurs="0" maxOccurs="unbounded"/>
				</sequence>
				<attribute name="ProtocolCode" type="dmprscp:ProtocolCodeType" use="required"/>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="CustomProtocolType">
		<complexContent>
			<extension base="msbp:ProtocolBaseType">
				<sequence>
					<element name="Option" type="dmprscp:ProtocolOptionType" minOccurs="0" maxOccurs="unbounded"/>
				</sequence>
				<attribute name="ProtocolCode" type="string" use="required"/>
			</extension>
		</complexContent>
	</complexType>
	<simpleType name="ProtocolCodeType">
		<restriction base="string">
			<enumeration value="TCP"/>
			<enumeration value="FTP"/>
			<enumeration value="SFTP"/>
			<enumeration value="HTTPS"/>
			<enumeration value="HTTP"/>
			<enumeration value="SOAP"/>
			<enumeration value="SMB"/>
		</restriction>
	</simpleType>
	<complexType name="ProtocolOptionType">
		<simpleContent>
			<extension base="string">
				<attribute name="Key" type="string"/>
			</extension>
		</simpleContent>
	</complexType>	
	<!-- **************************************************************** -->
	<!--                  TransferProtocolResponse                        -->
	<!-- **************************************************************** -->
	<element name="TransferProtocolResponse" type="dmprscp:TransferProtocolResponseType"/>
	<complexType name="TransferProtocolResponseType">
		<complexContent>
			<extension base="dmprscp:StoreContentProtocolType">
				<sequence>
					<choice>
						<element name="ProtocolResult" type="msbp:ProtocolResultType"/>
						<element name="AdoptedProtocol" type="dmprscp:TransferProtocolType"/>
					</choice>
					<element ref="dsig:Signature" minOccurs="0"/>
				</sequence>
				<attribute name="Result" type="boolean" use="required"/>
			</extension>
		</complexContent>
	</complexType>
	<!-- **************************************************************** -->
	<!--                    ContentUploadRequest                          -->
	<!-- **************************************************************** -->
	<element name="ContentUploadRequest" type="dmprscp:ContentUploadRequestType"/>
	<complexType name="ContentUploadRequestType">
		<complexContent>
			<extension base="dmprscp:StoreContentProtocolType">
				<sequence>
					<element name="ContentInfo" type="dmprscp:ContentInfoType" minOccurs="0" maxOccurs="unbounded"/>
					<element ref="dsig:Signature" minOccurs="0"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="ContentInfoType">
		<complexContent>
			<extension base="msbp:ProtocolBaseType">
				<sequence>
					<choice>
						<element name="DCF" type="dmprscp:DCFType"/>
						<element name="DCS" type="dmprscp:DCSType"/>
					</choice>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="DCFType">
		<complexContent>
			<extension base="msbp:ProtocolBaseType">
				<sequence>
					<element name="ContentID" type="anyURI"/>
					<element name="Size" type="long"/>
					<element name="ContentSignature" type="dsig:SignatureType"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="DCSType">
		<complexContent>
			<extension base="msbp:ProtocolBaseType">
				<sequence>
					<choice>
						<element ref="didl:DIDL"/>
						<element name="ContentID" type="anyURI"/>
					</choice>
					<element ref="bbl:BBL" minOccurs="0"/>
					<element name="ResourceInfo" type="dmprscp:ResourceInfoType" minOccurs="0" maxOccurs="unbounded"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="ResourceInfoType">
		<complexContent>
			<extension base="msbp:ProtocolBaseType">
				<sequence>
					<element name="ResourceID" type="anyURI"/>
					<element ref="bbl:BBL" minOccurs="0"/>
					<element name="Size" type="long"/>
					<element name="ResourceSignature" type="dsig:SignatureType"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<!-- **************************************************************** -->
	<!--                     ContentUploadResponse                        -->
	<!-- **************************************************************** -->
	<element name="ContentUploadResponse" type="dmprscp:ContentUploadResponseType"/>
	<complexType name="ContentUploadResponseType">
		<complexContent>
			<extension base="dmprscp:StoreContentProtocolType">
				<sequence>
					<element name="EntityResult" type="dmprscp:EntityResultType" maxOccurs="unbounded"/>
					<element ref="dsig:Signature" minOccurs="0"/>
				</sequence>
				<attribute name="Result" type="boolean" use="required"/>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="EntityResultType">
		<complexContent>
			<extension base="msbp:ProtocolBaseType">
				<sequence>
					<element name="ContentID" type="anyURI"/>
					<element name="ResourceID" type="anyURI" minOccurs="0"/>
					<choice>
						<element name="StoragePath" type="dmprscp:StoragePathType" />
						<element name="StorageFailure" type="msbp:ProtocolResultType" />
					</choice>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<complexType name="StoragePathType">
		<complexContent>
			<extension base="msbp:ProtocolBaseType">
				<sequence>
					<element name="StorageEntry" type="anyURI" />
					<element name="EntryInfo" type="dmprscp:ProtocolOptionType" minOccurs="0" maxOccurs="unbounded"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>	
	<!-- **************************************************************** -->
	<!--                  UploadStatusRequest                             -->
	<!-- **************************************************************** -->
	<element name="UploadStatusRequest" type="dmprscp:UploadStatusRequestType"/>
	<complexType name="UploadStatusRequestType">
		<complexContent>
			<extension base="dmprscp:StoreContentProtocolType">
				<sequence>
					<element name="ContentID" type="anyURI"/>
					<element name="ResourceID" type="anyURI" minOccurs="0"/>
					<element ref="dsig:Signature" minOccurs="0"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	<!-- **************************************************************** -->
	<!--                   UploadStatusResponse                           -->
	<!-- **************************************************************** -->
	<element name="UploadStatusResponse" type="dmprscp:UploadStatusResponseType"/>
	<complexType name="UploadStatusResponseType">
		<complexContent>
			<extension base="dmprscp:StoreContentProtocolType">
				<sequence>
					<element name="UploadStatus" type="dmprscp:UploadStatusType"/>
					<element name="DisplayString" type="string" minOccurs="0"/>
					<element ref="dsig:Signature" minOccurs="0"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>	
	<simpleType name="UploadStatusType">
		<restriction base="string">
			<enumeration value="TO_BE_UPLOADED"/>
			<enumeration value="CURRENTLY_IN_UPLOAD"/>
			<enumeration value="SUCCESSFULLY_UPLOADED"/>
			<enumeration value="UNSUCCESSFULLY_UPLOADED"/>
			<enumeration value="NOT_SPECIFIED"/>
		</restriction>
	</simpleType>	
</schema>