<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSPY v2004 rel. 3 U (http://www.xmlspy.com) by EugeneK (DD) -->
<!-- edited with XML Spy v4.4 U (http://www.xmlspy.com) by Andre (ABC) -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:element name="Gate">
		<xs:annotation>
			<xs:documentation>Описание шлюза</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="ObjectTypes">
					<xs:complexType>
						<xs:sequence>
							<xs:element ref="ObjectType" minOccurs="0" maxOccurs="unbounded"/>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="Methods">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="Method" type="Method" minOccurs="0" maxOccurs="unbounded"/>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
			</xs:sequence>
			<xs:attribute name="ID" type="xs:string" use="required"/>
			<xs:attribute name="Alias" type="xs:string" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="ObjectType">
		<xs:annotation>
			<xs:documentation>Описание типа объекта</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="Name" type="LocalizedStrings"/>
				<xs:element name="Type" type="ObjectTypeKey"/>
				<xs:element name="ParentType" type="ObjectTypeKey" minOccurs="0"/>
				<xs:element name="EnumType" type="ObjectTypeKey" minOccurs="0"/>
				<xs:element name="Properties" minOccurs="0">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="Property" type="ObjectTypeProperty" minOccurs="0" maxOccurs="unbounded"/>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="Methods" minOccurs="0">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="Method" type="Method" minOccurs="0" maxOccurs="unbounded"/>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="Convertors" minOccurs="0">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="Convertor" type="ObjectTypeConvertor" minOccurs="0" maxOccurs="unbounded"/>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="ConditionalOperations" minOccurs="0">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="ConditionalOperation" type="ObjectTypeConditionalOperation" minOccurs="0" maxOccurs="unbounded"/>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="EnumValues" minOccurs="0">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="EnumValue" type="EnumValue" minOccurs="0" maxOccurs="unbounded"/>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
			</xs:sequence>
			<xs:attribute name="Alias" type="xs:string" use="required"/>
			<xs:attribute name="HasReference" type="xs:boolean" use="optional" default="false"/>
			<xs:attribute name="HasUrlAddress" type="xs:boolean" use="optional" default="false"/>
			<xs:attribute name="IsCreatable" type="xs:boolean" use="optional" default="false"/>
			<xs:attribute name="IsCopiable" type="xs:boolean" use="optional" default="false"/>
			<xs:attribute name="SupportsQuickSearch" type="xs:boolean" use="optional" default="false"/>
			<xs:attribute name="IsBasic" type="xs:boolean" use="optional" default="false"/>
			<xs:attribute name="IsEnumeration" type="xs:boolean" use="optional" default="false"/>
			<xs:attribute name="SupportsCustomProperties" type="xs:boolean" use="optional" default="false"/>
			<xs:attribute name="IsViewable" type="xs:boolean" use="optional" default="false"/>
			<xs:attribute name="IsSelectable" type="xs:boolean" use="optional" default="false"/>
		</xs:complexType>
	</xs:element>
	<xs:complexType name="LocalizedStrings">
		<xs:annotation>
			<xs:documentation>Локализованная строка</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="LocalizedString" maxOccurs="unbounded">
				<xs:complexType>
					<xs:simpleContent>
						<xs:extension base="xs:string">
							<xs:attribute name="Language" type="xs:language" use="required"/>
						</xs:extension>
					</xs:simpleContent>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="ObjectTypeProperty">
		<xs:annotation>
			<xs:documentation>Описание свойства значения</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="Name" type="LocalizedStrings"/>
			<xs:element name="CollectionInfo" type="CollectionInfo" minOccurs="0"/>
			<xs:element name="Type" type="ObjectTypeKey"/>
			<xs:element name="ReferenceInfo" type="ReferenceInfo" minOccurs="0"/>
			<xs:element name="IndexedProperties" minOccurs="0">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="IndexedProperty" type="ObjectTypeProperty" minOccurs="0" maxOccurs="unbounded"/>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="Alias" type="xs:string" use="required"/>
		<xs:attribute name="ReadOnly" type="xs:boolean" use="optional" default="false"/>
		<xs:attribute name="IsCollection" type="xs:boolean" use="optional" default="false"/>
		<xs:attribute name="IsReference" type="xs:boolean" use="optional" default="false"/>
		<xs:attribute name="IsIndexed" type="xs:boolean" use="optional" default="false"/>
	</xs:complexType>
	<xs:complexType name="CollectionInfo">
		<xs:annotation>
			<xs:documentation>Описание коллекции</xs:documentation>
		</xs:annotation>
		<xs:attribute name="KeyPropertyAlias" type="xs:string" use="optional"/>
		<xs:attribute name="SupportsClear" type="xs:boolean" use="optional"/>
		<xs:attribute name="SupportsRemove" type="xs:boolean" use="optional"/>
		<xs:attribute name="SupportsAddNew" type="xs:boolean" use="optional"/>
		<xs:attribute name="SupportsAddNewWithKey" type="xs:boolean" use="optional"/>
		<xs:attribute name="SupportsKeys" type="xs:boolean" use="optional"/>
		<xs:attribute name="SupportsAdd" type="xs:boolean" use="optional"/>
		<xs:attribute name="SupportsAddRange" type="xs:boolean" use="optional"/>
		<xs:attribute name="SupportsAddWithKey" type="xs:boolean" use="optional"/>
	</xs:complexType>
	<xs:complexType name="Method">
		<xs:annotation>
			<xs:documentation>Описание функции </xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="Name" type="LocalizedStrings"/>
			<xs:element name="Parameters">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="Parameter" type="MethodParameter" minOccurs="0" maxOccurs="unbounded"/>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="ReturnValueType" type="ObjectTypeKey" minOccurs="0"/>
		</xs:sequence>
		<xs:attribute name="ID" type="xs:string" use="required"/>
		<xs:attribute name="Alias" type="xs:string" use="required"/>
		<xs:attribute name="Static" type="xs:boolean" use="optional" default="false"/>
	</xs:complexType>
	<xs:complexType name="ObjectTypeConvertor">
		<xs:annotation>
			<xs:documentation>Описание преобразований значения</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="Name" type="LocalizedStrings"/>
			<xs:element name="ConvertedType" type="ObjectTypeKey"/>
		</xs:sequence>
		<xs:attribute name="ID" type="xs:string" use="required"/>
		<xs:attribute name="Alias" type="xs:string" use="required"/>
	</xs:complexType>
	<xs:complexType name="ObjectTypeConditionalOperation">
		<xs:annotation>
			<xs:documentation>Описание условных операторов, применимых к значению</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="Name" type="LocalizedStrings"/>
			<xs:element name="OperandType" type="ObjectTypeKey" minOccurs="0"/>
		</xs:sequence>
		<xs:attribute name="ID" type="xs:string" use="required"/>
		<xs:attribute name="Alias" type="xs:string" use="required"/>
		<xs:attribute name="Unary" type="xs:boolean" use="optional" default="false"/>
	</xs:complexType>
	<xs:complexType name="MethodParameter">
		<xs:annotation>
			<xs:documentation>Описание параметра функции</xs:documentation>
		</xs:annotation>
		<xs:all>
			<xs:element name="Name" type="LocalizedStrings"/>
			<xs:element name="Type" type="ObjectTypeKey"/>
		</xs:all>
		<xs:attribute name="Alias" type="xs:string" use="required"/>
		<xs:attribute name="In" type="xs:boolean" use="optional" default="true"/>
		<xs:attribute name="Out" type="xs:boolean" use="optional" default="false"/>
		<xs:attribute name="Collection" type="xs:boolean" use="optional" default="false"/>
	</xs:complexType>
	<xs:complexType name="ObjectTypeKey">
		<xs:annotation>
			<xs:documentation>Описание ссылки на тип переменной</xs:documentation>
		</xs:annotation>
		<xs:attribute name="TypeID" type="xs:int" use="required"/>
		<xs:attribute name="GateID" type="xs:string" use="required"/>
		<xs:attribute name="SubTypeID" type="xs:string" use="optional"/>
	</xs:complexType>
	<xs:complexType name="EnumValue">
		<xs:annotation>
			<xs:documentation>Описание значения перечисления</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="Name" type="LocalizedStrings"/>
		</xs:sequence>
		<xs:attribute name="Alias" type="xs:string" use="required"/>
		<xs:attribute name="Value" type="xs:string" use="required"/>
	</xs:complexType>
	<xs:complexType name="ReferenceInfo">
		<xs:annotation>
			<xs:documentation>Описание ссылки на объект</xs:documentation>
		</xs:annotation>
		<xs:sequence>
			<xs:element name="ReferencedType" type="ObjectTypeKey"/>
		</xs:sequence>
	</xs:complexType>
</xs:schema>
