<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://ocrsdk.com/schema/taskDescription-1.0.xsd"
	xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://ocrsdk.com/schema/taskDescription-1.0.xsd"
	elementFormDefault="qualified">
    <xs:element name="document">
		<xs:complexType>
			<xs:sequence>                <xs:element name="fieldTemplates"
                	type="tns:fieldTemplatesType">
                </xs:element>
                <xs:element name="page" type="tns:pageType"
    				maxOccurs="unbounded" minOccurs="0">
    			</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>

	<xs:complexType name="fieldType">
		<xs:sequence>

		</xs:sequence>
		<xs:attribute name="left" type="tns:coordType" />
		<xs:attribute name="top" type="tns:coordType"></xs:attribute>
		<xs:attribute name="right" type="tns:coordType"></xs:attribute>
		<xs:attribute name="bottom" type="tns:coordType"></xs:attribute>

		<xs:attribute name="id" type="xs:ID"></xs:attribute>    </xs:complexType>

	<xs:simpleType name="coordType">
		<xs:restriction base="xs:integer"></xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="idType">
		<xs:restriction base="xs:string"></xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="fieldTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="text"></xs:enumeration>
			<xs:enumeration value="checkmark"></xs:enumeration>
			<xs:enumeration value="barcode"></xs:enumeration>
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="rotationTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="noRotation"></xs:enumeration>
			<xs:enumeration value="clockwise"></xs:enumeration>
			<xs:enumeration value="counterclockwise"></xs:enumeration>
			<xs:enumeration value="upsideDown"></xs:enumeration>
		</xs:restriction>
	</xs:simpleType>

	<xs:complexType name="textFieldType">
		<xs:complexContent>
			<xs:extension base="tns:fieldType">
				<xs:sequence>
					<xs:element name="language" type="tns:languageType"
						minOccurs="0" maxOccurs="1">
					</xs:element>
					<xs:element name="letterSet"
						type="tns:letterSetType" minOccurs="0" maxOccurs="1">
					</xs:element>
					<xs:element name="regExp" type="tns:regexpType"
						minOccurs="0" maxOccurs="1">
					</xs:element>
					<xs:element name="textType" type="tns:textTypeEnum"
						minOccurs="0" maxOccurs="unbounded">
					</xs:element>
					<xs:element name="oneTextLine" type="xs:boolean"
						minOccurs="0" maxOccurs="1">
					</xs:element>
					<xs:element name="oneWordPerTextLine"
						type="xs:boolean" minOccurs="0" maxOccurs="1">
					</xs:element>
					<xs:element name="markingType"
						type="tns:markingTypeEnum" minOccurs="0" maxOccurs="1">
					</xs:element>
					<xs:element name="placeholdersCount"
						minOccurs="0" maxOccurs="1">
						<xs:simpleType>
							<xs:restriction base="xs:int">

								<xs:minInclusive value="1"></xs:minInclusive>
							</xs:restriction>
						</xs:simpleType>
					</xs:element>
					<xs:element name="writingStyle"
						type="tns:writingStyleEnum" minOccurs="0" maxOccurs="1">
					</xs:element>
					<xs:element name="rotation" type="tns:rotationTypeEnum" maxOccurs="1" minOccurs="0"></xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>

	<xs:complexType name="barcodeFieldType">
		<xs:complexContent>
			<xs:extension base="tns:fieldType">
				<xs:sequence>

					<xs:element name="type" type="tns:barcodeTypeEnum"
						maxOccurs="1" minOccurs="0">
					</xs:element>
					<xs:element name="containsBinaryData" type="xs:boolean"
						maxOccurs="1" minOccurs="0"></xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>

	<xs:complexType name="checkmarkFieldType">
		<xs:complexContent>
			<xs:extension base="tns:fieldType">
				<xs:sequence>

					<xs:element name="type" type="tns:checkmarkTypeEnum"
						maxOccurs="1" minOccurs="0">
					</xs:element>
					<xs:element name="correctionAllowed" type="xs:boolean"
						maxOccurs="1" minOccurs="0"></xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>


	<xs:complexType name="textFieldInstanceType">
		<xs:complexContent>
			<xs:extension base="tns:textFieldType">
				<xs:attribute name="template" type="xs:IDREF"></xs:attribute>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>

	<xs:complexType name="barcodeFieldInstanceType">
		<xs:complexContent>
			<xs:extension base="tns:barcodeFieldType">
				<xs:attribute name="template" type="xs:IDREF"></xs:attribute>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>

	<xs:complexType name="checkmarkFieldInstanceType">
		<xs:complexContent>
			<xs:extension base="tns:checkmarkFieldType">
				<xs:attribute name="template" type="xs:IDREF"></xs:attribute>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>




	<xs:simpleType name="languageType">
		<xs:restriction base="xs:string"></xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="letterSetType">
		<xs:restriction base="xs:string"></xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="regexpType">
		<xs:restriction base="xs:string"></xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="textTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="normal"></xs:enumeration>
			<xs:enumeration value="typewriter"></xs:enumeration>
			<xs:enumeration value="matrix"></xs:enumeration>
			<xs:enumeration value="index"></xs:enumeration>
			<xs:enumeration value="handprinted"></xs:enumeration>
			<xs:enumeration value="ocrA"></xs:enumeration>
			<xs:enumeration value="ocrB"></xs:enumeration>
			<xs:enumeration value="e13b"></xs:enumeration>
			<xs:enumeration value="cmc7"></xs:enumeration>
			<xs:enumeration value="gothic"></xs:enumeration>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="markingTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="simpleText"></xs:enumeration>
			<xs:enumeration value="underlinedText"></xs:enumeration>
			<xs:enumeration value="textInFrame"></xs:enumeration>
			<xs:enumeration value="greyBoxes"></xs:enumeration>
			<xs:enumeration value="charBoxSeries"></xs:enumeration>
			<xs:enumeration value="simpleComb"></xs:enumeration>
			<xs:enumeration value="combInFrame"></xs:enumeration>
			<xs:enumeration value="partitionedFrame"></xs:enumeration>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="writingStyleEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="default"></xs:enumeration>
			<xs:enumeration value="american"></xs:enumeration>
			<xs:enumeration value="german"></xs:enumeration>
			<xs:enumeration value="russian"></xs:enumeration>
			<xs:enumeration value="polish"></xs:enumeration>
			<xs:enumeration value="thai"></xs:enumeration>
			<xs:enumeration value="japanese"></xs:enumeration>
			<xs:enumeration value="arabic"></xs:enumeration>
			<xs:enumeration value="baltic"></xs:enumeration>
			<xs:enumeration value="british"></xs:enumeration>
			<xs:enumeration value="bulgarian"></xs:enumeration>
			<xs:enumeration value="canadian"></xs:enumeration>
			<xs:enumeration value="czech"></xs:enumeration>
			<xs:enumeration value="croatian"></xs:enumeration>
			<xs:enumeration value="french"></xs:enumeration>
			<xs:enumeration value="greek"></xs:enumeration>
			<xs:enumeration value="hungarian"></xs:enumeration>
			<xs:enumeration value="italian"></xs:enumeration>
			<xs:enumeration value="romanian"></xs:enumeration>
			<xs:enumeration value="slovak"></xs:enumeration>
			<xs:enumeration value="spanish"></xs:enumeration>
			<xs:enumeration value="turkish"></xs:enumeration>
			<xs:enumeration value="ukrainian"></xs:enumeration>
			<xs:enumeration value="common"></xs:enumeration>
			<xs:enumeration value="chinese"></xs:enumeration>
			<xs:enumeration value="azerbaijan"></xs:enumeration>
			<xs:enumeration value="kazakh"></xs:enumeration>
			<xs:enumeration value="kirgiz"></xs:enumeration>
			<xs:enumeration value="latvian"></xs:enumeration>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="barcodeTypeEnum">
		<xs:restriction base="xs:string">
			<xs:pattern
				value="(autodetect|patch|code39|code93|code128|ucc128|interleaved25|industrial25|iata25|matrix25|ean8|ean13|codabar|upca|upce|postNet|aztec|dataMatrix|pdf417|qrCode)(,(autodetect|patch|code39|code93|code128|ucc128|interleaved25|industrial25|iata25|matrix25|ean8|ean13|codabar|upca|upce|postNet|aztec|dataMatrix|pdf417|qrCode))*">
			</xs:pattern>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="checkmarkTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="empty"></xs:enumeration>
			<xs:enumeration value="square"></xs:enumeration>
			<xs:enumeration value="circle"></xs:enumeration>
		</xs:restriction>
	</xs:simpleType>

    <xs:complexType name="pageType">
    	<xs:sequence>
    		<xs:element name="text" type="tns:textFieldInstanceType"
    			maxOccurs="unbounded" minOccurs="0">
    		</xs:element>
    		<xs:element name="barcode" type="tns:barcodeFieldInstanceType"
    			maxOccurs="unbounded" minOccurs="0">
    		</xs:element>
    		<xs:element name="checkmark" type="tns:checkmarkFieldInstanceType"
    			maxOccurs="unbounded" minOccurs="0">
    		</xs:element>

    	</xs:sequence>
    	<xs:attribute name="id" type="xs:ID"></xs:attribute>
    	<xs:attribute name="applyTo" type="tns:pagesListType" use="required"></xs:attribute>
    </xs:complexType>


    <xs:complexType name="fieldTemplatesType">
    	<xs:sequence>
    		<xs:element name="text" type="tns:textFieldType"
    			maxOccurs="unbounded" minOccurs="0">
    		</xs:element>
    		<xs:element name="barcode" type="tns:barcodeFieldType"
    			maxOccurs="unbounded" minOccurs="0">
    		</xs:element>
    		<xs:element name="checkmark" type="tns:checkmarkFieldType" maxOccurs="unbounded" minOccurs="0"></xs:element>
    	</xs:sequence>
    </xs:complexType>

    <xs:simpleType name="pagesListType">
    	<xs:restriction base="xs:string">
    		<xs:pattern value="(\d+)(,(\d+))*"></xs:pattern>
    	</xs:restriction>
    </xs:simpleType>
</xs:schema>
