<?xml version = "1.0" encoding = "UTF-8"?>
<!--Generated by Turbo XML 2.3.1.100. Conforms to w3c http://www.w3.org/2001/XMLSchema-->
<!-- Copyright 1998-2003, Lucas Software Engineering, Inc. -->
	
<schema xmlns = "http://www.w3.org/2001/XMLSchema"
	 targetNamespace = "http://www.lse.com/tinx/1.0"
	 xmlns:tinx = "http://www.lse.com/tinx/1.0"
	 xmlns:xsd = "http://www.w3.org/2001/XMLSchema"
	 version = "1.0"
	 elementFormDefault = "unqualified"
	 attributeFormDefault = "unqualified">

       <!-- Copyright 1998-2003, Lucas Software Engineering, Inc. -->

	<attributeGroup name = "sql_attr">
		<attribute name = "datasource" type = "string"/>
		<attribute name = "modify" type = "boolean"/>
	</attributeGroup>
	<attributeGroup name = "tinx_attr">
		<attribute name = "from" type = "string"/>
		<attribute name = "to" type = "string"/>
		<attribute name = "version" type = "string"/>
	</attributeGroup>
	<attributeGroup name = "id_attr">
		<attribute name = "id" type = "string"/>
	</attributeGroup>
	<attributeGroup name = "ref_attr">
		<attribute name = "ref" type = "string"/>
	</attributeGroup>
	<attributeGroup name = "lang_attr">
		<attribute name = "lang">
			<simpleType>
				<restriction base = "string">
					<enumeration value = "tinx"/>
					<enumeration value = "jython"/>
					<enumeration value = "javascript"/>
				</restriction>
			</simpleType>
		</attribute>
	</attributeGroup>
	<attributeGroup name = "comp_attr">
		<attribute name = "refLeft" type = "string">
			<annotation>
				<documentation>reference to a variable that will be used for extracting left path input</documentation>
			</annotation>
		</attribute>
		<attribute name = "left" type = "string">
			<annotation>
				<documentation>input path (either XML path or Row/Column location) that will be used to test if it exists or what the value is based on the operator / right hand side value.			
				
				</documentation>
			</annotation>
		</attribute>
		<attribute name = "opr" type = "tinx:opr_type">
			<annotation>
				<documentation>operator used for testing the condition found in the "when" element.  Values can be EQUAL,NOT_EQUAL, GREATER,LESSER,GREATER_EQUAL,LESSER_EQUAL .</documentation>
			</annotation>
		</attribute>
		<attribute name = "refRight" type = "string">
			<annotation>
				<documentation>reference to a variable that will be used for extracting right path input</documentation>
			</annotation>
		</attribute>
		<attribute name = "right" type = "string">
			<annotation>
				<documentation>input path of value that will be tested against left hand side
				
				</documentation>
			</annotation>
		</attribute>
		<attribute name = "value" type = "string">
			<annotation>
				<documentation>a constant used on the right hand side to test opr against the left hand side.
				
				</documentation>
			</annotation>
		</attribute>
	</attributeGroup>
	<attributeGroup name = "get_attr">
		<attribute name = "refSrc" type = "string">
			<annotation>
				<documentation>reference to a variable that will be used for extracting src path input</documentation>
			</annotation>
		</attribute>
		<attribute name = "src" type = "string">
			<annotation>
				<documentation>input path (either XML path or Row/Column location)</documentation>
			</annotation>
		</attribute>
	</attributeGroup>
	<attributeGroup name = "set_attr">
		<attribute name = "refDst" type = "string">
			<annotation>
				<documentation>reference to a variable that set based on dst output path</documentation>
			</annotation>
		</attribute>
		<attribute name = "dst" type = "string">
			<annotation>
				<documentation>output path (either XML path or Row/Column location)</documentation>
			</annotation>
		</attribute>
	</attributeGroup>
	<attributeGroup name = "srcdst_attr">
		<attribute name = "src" type = "string">
			<annotation>
				<documentation>input stream path (either XML path or Row/Column location) of operation</documentation>
			</annotation>
		</attribute>
		<attribute name = "dst" type = "string">
			<annotation>
				<documentation>output stream path (either XML path or Row/Column location) of operation</documentation>
			</annotation>
		</attribute>
	</attributeGroup>
	<attributeGroup name = "type_attr">
		<attribute name = "type" type = "string">
			<annotation>
				<documentation>type of call being made (Java Class, Java Object, JMS, TCP, HTTP).</documentation>
			</annotation>
		</attribute>
	</attributeGroup>
	<attributeGroup name = "value_attr">
		<attribute name = "value" type = "string">
			<annotation>
				<documentation>a constant used to default a set/get or provide a literal for a set/get action.</documentation>
			</annotation>
		</attribute>
	</attributeGroup>
	<attributeGroup name = "uri_attr">
		<attribute name = "uri" type = "string">
			<annotation>
				<documentation>resource location</documentation>
			</annotation>
		</attribute>
	</attributeGroup>
	<attributeGroup name = "path_attr">
		<attribute name = "path" type = "string">
			<annotation>
				<documentation>an XPath like (similar syntax) location of the node to manipulate</documentation>
			</annotation>
		</attribute>
	</attributeGroup>
	<attributeGroup name = "req_attr">
		<attribute name = "required" default = "false" type = "boolean">
			<annotation>
				<documentation>define if action should generate a value, it will use "value" attribute if applicable</documentation>
			</annotation>
		</attribute>
	</attributeGroup>
	
	<!-- ====== ELEMENTS ====== -->
	
	
	<!-- ELEMENT ACTION_TYPE -->
	
	<complexType name = "action_type">
		<complexContent>
			<extension base = "tinx:id_type">
				<sequence minOccurs = "0" maxOccurs = "unbounded">
					<element ref = "tinx:ns" minOccurs = "0" maxOccurs = "unbounded"/>
					<element ref = "tinx:datasource" minOccurs = "0" maxOccurs = "unbounded"/>
					<element ref = "tinx:script" minOccurs = "0" maxOccurs = "unbounded"/>
					<element ref = "tinx:call" minOccurs = "0" maxOccurs = "unbounded"/>
					<element ref = "tinx:sql" minOccurs = "0" maxOccurs = "unbounded"/>
					<element ref = "tinx:set" minOccurs = "0" maxOccurs = "unbounded"/>
					<element ref = "tinx:when" minOccurs = "0" maxOccurs = "unbounded"/>
					<element ref = "tinx:delete" minOccurs = "0" maxOccurs = "unbounded"/>
					<element ref = "tinx:move" minOccurs = "0" maxOccurs = "unbounded"/>
					<element ref = "tinx:foreach" minOccurs = "0" maxOccurs = "unbounded"/>
					<element ref = "tinx:variable" minOccurs = "0" maxOccurs = "unbounded"/>
					<element ref = "tinx:onError" minOccurs = "0"/>
				</sequence>
			</extension>
		</complexContent>
	</complexType>
	
	<!-- ELEMENT VAR_TYPE -->
	
	<complexType name = "var_type">
		<complexContent>
			<extension base = "tinx:action_type">
				<attributeGroup ref = "tinx:type_attr"/>
				<attributeGroup ref = "tinx:ref_attr"/>
			</extension>
		</complexContent>
	</complexType>
	
	<!-- ELEMENT CALL_TYPE -->
	
	<complexType name = "call_type">
		<annotation>
			<documentation>
			
			</documentation>
		</annotation>
		<sequence>
			<element ref = "tinx:param" minOccurs = "0" maxOccurs = "unbounded"/>
			<element ref = "tinx:result" minOccurs = "0"/>
		</sequence>
		<attributeGroup ref = "tinx:type_attr"/>
		<attribute name = "id" type = "string"/>
		<attributeGroup ref = "tinx:ref_attr"/>
	</complexType>
	
	<!-- ELEMENT REUSE_TYPE -->
	
	<complexType name = "id_type">
		<attributeGroup ref = "tinx:id_attr"/>
	</complexType>
	
	<!-- ELEMENT OPR_TYPE -->
	
	<simpleType name = "opr_type">
		<restriction base = "string">
			<enumeration value = "EQUAL"/>
			<enumeration value = "NOT_EQUAL"/>
			<enumeration value = "GREATER_EQUAL"/>
			<enumeration value = "LESSER_EQUAL"/>
			<enumeration value = "GREATER"/>
			<enumeration value = "LESSER"/>
			<enumeration value = "CONTAINS"/>
		</restriction>
	</simpleType>
	
	<!-- ELEMENT FORMAT -->
	
	<element name = "format">
		<complexType>
			<attribute name = "encoding" type = "string"/>
			<attribute name = "compress" type = "boolean"/>
			<attribute name = "header" type = "boolean"/>
		</complexType>
	</element>
	
	<!-- ELEMENT NS -->
	
	<element name = "ns">
		<annotation>
			<documentation>When working with XML, it is necessary to define the appropriate namespaces and associated prefixes that will be used in the incoming and outgoing XML documents and any mapping
that may be namespace specific.
			
			</documentation>
		</annotation>
		<complexType>
			<attribute name = "prefix" type = "string"/>
			<attribute name = "uri" type = "string"/>
		</complexType>
	</element>
	
	<!-- ELEMENT INCLUDE -->
	
	<element name = "include">
		<annotation>
			<documentation>This is used to pull in other tinx files so the map can be expanded and/or referenced.
			
			</documentation>
		</annotation>
		<complexType>
			<attribute name = "id" type = "string"/>
			<attributeGroup ref = "tinx:uri_attr"/>
		</complexType>
	</element>
	
	<!-- ELEMENT MAP -->
	
	<element name = "map"
		 final = "extension">
		<annotation>
			<documentation>map is used to define an action that will when a parse finds a match is will cause all subsequent actions to be executed.
			
			</documentation>
		</annotation>
		<complexType>
			<complexContent>
				<extension base = "tinx:action_type">
					<attributeGroup ref = "tinx:path_attr"/>
				</extension>
			</complexContent>
		</complexType>
	</element>
	
	<!-- ELEMENT SET -->
	
	<element name = "set">
		<annotation>
			<documentation>This moves the input src data to the output dst location.</documentation>
		</annotation>
		<complexType>
			<complexContent>
				<extension base = "tinx:id_type">
					<sequence>
						<element ref = "tinx:get" minOccurs = "0" maxOccurs = "unbounded"/>
						<element ref = "tinx:call" minOccurs = "0" maxOccurs = "unbounded"/>
					</sequence>
					<attributeGroup ref = "tinx:get_attr"/>
					<attributeGroup ref = "tinx:set_attr"/>
					<attributeGroup ref = "tinx:value_attr"/>
					<attribute name = "format" type = "string"/>
					<attribute name = "begin" type = "string"/>
					<attribute name = "size" type = "string"/>
					<attributeGroup ref = "tinx:req_attr"/>
					<attributeGroup ref = "tinx:type_attr"/>
				</extension>
			</complexContent>
		</complexType>
	</element>
	
	<!-- ELEMENT WHEN -->
	
	<element name = "when">
		<annotation>
			<documentation>This is like the if statement, when a condition "left" is found or applied to an operator ("opr") and a "right" side or "value", the location is based on the input data.
If the condition is true, then the actions inside the when are executed.					
			
			</documentation>
		</annotation>
		<complexType>
			<complexContent>
				<extension base = "tinx:action_type">
					<attributeGroup ref = "tinx:comp_attr"/>
				</extension>
			</complexContent>
		</complexType>
	</element>
	
	<!-- ELEMENT DELETE -->
	
	<element name = "delete">
		<annotation>
			<documentation>delete the src input node.
			
			</documentation>
		</annotation>
		<complexType>
			<attributeGroup ref = "tinx:srcdst_attr"/>
		</complexType>
	</element>
	
	<!-- ELEMENT MOVE-->
	
	<element name = "move">
		<annotation>
			<documentation>move the input from one location "src" to another "dst" destination.
			
			</documentation>
		</annotation>
		<complexType>
			<attributeGroup ref = "tinx:srcdst_attr"/>
		</complexType>
	</element>
	
	<!-- ELEMENT FOREACH -->
	
	<element name = "foreach">
		<annotation>
			<documentation>for every occurance limited by "min" and "max", execute the child actions.</documentation>
		</annotation>
		<complexType>
			<complexContent>
				<extension base = "tinx:action_type">
					<attributeGroup ref = "tinx:get_attr"/>
					<attributeGroup ref = "tinx:set_attr"/>
					<attribute name = "max" type = "integer"/>
				</extension>
			</complexContent>
		</complexType>
	</element>
	
	<!-- ELEMENT CALL -->
	
	<element name = "call">
		<annotation>
			<documentation>call a particular type of processing (Java Class, Java Object, JMS, TCP, HTTP) defined by a combination of class,method, and uri.  The id  is to provide human reference.
 If you want to reuse an existing defined call, ref can be used to re-invoke a call based on the id.
			
			</documentation>
		</annotation>
		<complexType>
			<complexContent>
				<extension base = "tinx:call_type"/>
			</complexContent>
		</complexType>
	</element>
	
	<!-- ELEMENT SCRIPT -->
	
	<element name = "script">
		<annotation>
			<documentation>
			
			</documentation>
		</annotation>
		<complexType mixed = "true">
			<sequence>
				<any namespace = "##any" processContents = "strict" minOccurs = "0"/>
			</sequence>
			<attributeGroup ref = "tinx:id_attr"/>
			<attributeGroup ref = "tinx:lang_attr"/>
			<attributeGroup ref = "tinx:uri_attr"/>
		</complexType>
	</element>
	
	<!-- ELEMENT PARAM -->
	
	<element name = "param">
		<annotation>
			<documentation>This represents a paramater that is passed into the call element type.
The sequence matches the order in the input parameters to the call.
			
			</documentation>
		</annotation>
		<complexType>
			<complexContent>
				<extension base = "tinx:var_type">
					<sequence>
						<element ref = "tinx:get" minOccurs = "0"/>
					</sequence>
				</extension>
			</complexContent>
		</complexType>
	</element>
	
	<!-- ELEMENT RESULT -->
	
	<element name = "result">
		<annotation>
			<documentation>The result identifies the return type of a call and the mapping of the data to the output document.
			
			</documentation>
		</annotation>
		<complexType>
			<complexContent>
				<extension base = "tinx:var_type"/>
			</complexContent>
		</complexType>
	</element>
	
	<!-- ELEMENT VARIABLE -->
	
	<element name = "variable"
		 final = "extension">
		<complexType>
			<complexContent>
				<extension base = "tinx:var_type"/>
			</complexContent>
		</complexType>
	</element>
	
	<!-- ELEMENT GET -->
	
	<element name = "get">
		<complexType>
			<simpleContent>
				<extension base = "string">
					<attributeGroup ref = "tinx:id_attr"/>
					<attributeGroup ref = "tinx:get_attr"/>
					<attributeGroup ref = "tinx:value_attr"/>
					<attribute name = "format" type = "string"/>
					<attribute name = "begin" type = "string"/>
					<attribute name = "size" type = "string"/>
					<attributeGroup ref = "tinx:req_attr"/>
				</extension>
			</simpleContent>
		</complexType>
	</element>
	
	<!-- ELEMENT ONERROR -->
	
	<element name = "onError">
		<complexType>
			<complexContent>
				<extension base = "tinx:action_type">
					<attribute name = "stop" default = "false" type = "boolean"/>
				</extension>
			</complexContent>
		</complexType>
	</element>
	
	<!-- ROOT ELEMENT TINX -->
	
	<element name = "tinx">
		<annotation>
			<documentation>TINX is a transformation action processor.  TINX stands for "Tinx Is Not Xslt. Created, designed and produced by Lucas Software Engineering, Inc.  http://www.lse.com.                 
			
			</documentation>
		</annotation>
		<complexType>
			<sequence minOccurs = "0" maxOccurs = "unbounded">
				<element ref = "tinx:format" minOccurs = "0"/>
				<element ref = "tinx:ns" minOccurs = "0" maxOccurs = "unbounded"/>
				<element ref = "tinx:script" minOccurs = "0" maxOccurs = "unbounded"/>
				<element ref = "tinx:datasource" minOccurs = "0" maxOccurs = "unbounded"/>
				<element ref = "tinx:sql" minOccurs = "0" maxOccurs = "unbounded"/>
				<element ref = "tinx:include" minOccurs = "0" maxOccurs = "unbounded"/>
				<sequence>
					<element ref = "tinx:map" maxOccurs = "unbounded"/>
				</sequence>
			</sequence>
			<attributeGroup ref = "tinx:tinx_attr"/>
		</complexType>
	</element>

	<!-- ELEMENT DATASOURCE -->

	<element name = "datasource">
		<complexType>
			<choice>
				<sequence>
					<element ref = "tinx:jndi"/>
					<element ref = "tinx:context" minOccurs = "0"/>
				</sequence>
				<sequence>
					<element ref = "tinx:driver"/>
					<element ref = "tinx:user" minOccurs = "0"/>
					<element ref = "tinx:password" minOccurs = "0"/>
					<element ref = "tinx:url" minOccurs = "0"/>
				</sequence>
			</choice>
			<attributeGroup ref = "tinx:id_attr"/>
		</complexType>
	</element>

	<!-- ELEMENT SQL -->

	<element name = "sql">
		<complexType>
			<simpleContent>
				<extension base = "string">
					<attributeGroup ref = "tinx:id_attr"/>
					<attributeGroup ref = "tinx:sql_attr"/>
				</extension>
			</simpleContent>
		</complexType>
	</element>

	<!-- ELEMENT JNDI  -->
	<element name = "jndi" type = "string"/>
	<!-- ELEMENT CONTEXT -->
	<element name = "context" type = "string"/>
	<!-- ELEMENT DRIVER  -->
	<element name = "driver" type = "string"/>
	<!-- ELEMENT USER  -->
	<element name = "user" type = "string"/>
	<!-- ELEMENT PASSWORD  -->
	<element name = "password" type = "string"/>
	<!-- ELEMENT URL  -->
	<element name = "url" type = "string"/>
</schema>
