<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:swt="http://wizardsoft.ru/schemas/excelimport.xsd" targetNamespace="http://wizardsoft.ru/schemas/excelimport.xsd">
	<xs:element name="ExcelImport">
		<xs:annotation>
			<xs:documentation>Шаблон импорта данных из Excel</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="sec">
					<xs:annotation>
						<xs:documentation>Раздел описание фильтров для импорта</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:sequence>
							<xs:element maxOccurs="unbounded" name="sec">
								<xs:annotation>
									<xs:documentation>Раздел описания фильтра</xs:documentation>
								</xs:annotation>
								<xs:complexType>
									<xs:sequence>
										<xs:element maxOccurs="unbounded" name="key">
											<xs:annotation>
												<xs:documentation>Значение фильтра</xs:documentation>
											</xs:annotation>
											<xs:complexType>
												<xs:attribute name="name" type="swt:filterkeynames" use="required">
													<xs:annotation>
														<xs:documentation>Имя ключа</xs:documentation>
													</xs:annotation>
												</xs:attribute>
												<xs:attribute name="val" type="swt:valtype" use="required">
													<xs:annotation>
														<xs:documentation>Значение ключа</xs:documentation>
													</xs:annotation>
												</xs:attribute>
											</xs:complexType>
										</xs:element>
										<xs:element maxOccurs="unbounded" name="sec">
											<xs:complexType>
												<xs:sequence>
													<xs:element maxOccurs="unbounded" name="key">
														<xs:complexType>
															<xs:attribute name="name" type="swt:keynames" use="required">
																<xs:annotation>
																	<xs:documentation>Имя ключа</xs:documentation>
																</xs:annotation>
															</xs:attribute>
															<xs:attribute name="val" type="swt:valtype" use="required">
																<xs:annotation>
																	<xs:documentation>Значение ключа</xs:documentation>
																</xs:annotation>
															</xs:attribute>
														</xs:complexType>
													</xs:element>
												</xs:sequence>
												<xs:attribute name="name" type="xs:string" use="required" />
											</xs:complexType>
										</xs:element>
									</xs:sequence>
									<xs:attribute name="name" type="swt:groupname" use="required">
										<xs:annotation>
											<xs:documentation>Имя группы фильтров</xs:documentation>
										</xs:annotation>
									</xs:attribute>
								</xs:complexType>
								<xs:unique name="filtername_uniq">
									<xs:selector xpath="swt:sec"></xs:selector>
									<xs:field xpath="@name"></xs:field>
								</xs:unique>
							</xs:element>
						</xs:sequence>
						<xs:attribute name="name" type="swt:filtergroups" use="required">
							<xs:annotation>
								<xs:documentation>Раздел фильтров</xs:documentation>
							</xs:annotation>
						</xs:attribute>
					</xs:complexType>
					<xs:unique name="groupname_uniq">
						<xs:selector xpath="swt:sec"></xs:selector>
						<xs:field xpath="@name"></xs:field>
					</xs:unique>
				</xs:element>
			</xs:sequence>
			<xs:attribute name="version" type="xs:unsignedByte" use="required" />
		</xs:complexType>
	</xs:element>

	<xs:simpleType name="filtergroups">
		<xs:annotation>
			<xs:documentation>Может содержать только значение FilterGroups</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:enumeration value="FilterGroups"></xs:enumeration>
		</xs:restriction>
	</xs:simpleType>

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

	<xs:simpleType name="filterkeynames">
		<xs:restriction base="xs:string">
			<xs:enumeration value="Name">
				<xs:annotation>
					<xs:documentation>Имя фильтра</xs:documentation>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="Description">
				<xs:annotation>
					<xs:documentation>Описание фильтра</xs:documentation>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="Form">
				<xs:annotation>
					<xs:documentation>Тип формы, в котором используется фильтр: LS или MTSN</xs:documentation>
				</xs:annotation>
			</xs:enumeration>
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="keynames">
		<xs:restriction base="xs:string">
			<xs:enumeration value="Type">
				<xs:annotation>
					<xs:documentation>Тип строки</xs:documentation>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="Name">
				<xs:annotation>
					<xs:documentation>Имя фильтра, отображаемое пользователю</xs:documentation>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="Match">
				<xs:annotation>
					<xs:documentation>Регулярное выражение, позволяющее получить из текста нужный шифр</xs:documentation>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="Replace">
				<xs:annotation>
					<xs:documentation>Регулярное выражение подмены строки</xs:documentation>
				</xs:annotation>
			</xs:enumeration>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="valtype">
		<xs:union>
			<xs:simpleType>
				<xs:restriction base="xs:string">
					<xs:minLength value="1"></xs:minLength>
				</xs:restriction>
			</xs:simpleType>
			<xs:simpleType>
				<xs:restriction base="xs:string">
					<xs:enumeration value="Expenses"></xs:enumeration>
					<xs:enumeration value="Materials"></xs:enumeration>
					<xs:enumeration value="Machines"></xs:enumeration>
					
					<xs:enumeration value="(?P&lt;code&gt;.+)"></xs:enumeration>
					<xs:enumeration value="\g&lt;code&gt;"></xs:enumeration>
				</xs:restriction>
			</xs:simpleType>
		</xs:union>
	</xs:simpleType>
	
</xs:schema>