<?xml version="1.0" encoding="UTF-8"?>
<!--
 XML Schema for common xs:elements of Pivax dictionary.
 These xs:elements are used to encode Pivax MT dictionaries
 and Pivax interlingual axies dictionary 
 
 Namespace = http://www-clips.imag.fr/geta/services/dml

 This schema is identified by the location:
 http://www-clips.imag.fr/geta/services/dml/pivax.xsd
  
 $Author: nguyenht $ Hong-Thai NGUYEN Hong-Thai.Nguyen@imag.fr
 $Date: 2007/02/02 19:58:22 $
 $Revision: 0.1 $
 $Content: PIVAX micro-structure definition
 -->
 
 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
	
<!--================ importing other schemas ================-->
<!-- importing parts of xlink recommendation for dml links
	<import namespace="http://www.w3.org/1999/xlink" schemaLocation="http://www-clips.imag.fr/geta/services/dml/xlink.xsd"/>
-->	
<!--================ Redefining xs:elements of other schemas ================-->
<!-- including dml schema for common DML xs:elements used in the
dictionary
-->
<xs:element name="volume">
	<xs:complexType>
		<xs:sequence>
			<xs:element name="system" maxOccurs="1" minOccurs="0">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="description" minOccurs="0" maxOccurs="1" type="xs:string"/>
						<xs:element name="copyright" minOccurs="0" maxOccurs="1" type="xs:string"/>
						<xs:element name="organization" minOccurs="0" maxOccurs="1" type="xs:string"/>
						<xs:element name="responsability" minOccurs="0" maxOccurs="1" type="xs:string"/>
						<xs:element name="adress" minOccurs="0" maxOccurs="1" type="xs:string"/>
						<xs:element name="url_link" minOccurs="0" maxOccurs="5" type="xs:string"/>
						<xs:element minOccurs="0" maxOccurs="1" ref="architecture"/>
						<xs:element minOccurs="0" maxOccurs="1" ref="server_lst"/>
						<xs:element minOccurs="0" maxOccurs="unbounded" type="command" name="command"/>
					</xs:sequence>
					<xs:attribute name="name" type="xs:string"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="axeme-language" minOccurs="0" maxOccurs="1" type="xs:string"/>
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:element ref="lexie"/>
				<xs:element ref="axie"/>
				<xs:element ref="axeme"/>
			</xs:choice>
		</xs:sequence>	
		<xs:attribute name="name" type="xs:string" use="optional"/>
		<xs:attribute name="axeme-language" type="xs:language" use="optional"/>
	</xs:complexType>
</xs:element>
 	
 <xs:element name="unl_volume">
 	<xs:complexType>
 		<xs:choice minOccurs="0" maxOccurs="unbounded"> 			
 			<xs:element ref="uw"/>
 		</xs:choice>
 		<xs:attribute name="name" type="xs:string" use="optional"/>
 		<xs:attribute name="specification-version" type="xs:string" use="required"/>
 		<xs:attribute name="validator" type="xs:string" use="optional"/>
 	</xs:complexType>
 </xs:element>

<!-- BEGIN: Access right definition -->
<!-- NOTE: For new entry, the default right access is U(RWGE) G(RWGE) O(RE)
			and the group is owner's group.
-->
	<xs:complexType name="access">
		<xs:sequence>
			<xs:element maxOccurs="1" minOccurs="0" name="user_right" type="right"/>
			<xs:element maxOccurs="1" minOccurs="0" name="group_right" type="right"/>
			<xs:element maxOccurs="1" minOccurs="0" name="other_right" type="right"/>
		</xs:sequence>
	</xs:complexType>
	<xs:simpleType name="right">
		<xs:restriction base="xs:string">
			<xs:enumeration value="R"/>
<!-- Can see information -->
			<xs:enumeration value="W"/>
<!-- Can change information -->
			<xs:enumeration value="G"/>
<!-- Can grant information -->
			<xs:enumeration value="E"/>
<!-- Can export information -->
		</xs:restriction>
	</xs:simpleType>
<!-- Sould be used in a category information,
it means this cat can be public for this entry or not ?
A entry could be public a part or whole of entry information
-->
	<xs:simpleType name="access_type">
		<xs:restriction base="xs:string">
			<xs:enumeration value="Public"/>
			<xs:enumeration value="Group"/>
			<xs:enumeration value="Private"/>
		</xs:restriction>
	</xs:simpleType>
<!-- EN Access right definition -->
<!-- BEGIN: Status definition -->
	<xs:simpleType name="status">
		<xs:restriction base="xs:string">
			<xs:enumeration value="HARMONISED"/>
			<xs:enumeration value="REJECTED"/>
			<xs:enumeration value="UN_KNOWN"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="processStatus">
		<xs:restriction base="xs:string">
			<xs:enumeration value="UNPROCESSED"/>
			<xs:enumeration value="PROVISIONALLY_PROCESSED"/>
			<xs:enumeration value="TOSEE"/>
			<xs:enumeration value="FINALISED"/>
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="projectStatus">
		<xs:restriction base="xs:string">
			<xs:enumeration value="INIT"/>
			<xs:enumeration value="RUNNING"/>
			<xs:enumeration value="CANCELLED"/>
			<xs:enumeration value="FINISHED"/>
		</xs:restriction>
	</xs:simpleType>
<!-- EN Status definition -->
<!-- BEGIN: User & group definition -->
	<xs:element name="user" type="xs:NCName"/>

	<xs:element name="assigner">
		<xs:complexType>
			<xs:sequence>
				<xs:element maxOccurs="unbounded" minOccurs="0" ref="user"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
<!-- EN User & group definition -->
<!-- BEGIN: Message & comment definition -->
	<xs:element name="message_text">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="xs:string">
					<xs:attribute name="time" type="xs:dateTime"/>
					<xs:attribute name="user" type="xs:NCName"/>
				</xs:extension>
			</xs:simpleContent>			
		</xs:complexType>
	</xs:element>
	<xs:element name="message">
		<xs:complexType>
			<xs:sequence>				
				<xs:element maxOccurs="unbounded" minOccurs="0" ref="message_text"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
<!-- EN Message & comment definition -->
<!-- BEGIN: Workflow defnition -->
<!-- NOTE: Very simple workflow, 
		should we use 3 party workflow product than a build-in one
		See a M2R with Gilles, GETA-CLIPS 2006
-->
	<xs:element name="workflow_step">
		<xs:complexType>
			<xs:sequence>
				<xs:element maxOccurs="unbounded" minOccurs="0" name="next_step" type="xs:int"/>
			</xs:sequence>
			<xs:attribute name="id" type="xs:int"/>
			<xs:attribute name="name" type="xs:string"/>
		</xs:complexType>
	</xs:element>
<!-- EN Workflow defintion -->
	<xs:element name="workflow">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="workflow_step"/>
<!-- List of steps in WF -->
			</xs:sequence>
			<xs:attribute name="current_step" type="xs:int"/>
			<xs:attribute name="name" type="xs:string"/>
<!-- <xs:attribute name="workflow_status" type="wokkflowStatus" use="required"/> -->
		</xs:complexType>
	</xs:element>
<!-- EN Workflow definition -->
<!-- BEGIN: Project defintion -->
	<xs:element name="project">		
		<xs:complexType>
			<xs:sequence>
				<xs:element name="infor_restriction" minOccurs="0" maxOccurs="unbounded">
					<xs:complexType>
						<xs:attribute name="element_name" type="xs:string"/>					
						<xs:attribute name="element_access" type="right"/>
					</xs:complexType>	
				</xs:element>				
				<xs:element name="tag" minOccurs="0" maxOccurs="1" type="xs:string"/>
			</xs:sequence>
			<xs:attribute name="name" type="xs:string"/>
			<xs:attribute name="created_date" type="xs:dateTime"/>
			<xs:attribute name="status" type="projectStatus"/>
		</xs:complexType>
	</xs:element>
 	
	<xs:element name="project_list">		
		<xs:complexType>
			<xs:sequence>
				<xs:element minOccurs="0" maxOccurs="unbounded" ref="project"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
<!-- EN Project definition -->
<!-- BEGIN: Entry definition -->
<!--================ common definitions for machinal dictionaries from NL to UNL =======-->
<!-- Note: the xs:elements specific to a dictionary/language have to be
redefined in a specific schema -->
<!-- entry xs:element -->
<!-- A entry of machinal part of Pivax dictionaries is an entry of a CATS dictionary from UNL to a NL.
	The structure of the entries, that is microstructure of the COMMON dictionaries,
	is based on the most general structure used for the formal lexical at almost CATS dico. So it's limited only in some general
	xs:element: HW, cat, content and comment + more meta-information. See "Pivax Requirement Documentation by Hong-Thai.Nguyen@imag.fr
-->
	<!-- For each volume, user can redefine a more structured schema -->
	<xs:complexType name="lemma">
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute name="access" type="access_type" use="required"/>
			</xs:extension>	
		</xs:simpleContent>		
	</xs:complexType>
 	<xs:complexType name="pos">
 		<xs:simpleContent>
 			<xs:extension base="xs:string">
 				<xs:attribute name="access" type="access_type" use="required"/>
 			</xs:extension>	
 		</xs:simpleContent>
 	</xs:complexType>
	<xs:complexType name="content">
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute name="access" type="access_type" use="required"/>
			</xs:extension>
		</xs:simpleContent>		
	</xs:complexType>
	<xs:complexType name="comment">
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute name="access" type="access_type" use="required"/>
			</xs:extension>
		</xs:simpleContent>		
	</xs:complexType>
	<xs:complexType name="score">
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute name="score_type" type="xs:string"/>
			</xs:extension>
		</xs:simpleContent>		
	</xs:complexType>
 	
	<xs:element name="lexie">
		<xs:complexType>
			<xs:sequence>
				<xs:element maxOccurs="1" minOccurs="1" type="lemma" name="lemma"/>
				<xs:element maxOccurs="1" minOccurs="1" type="pos" name="pos"/>
				<xs:element maxOccurs="1" minOccurs="1" type="content" name="content"/>				
				<xs:element maxOccurs="1" minOccurs="0" type="score" name="score"/>
				<xs:element maxOccurs="1" minOccurs="0" ref="more-info"/>
				<xs:element maxOccurs="1" minOccurs="0" ref="assigner"/>
				<xs:element maxOccurs="unbounded" minOccurs="0" ref="message"/>
				<xs:element maxOccurs="1" minOccurs="0" ref="project_list"/>
			</xs:sequence>
<!-- The xs:attribute id is an internal unique id. It is hidden from the users.
		 If the lexie is deleted, its id remains. It can't be reused. ID is inside of
		 metalinguistic information.
	-->
			<xs:attribute name="id" type="xs:ID" use="required"/>
			<xs:attribute name="status" type="status" use="required"/>
			<xs:attribute name="process_status" type="processStatus" use="required"/>
			<xs:attribute name="access" type="access_type" use="optional"/>
		</xs:complexType>
	</xs:element>
<!-- reference xs:element -->
<!-- language level -->
	<xs:element name="reference" type="referenceType"/>
<!-- reference grade type -->
<!-- has to be redefined into the
language specific schemata -->
	<xs:simpleType name="referenceType">
		<xs:restriction base="xs:string"/>
	</xs:simpleType>
<!-- reflexie xs:element -->
<!-- reference to another lexie with an xlink, maybe we don't need this  -->
	<xs:element name="reflexie" type="xs:string"/>
	
<!-- more-info xs:element -->
<!-- This xs:element is used to store additional XML information for the lexie.
It contains typically, information from recuperated resources. -->
	<xs:element name="more-info">
		<xs:complexType>
			<xs:sequence>
				<xs:any maxOccurs="unbounded" minOccurs="0" processContents="skip"/>
<!-- If we want to valida te xs:elements and xs:attributes for which it can obtain schema information,
	 but it will not signal errors for those it cannot obtain any schema information. 
-->
			</xs:sequence>
		</xs:complexType>
	</xs:element>
<!-- EN Entry definition -->
<!-- BEGIN: UW denifition -->
<!-- NOTE: Should define in generic way so that we can use for MANY other pivot type
	Or, We keep this part in CDATA, and an phaser analyse content for each type of pivot
-->
<!-- EN UW denifition -->
<!-- BEGIN: Exeme Difinition -->
	<xs:element name="axeme">
		<xs:complexType mixed="false">
			<xs:sequence>
				<xs:element name="entryref" minOccurs="1" maxOccurs="unbounded">
					<xs:complexType>
						<xs:attribute name="idref" type="xs:string" use="required"/>						
						<xs:attribute name="relation-mono">
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:enumeration value="DEPEND_ON"/>
									<xs:enumeration value="COPY_FROM"/>
									<xs:enumeration value="TRANSFORM_TO"/>
									<xs:enumeration value="DUPBLICATE_TO"/>
									<xs:enumeration value="OTHER"/>
								</xs:restriction>
							</xs:simpleType>							
						</xs:attribute>
						<xs:attribute name="system" type="xs:string" use="required"/>
					</xs:complexType>
				</xs:element>			
				<xs:element name="misc" type="xs:string" minOccurs="0" maxOccurs="1"/>
			</xs:sequence>
			<xs:attribute name="id" use="required" type="xs:ID"/>
		</xs:complexType>
	</xs:element>	
<!-- END Axeme Difinition -->

<!-- BEGIN: Acception definition -->
<!-- NOTE: "Acception" is not realy sacrified as a in notion, it seems that "axie" right here is only a classe of sens IN TRANSLATION
	 in axie volume center.
	 And, for "axie" monolingue, We prefer to call him a ""axeme" for "monolingual axie".
 -->
<!--================ definitions for the axie dictionary ==================-->
<!-- Note: xs:elements whose content can vary e.g.: external-references,
have to be redefined in the schema specific to the axie volume -->
<!-- axie xs:element -->
<!-- An axie is an interlingual link between lexies of different CAT systems in same language,
between language-pivot-axie and between pivot-axie-UNL-axie (see pivax-metadata.xml for Pivax macro-structure design).
It consists also in links to other set of semantic symbols
following other theories like WordNet, IF, etc. -->
	<xs:element name="axie">
		<xs:complexType>
			<xs:sequence>
				<xs:element maxOccurs="1" minOccurs="0" ref="semantic-cat"/>
				<xs:element maxOccurs="1" minOccurs="0" ref="item-links"/>
				<xs:element maxOccurs="1" minOccurs="0" ref="axie-links"/>
				<xs:element maxOccurs="1" minOccurs="0" ref="external-references"/>
			</xs:sequence>
			<xs:attribute name="id" type="xs:ID" use="required"/>
			<xs:attribute name="status" type="status" use="optional"/>			
		</xs:complexType>
	</xs:element>
<!-- Keep from PAPILLON -->
<!-- semantic-cat xs:element -->
<!-- semantic category of an axie -->
	<xs:element name="semantic-cat">
		<xs:simpleType>
			<xs:restriction base="xs:string">
				<xs:enumeration value="entity"/>
				<xs:enumeration value="process"/>
				<xs:enumeration value="result"/>
				<xs:enumeration value="state"/>
				<xs:enumeration value="gloss"/>
				<xs:enumeration value="idiom"/>
				<xs:enumeration value="citation"/>
				<xs:enumeration value="proverb"/>
			</xs:restriction>
		</xs:simpleType>
	</xs:element>
<!-- item-links xs:element -->
<!-- This xs:element contains the links from the axie to
a item:
 - entry in CAT system volume,
 - axeme on language volume,
 - Pivax axie or UNL axeme,
 - UW lexie in UW UNL volume with a version
-->
	<xs:element name="item-links">
		<xs:complexType>
			<xs:sequence>
				<xs:element maxOccurs="unbounded" minOccurs="0" ref="item"/>
			</xs:sequence>
			<xs:attribute name="link_group" type="xs:string"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="item">
		<xs:complexType>
			<xs:sequence>
				<xs:element maxOccurs="unbounded" minOccurs="0" name="refexample" type="refexample"/>
				<xs:element maxOccurs="unbounded" minOccurs="0" name="refidiom" type="refidiom"/>
				<xs:element maxOccurs="1" minOccurs="0" name="misc" type="xs:string"/>
			</xs:sequence>
			<xs:attribute name="idref" type="xs:string"/>
			<xs:attribute name="lang" use="optional" type="xs:string"/>
			<xs:attribute name="link_name" type="xs:string" use="optional"/>
			<xs:attribute name="link_value" type="xs:string" use="optional"/>
			<!--xs:attribute name="lang" type="xs:string" use="optional"/-->
			<xs:attribute name="relation" use="required">
				<xs:simpleType>
					<xs:restriction base="xs:string">
						<!-- Linguistic relation -->
						<xs:enumeration value="IS_A_PART_OF"/>
						<xs:enumeration value="ALIAS"/>
						<xs:enumeration value="SYNONYM"/>
						<xs:enumeration value="REFINEMENT"/>
						<xs:enumeration value="GENERALIZATION"/>
						<xs:enumeration value="UNKNOWN"/>
					</xs:restriction>
				</xs:simpleType>
			</xs:attribute>
		</xs:complexType>
	</xs:element>
<!-- Link between axies -->
	<xs:element name="axie-links">
		<xs:complexType>
			<xs:sequence>
			<xs:element maxOccurs="unbounded" minOccurs="0" name="axieref">
				<xs:complexType>
					<xs:sequence>
						<xs:element maxOccurs="unbounded" minOccurs="0" name="refaxie" type="refaxie"/>
					</xs:sequence>
					<xs:attribute name="idref" type="xs:string" use="required"/>
					<xs:attribute name="relation" use="required">
						<xs:simpleType>
							<xs:restriction base="xs:string">
								<xs:enumeration value="TRANSLATE_TO"/>
								<xs:enumeration value="CONCAT_TO"/>
								<xs:enumeration value="SPLIT_TO"/>
								<xs:enumeration value="UNKNOWN"/>
							</xs:restriction>
						</xs:simpleType>
					</xs:attribute>
				</xs:complexType>
			</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>

<!-- refaxie xs:element -->
<!-- reference to another axie with an xlink -->
 	<xs:complexType name="refaxie">
 		<xs:simpleContent>
 			<xs:extension base="xs:string">
 				<xs:attribute name="axiref" type="xs:NCName" use="optional"/>
 				<xs:attribute name="isHarmonised" type="xs:boolean" use="optional" default="false"/> 				
 			</xs:extension>
 		</xs:simpleContent>
 	</xs:complexType>
 	
 	<xs:complexType name="refexample">
 		<xs:simpleContent>
 			<xs:extension base="xs:string">
 				<xs:attribute name="exempleref" type="xs:NCName" use="optional"/> 				
 			</xs:extension>
 		</xs:simpleContent>
 	</xs:complexType>
 	
 	<xs:complexType name="refidiom">
 		<xs:simpleContent>
 			<xs:extension base="xs:string">
 				<xs:attribute name="exempleref" type="xs:NCName" use="optional"/> 				
 			</xs:extension>
 		</xs:simpleContent>
 	</xs:complexType>
 		
<!-- external-references xs:element -->
<!-- lists the external references of an axie.
Its content has to be redefined in the axies volume schema-->
	<xs:element name="external-references" type="external-referencesType"/>
	<xs:complexType name="external-referencesType">
		<xs:sequence/>
	</xs:complexType>
 	
 	<xs:element name="examples">
 		<xs:complexType>
 			<xs:sequence>
 				<xs:element name="exemple" minOccurs="0" maxOccurs="unbounded" type="xs:string"/> 					 				
 			</xs:sequence>
 		</xs:complexType>
 	</xs:element>
 	
 	<xs:element name="means">
 		<xs:complexType>
 			<xs:sequence>
 				<xs:element name="mean" minOccurs="0" maxOccurs="unbounded" type="xs:string"/>	 				
 			</xs:sequence>
 		</xs:complexType>
 	</xs:element>
 	
 	<xs:element name="uw" type="uwType"/>
 	
	<xs:complexType name="uwType">
		<xs:sequence>			
			<xs:element maxOccurs="1" minOccurs="1" name="headword" type="xs:string"/>
			<xs:element maxOccurs="1" minOccurs="1" name="content" type="xs:string"/>
			<xs:element maxOccurs="1" minOccurs="0" name="comment" type="comment"/>
			<xs:element maxOccurs="1" minOccurs="0" ref="examples"/>
			<xs:element maxOccurs="1" minOccurs="0" ref="means"/>
			<xs:element maxOccurs="1" minOccurs="0" ref="more-info"/>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID" use="required"/>
		<xs:attribute name="status" type="status" use="required"/>		
	</xs:complexType>
	
 	<xs:complexType name="ref-history">
 		<xs:simpleContent>
 			<xs:extension base="xs:string">
 				<xs:attribute name="user" type="xs:string" use="required"/>
 				<xs:attribute name="timestamp" type="xs:dateTime" use="required"/>
 				<xs:attribute name="id" type="xs:ID"/>
 			</xs:extension>
 		</xs:simpleContent>	
 	</xs:complexType>
 	
 	<xs:complexType name="history">
 		<xs:sequence>
 			<xs:element maxOccurs="1" minOccurs="0" name="ref-history" type="ref-history"/> 			
 		</xs:sequence>
 	</xs:complexType>
 	 	 	
<!--BEGIN: MT systems -->
<!-- Ref. WICALE -->
<xs:element name="server">
	<xs:complexType>
		<xs:sequence>
			<xs:element name="name" minOccurs="1" maxOccurs="1"/>
			<xs:element name="class" minOccurs="1" maxOccurs="1"/>
			<xs:element name="communication" minOccurs="0" maxOccurs="1"/>
			<xs:element name="address" minOccurs="0" maxOccurs="1"/>
			<xs:element name="port" minOccurs="0" maxOccurs="1"/>
			<xs:element name="encoding" minOccurs="0" maxOccurs="1"/>
			<xs:element name="begin_line" minOccurs="0" maxOccurs="1"/>
			<xs:element name="end_line" minOccurs="0" maxOccurs="1"/>
			<xs:element name="handler" minOccurs="0" maxOccurs="1"/>
		</xs:sequence>
	</xs:complexType>
</xs:element>

<xs:element name="server_lst">
	<xs:complexType>
		<xs:sequence>
			<xs:element ref="server" minOccurs="0" maxOccurs="unbounded"/>		
		</xs:sequence>
	</xs:complexType>
</xs:element>

<xs:element name="architecture">
	<xs:complexType>
		<xs:sequence>
			<xs:element name="structure" type="structure_type"/>
		</xs:sequence>
	</xs:complexType>
</xs:element>

<xs:complexType name="structure_type">
	<xs:sequence>
		<xs:element name="id" minOccurs="1" maxOccurs="1" type="xs:int"/>
		<xs:element name="level" minOccurs="1" maxOccurs="1" type="xs:int"/>
		<xs:element name="data" minOccurs="1" maxOccurs="1" type="xs:string"/>
		<xs:element name="label_data" minOccurs="1" maxOccurs="1" type="xs:string"/>
		<xs:element name="update" minOccurs="1" maxOccurs="1" type="xs:string" default="M"/>
		<xs:element name="param_id" minOccurs="1" maxOccurs="1" type="xs:int"/>
		<xs:element name="next" minOccurs="1" maxOccurs="1" type="xs:int"/>
		<xs:element name="file_name" minOccurs="1" maxOccurs="1" type="xs:string"/>
		<xs:element name="value_all" minOccurs="1" maxOccurs="1" type="xs:string"/>
		<xs:element name="value_default" minOccurs="1" maxOccurs="1" type="xs:string"/>
		<xs:element name="expression" minOccurs="1" maxOccurs="1" type="xs:string"/>
	</xs:sequence>
	<xs:attribute name="id" type="xs:int"></xs:attribute>
</xs:complexType>

<xs:complexType name="command">
	<xs:sequence>
		<xs:element name="number_cdm" minOccurs="1" maxOccurs="1" type="xs:int"/>
		<xs:element name="name_cdm" minOccurs="1" maxOccurs="1" type="xs:string"/>
		<xs:element name="label_cdm" minOccurs="1" maxOccurs="1" type="xs:string"/>
		<xs:element name="parameter_lst" minOccurs="0" maxOccurs="1" type="parameter_lst"/>
		<xs:element name="syntax" minOccurs="0" maxOccurs="1" type="syntax"/>
		<xs:element ref="result" minOccurs="0" maxOccurs="1"/>
	</xs:sequence>
	<xs:attribute name="number_cdm" type="xs:int"/>
</xs:complexType>

<xs:complexType name="parameter_lst">
	<xs:sequence>
		<xs:element name="number_cdm" minOccurs="1" maxOccurs="unbounded" type="parameter"/>		
	</xs:sequence>
</xs:complexType>

<xs:complexType name="parameter">
	<xs:sequence>
		<xs:element name="name_param" minOccurs="1" maxOccurs="1" type="xs:string"/>
		<xs:element name="label_param" minOccurs="1" maxOccurs="1" type="xs:string"/>
		<xs:element name="pos_label_X" minOccurs="1" maxOccurs="1" type="xs:int"/>
		<xs:element name="pos_label_Y" minOccurs="1" maxOccurs="1" type="xs:int"/>
		<xs:element name="dim_label_X" minOccurs="1" maxOccurs="1" type="xs:int"/>
		<xs:element name="dim_label_Y" minOccurs="1" maxOccurs="1" type="xs:int"/>
		<xs:element name="type_interface" minOccurs="1" maxOccurs="1" type="xs:string"/>
		<xs:element name="value_default" minOccurs="1" maxOccurs="1" type="xs:string"/>
		<xs:element name="pos_X" minOccurs="1" maxOccurs="1" type="xs:int"/>
		<xs:element name="pos_Y" minOccurs="1" maxOccurs="1" type="xs:int"/>
		<xs:element name="dim_X" minOccurs="1" maxOccurs="1" type="xs:int"/>
		<xs:element name="dim_Y" minOccurs="1" maxOccurs="1" type="xs:int"/>
		<xs:element name="value_lst" minOccurs="1" maxOccurs="1" type="value_lst"/>
	</xs:sequence>
</xs:complexType>

<xs:complexType name="value_lst">
	<xs:sequence>
		<xs:element name="label_lst" minOccurs="1" maxOccurs="1" type="xs:string"/>		
		<xs:element name="multilingual" minOccurs="1" maxOccurs="1" type="xs:boolean"/>
		<xs:element name="sep_multilingual" minOccurs="1" maxOccurs="1" type="xs:boolean"/>
		<xs:element name="value_list" minOccurs="1" maxOccurs="1" type="xs:string"/>
		<xs:element name="pos_X" minOccurs="1" maxOccurs="1" type="xs:int"/>
		<xs:element name="pos_Y" minOccurs="1" maxOccurs="1" type="xs:int"/>
		<xs:element name="dim_X" minOccurs="1" maxOccurs="1" type="xs:int"/>
		<xs:element name="dim_Y" minOccurs="1" maxOccurs="1" type="xs:int"/>
		<xs:element name="init_list" minOccurs="1" maxOccurs="1" type="xs:string"/>
	</xs:sequence>
</xs:complexType>

<xs:complexType name="syntax">
	<xs:sequence>
		<xs:element name="step" minOccurs="0" maxOccurs="unbounded" type="step"/>
	</xs:sequence>	
</xs:complexType>

<xs:complexType name="step">
	<xs:sequence>
		<xs:element name="keyword" minOccurs="1" maxOccurs="1" type="xs:string"/>
		<xs:element name="num_param" minOccurs="1" maxOccurs="1" type="xs:string"/>
		<xs:element name="expression" minOccurs="1" maxOccurs="1" type="xs:string"/>
		<xs:element name="separator" minOccurs="1" maxOccurs="1" type="xs:string"/>
		<xs:element name="required" minOccurs="1" maxOccurs="1" type="xs:boolean"/>
	</xs:sequence>	
</xs:complexType>

<xs:element name="result">
	<xs:complexType>
		<xs:sequence>
			<xs:element name="resultOK" minOccurs="0" maxOccurs="1" type="xs:string"/>
			<xs:element name="step" minOccurs="0" maxOccurs="1">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="name_method" minOccurs="0" maxOccurs="1" type="xs:string"/>
						<xs:element name="expr_begin" minOccurs="0" maxOccurs="1" type="xs:string"/>
						<xs:element name="expr_corp" minOccurs="0" maxOccurs="1" type="xs:string"/>
						<xs:element name="expr_end" minOccurs="0" maxOccurs="1" type="xs:string"/>
						<xs:element name="expr_concat" minOccurs="0" maxOccurs="1" type="xs:string"/>
						<xs:element name="expr_replace" minOccurs="0" maxOccurs="1" type="xs:string"/>
					</xs:sequence>
				</xs:complexType>			
			</xs:element>
		</xs:sequence>
	</xs:complexType>
</xs:element>

<!-- END: MT systems -->	
</xs:schema>

