<?xml version="1.0" encoding="utf-8"?>
<xs:schema targetNamespace="http://www.lightcomp.com/ft/xsd/v1" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ft="http://www.lightcomp.com/ft/xsd/v1" xmlns:xmime="http://www.w3.org/2005/05/xmlmime">
	<xs:annotation>
		<xs:documentation>Definice datových typů - XSD schéma</xs:documentation>
	</xs:annotation>
	<xs:element name="AbortRequest" type="ft:AbortRequestType">
		<xs:annotation>
			<xs:documentation>Element s požadavkem na přerušení přenosu.</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="BeginRequest" type="ft:GenericDataType">
		<xs:annotation>
			<xs:documentation>Požadavek na zahájení přenosu.</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="BeginResponse" type="ft:BeginResponseType">
		<xs:annotation>
			<xs:documentation>Element s odpovědí na zahájení přenosu</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="ErrorDescription" type="ft:ErrorDescriptionType">
		<xs:annotation>
			<xs:documentation>Element pro chybový stav.</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="FinishRequest" type="ft:FinishRequestType">
		<xs:annotation>
			<xs:documentation>Element s požadavkem na dokončení přenosu</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="Frame" type="ft:FrameType"/>
	<xs:element name="GenericData" type="ft:GenericDataType">
		<xs:annotation>
			<xs:documentation>Element reprezentující uživatelská dodatečná data.</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="ReceiveRequest" type="ft:ReceiveRequestType">
		<xs:annotation>
			<xs:documentation>Element pro požadavek na přijetí rámce</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="SendRequest" type="ft:SendRequestType">
		<xs:annotation>
			<xs:documentation>Odesílaná data jednoho rámce</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="TransferId" type="ft:TransferIdType">
		<xs:annotation>
			<xs:documentation>Identifikátor přenosu</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="TransferStatus" type="ft:TransferStatusType">
		<xs:annotation>
			<xs:documentation>Element popisuje stav příjemce přenosu.</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="TransferStatusRequest" type="ft:TransferStatusRequestType">
		<xs:annotation>
			<xs:documentation>Požadavek na zjištění stavu přenosu</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:simpleType name="BinData">
		<xs:annotation>
			<xs:documentation>Binární data

Odpovídající datový prvek v ISDP:  	CA0010</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:base64Binary"/>
	</xs:simpleType>
	<xs:simpleType name="ErrorCode">
		<xs:annotation>
			<xs:documentation>	- FATAL - nelze pokračovat v daném přenosu
	- BUSY - příjemce je zaneprázdněn, lze opakovat požadavek

Odpovídající datový prvek v ISDP: CA0004</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:enumeration value="BUSY"/>
			<xs:enumeration value="FATAL"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="ErrorDetail">
		<xs:annotation>
			<xs:documentation>Volitelný textový popis chyby, který upřesňuje standardní chybu v SOAP obálce. Položka slouží k lepšímu porozumění a příčině chyby.

Odpovídající datový prvek v ISDP: CA0011</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string"/>
	</xs:simpleType>
	<xs:simpleType name="FileTransferState">
		<xs:annotation>
			<xs:documentation>Možné stavy přenosu.

Odpovídající datový prvek v ISDP: CA0011</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:enumeration value="ACTIVE"/>
			<xs:enumeration value="FAILED"/>
			<xs:enumeration value="FINISHED"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="FrameSeqNum">
		<xs:annotation>
			<xs:documentation>Pořadové číslo rámce

Odpovídající datový prvek v ISDP: CA0009</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:int"/>
	</xs:simpleType>
	<xs:simpleType name="TransferIdType">
		<xs:annotation>
			<xs:documentation>Typ pro identifikátor přenosu

Odpovídající datový prvek v ISDP: CA0004</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string"/>
	</xs:simpleType>
	<xs:complexType name="AbortRequestType">
		<xs:annotation>
			<xs:documentation>Požadavek na přerušení přenosu.</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="transferId" type="ft:TransferIdType" minOccurs="1" maxOccurs="1"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="BeginResponseType">
		<xs:sequence>
			<xs:element name="transferId" type="ft:TransferIdType" minOccurs="1" maxOccurs="1"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="DirBegin">
		<xs:annotation>
			<xs:documentation>Adresář, přenáší se jeho název. Adresář může obsahovat další adresáře nebo soubory.</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="ft:FrameBlock">
				<xs:sequence/>
				<xs:attribute name="n" use="required" type="xs:string">
					<xs:annotation>
						<xs:documentation>Jméno přenášeného adresáře. Uvádí se prosté jméno položky, tj. bez cesty.

Odpovídající datový prvek v ISDP: CA0011</xs:documentation>
					</xs:annotation>
				</xs:attribute>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="DirEnd">
		<xs:complexContent>
			<xs:extension base="ft:FrameBlock">
				<xs:sequence/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="ErrorDescriptionType">
		<xs:annotation>
			<xs:documentation>Typ pro popis chyby. Každá chyba má povinně definovaný typ chyby a volitelný textový popis.</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="detail" type="ft:ErrorDetail" minOccurs="0" maxOccurs="1"/>
			<xs:element name="errorCode" type="ft:ErrorCode" minOccurs="1" maxOccurs="1"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="FileBegin">
		<xs:annotation>
			<xs:documentation>Blok pro zahájení přenosu souboru. Soubor je určen svým jménem a rodičovskou položkou.</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="ft:FrameBlock">
				<xs:sequence/>
				<xs:attribute name="fs" use="required" type="xs:long">
					<xs:annotation>
						<xs:documentation>Velikost souboru v bytech, může být větší než 
2/4GB.

Odpovídající datový prvek v ISDP: CA0009</xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="n" use="required" type="xs:string">
					<xs:annotation>
						<xs:documentation>Jméno přenášeného souboru. Uvádí se prosté jméno položky, tj. bez cesty.

Odpovídající datový prvek v ISDP: CA0011</xs:documentation>
					</xs:annotation>
				</xs:attribute>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="FileData">
		<xs:annotation>
			<xs:documentation>Blok pro přenos části dat souboru.</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="ft:FrameBlock">
				<xs:sequence/>
				<xs:attribute name="ds" use="required" type="xs:long">
					<xs:annotation>
						<xs:documentation>Velikost přenášených dat v bloku.

Odpovídající datový prvek v ISDP: CA0009</xs:documentation>
					</xs:annotation>
				</xs:attribute>
				<xs:attribute name="off" use="required" type="xs:long">
					<xs:annotation>
						<xs:documentation>Offset dat v souboru.

Odpovídající datový prvek v ISDP: CA0009</xs:documentation>
					</xs:annotation>
				</xs:attribute>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="FileEnd">
		<xs:annotation>
			<xs:documentation>Blok pro ukončení přenosu souboru. V bloku je přenesen čas jeho poslední modifikace. Blok má rezervováno 64 bytů v datech rámce pro přenesení kontrolního součtu. Tato oblast následuje vždy za daty přenášeného souboru. Tento blok je možné zaslat až po úplném přenesení souboru.</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="ft:FrameBlock">
				<xs:sequence/>
				<xs:attribute name="lm" use="required" type="xs:long">
					<xs:annotation>
						<xs:documentation>Čas poslední modifikace souboru.

Odpovídající datový prvek v ISDP: CA0009</xs:documentation>
					</xs:annotation>
				</xs:attribute>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="FinishRequestType">
		<xs:annotation>
			<xs:documentation>Požadavek na dokončení přenosu</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="transferId" type="ft:TransferIdType" minOccurs="1" maxOccurs="1"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="FrameBlock" abstract="true">
		<xs:annotation>
			<xs:documentation>Přenášený blok v jednom rámci. Blokem může být informace o souboru, adresáři nebo vlastní binární data.
Každý blok se týká nějaké položka. ID položky musí být v bloku vždy určeno (viz atribut itemId).</xs:documentation>
		</xs:annotation>
		<xs:sequence/>
	</xs:complexType>
	<xs:complexType name="FrameBlocks">
		<xs:annotation>
			<xs:documentation>Kolekce bloků přenášených v jednom rámci.</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:choice minOccurs="1" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>Jeden přenášený blok</xs:documentation>
				</xs:annotation>
				<xs:element name="db" type="ft:DirBegin" minOccurs="0" maxOccurs="1"/>
				<xs:element name="de" type="ft:DirEnd" minOccurs="0" maxOccurs="1"/>
				<xs:element name="fb" type="ft:FileBegin" minOccurs="0" maxOccurs="1"/>
				<xs:element name="fd" type="ft:FileData" minOccurs="0" maxOccurs="1"/>
				<xs:element name="fe" type="ft:FileEnd" minOccurs="0" maxOccurs="1"/>
			</xs:choice>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="FrameType">
		<xs:annotation>
			<xs:documentation>Rámec definuje přenášené složky a soubory, pro data souborů obsahuje jeden datový stream (preferovaná implementace je MTOM). Jeden velký soubor může být rozložen do několika rámců. Naopak několik menších souborů může být odesláno v jednom rámci. Vše se odvíjí od definované max. velikosti rámce a max. počtu bloků (složky + soubory) v rámci.</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="blocks" type="ft:FrameBlocks" minOccurs="1" maxOccurs="1">
				<xs:annotation>
					<xs:documentation>Rámec definuje přenášené složky a soubory, pro data souborů obsahuje jeden datový stream (preferovaná implementace je MTOM). Jeden velký soubor může být rozložen do několika rámců. Naopak několik menších souborů může být odesláno v jednom rámci. Vše se odvíjí od definované max. velikosti rámce a max. počtu bloků (složky + soubory) v rámci.</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:element name="data" type="xs:base64Binary" xmime:expectedContentTypes="application/octet-stream" minOccurs="1" maxOccurs="1">
				<xs:annotation>
					<xs:documentation>Přenášená data souborů. Implementace by měly podporovat rozšíření MTOM pro efektivní přenos binárních dat.

Implementační poznámka k vytváření XSD: 
If you would like to use MTOM you have to add the xmime:expectedContentTypes="application/octet-stream" attribute (namespace is predefined).

Odpovídající datový prvek v ISDP: CA0010</xs:documentation>
				</xs:annotation>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="dataSize" use="required" type="xs:long">
			<xs:annotation>
				<xs:documentation>Velikost přenášených dat v rámci, tj. velikost dat v atributu data.

Odpovídající datový prvek v ISDP: CA0009</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="last" use="optional" type="xs:boolean">
			<xs:annotation>
				<xs:documentation>Příznak, zda se jedná o poslední rámec přenosu.

Odpovídající datový prvek v ISDP: CA0008</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="seqNum" use="required" type="xs:int">
			<xs:annotation>
				<xs:documentation>Sekvenční číslo rámce. První rámec má číslo 1.

Odpovídající datový prvek v ISDP: CA0009</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="GenericDataType">
		<xs:annotation>
			<xs:documentation>Doplňující uživatelská data, přenáší se při zahájení nebo ukončení přenosu.</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:choice minOccurs="0" maxOccurs="1">
				<xs:annotation>
					<xs:documentation>Obálka umožňující přenos binárních nebo XML dat.</xs:documentation>
				</xs:annotation>
				<xs:element name="xmlData" type="ft:XmlData" minOccurs="0" maxOccurs="1"/>
				<xs:element name="binData" type="ft:BinData" minOccurs="0" maxOccurs="1"/>
			</xs:choice>
		</xs:sequence>
		<xs:attribute name="id" use="optional" type="xs:string">
			<xs:annotation>
				<xs:documentation>Identifikátor pro uživatelská data

Odpovídající datový prvek v ISDP: CA0004</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="type" use="required" type="xs:string">
			<xs:annotation>
				<xs:documentation>Typ přenášených uživatelských dat.

Odpovídající datový prvek v ISDP: CA0011</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="ReceiveRequestType">
		<xs:annotation>
			<xs:documentation>Požadavek na přijetí rámce.</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="transferId" type="ft:TransferIdType" minOccurs="1" maxOccurs="1"/>
			<xs:element name="frameSeqNum" type="ft:FrameSeqNum" minOccurs="1" maxOccurs="1"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="SendRequestType">
		<xs:annotation>
			<xs:documentation>Typ pro odesílaná data jednoho rámce.</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="frame" type="ft:FrameType" minOccurs="1" maxOccurs="1"/>
			<xs:element name="transferId" type="ft:TransferIdType" minOccurs="1" maxOccurs="1"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="TransferStatusRequestType">
		<xs:sequence>
			<xs:element name="transferId" type="ft:TransferIdType" minOccurs="1" maxOccurs="1"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="TransferStatusType">
		<xs:annotation>
			<xs:documentation>Typ reprezentuje stav příjemce přenosu. Včetně aktuálního stavu obsahuje i pořadové číslo posledního přijatého rámce (použito např. při obnově spojení).</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="resp" type="ft:GenericDataType" minOccurs="0" maxOccurs="1"/>
		</xs:sequence>
		<xs:attribute name="lastFrameSeqNum" use="required" type="ft:FrameSeqNum">
			<xs:annotation>
				<xs:documentation>Vrací pořadové číslo posledního zpracovaného rámce. Pokud nebyl žádný rámec přijat/odeslán je vrácena nulová hodnota.</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="state" use="required" type="ft:FileTransferState">
			<xs:annotation>
				<xs:documentation>Stav přenosu

Odpovídající datový prvek v ISDP: CA0011</xs:documentation>
			</xs:annotation>
		</xs:attribute>
	</xs:complexType>
	<xs:complexType name="XmlData">
		<xs:sequence>
			<xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>XML data</xs:documentation>
				</xs:annotation>
			</xs:any>
		</xs:sequence>
	</xs:complexType>
</xs:schema>
