TADC XML Schema

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<!-- Date FORMAT YYYYMMDD -->
	<xs:simpleType name="dateType">
		<xs:restriction base="xs:string">
			<xs:length value="8" />
		<!-- This allows year between 2000 - 9999 , month 01 to 09, days 01 - 09  -->
			   <xs:pattern value="([2-9][0-9][0-9][0-9]0[1-9]0[1-9])" />

		<!-- This allows year between 2000 - 9999 , month 01 to 09, days 10 - 19  -->
			   <xs:pattern value="([2-9][0-9][0-9][0-9]0[1-9]1[0-9])" />

		<!-- This allows year between 2000 - 9999 , month 01 , days 20 - 29  -->
			   <xs:pattern value="([2-9][0-9][0-9][0-9]012[0-9])" />

		<!-- This allows year between 2000 - 9999 , month 02 , days 20 - 28  -->
			   <xs:pattern value="([2-9][0-9][0-9][0-9]022[0-8])" />

		<!-- This allows year between 2000 - 9999 , month 03 to 09 , days 20 - 29  -->
			   <xs:pattern value="([2-9][0-9][0-9][0-9]0[3-9]2[0-9])" />

		<!-- This allows year between 2000 - 9999 , month 10-12 , days 01 - 09  -->
			   <xs:pattern value="([2-9][0-9][0-9][0-9]1[0-2]0[1-9])" />

		<!-- This allows year between 2000 - 9999 , month 10-12 , days 10 - 19  -->
			   <xs:pattern value="([2-9][0-9][0-9][0-9]1[0-2]1[0-9])" />

		<!-- This allows year between 2000 - 9999 , month 10-12 , days 20 - 29  -->
			   <xs:pattern value="([2-9][0-9][0-9][0-9]1[0-2]2[0-9])" />

		<!-- This allows year between 2000 - 9999 , day 31 for the corresponding months  -->
			   <xs:pattern value="([2-9][0-9][0-9][0-9](01|03|05|07|08|10|12)3[0-1])" />

		<!-- This allows year between 2000 - 9999 , day 30 for the corresponding months  -->
			   <xs:pattern value="([2-9][0-9][0-9][0-9](04|06|09|11)30)" />

		<!-- This allows day 29 for feb for the corresponding years  -->
			   <xs:pattern value="([2-9][0-9](00|04|08|12|16|20|24|28|32|36|40)0229)" />
			   <xs:pattern value="([2-9][0-9](44|48|52|56|60|64|68|72|76|80)0229)" />
			   <xs:pattern value="([2-9][0-9](84|88|92|96)0229)" />
		</xs:restriction>
	</xs:simpleType>

<!-- Time FORMAT HHMMSS -->
	<xs:simpleType name="timeType">
		<xs:restriction base="xs:string">
			<xs:length value="6" />
			<xs:pattern value="([0-1][0-9][0-5][0-9][0-5][0-9])" />
			<xs:pattern value="(2[0-3][0-5][0-9][0-5][0-9])" />
		</xs:restriction>
	</xs:simpleType>

<!-- Y/N indicator -->
	<xs:simpleType name="strYNindType">
		<xs:restriction base="xs:string">
	    		<xs:enumeration value="Y"/>
  		        <xs:enumeration value="N"/>
	    		<xs:enumeration value="y"/>
  		        <xs:enumeration value="n"/>
		</xs:restriction>
	</xs:simpleType>

<!-- String FORMAT, up to 255 bytes  -->
	<xs:simpleType name="strMax255Type">
		<xs:restriction base="xs:string">
			<xs:minLength value="0" />
			<xs:maxLength value="255" />
		</xs:restriction>
	</xs:simpleType>

<!-- String FORMAT, up to 50 bytes  -->
	<xs:simpleType name="strMax50Type">
		<xs:restriction base="xs:string">
			<xs:minLength value="0" />
			<xs:maxLength value="50" />
		</xs:restriction>
	</xs:simpleType>

<!-- String FORMAT, up to 30 bytes  -->
	<xs:simpleType name="strMax30Type">
		<xs:restriction base="xs:string">
			<xs:minLength value="0" />
			<xs:maxLength value="30" />
		</xs:restriction>
	</xs:simpleType>

<!-- String FORMAT, up to 20 bytes  -->
	<xs:simpleType name="strMax20Type">
		<xs:restriction base="xs:string">
			<xs:minLength value="0" />
			<xs:maxLength value="20" />
		</xs:restriction>
	</xs:simpleType>


<!-- String FORMAT, 3 bytes  -->
	<xs:simpleType name="strFull3Type">
		<xs:restriction base="xs:string">
		    <xs:pattern value="[A-Za-z0-9]{0}|[A-Za-z0-9]{3}"/>
		</xs:restriction>
	</xs:simpleType>

<!-- String FORMAT, 5 bytes  -->
	<xs:simpleType name="strFull5Type">
		<xs:restriction base="xs:string">
			<xs:length value="5" />
		</xs:restriction>
	</xs:simpleType>

<!-- String FORMAT, max 3 bytes  -->
	<xs:simpleType name="strMax3Type">
		<xs:restriction base="xs:string">
			<xs:minLength value="0" />
			<xs:maxLength value="3" />
		</xs:restriction>
	</xs:simpleType>

<!-- Number FORMAT, 2 bytes -->
	<xs:simpleType name="numFull2Type">
    		<xs:restriction base="xs:string">
	 		<xs:length value="2" />
			<xs:pattern value="([0-9]{2})" />
		</xs:restriction>
	</xs:simpleType>

<!-- Number FORMAT, max 2 bytes -->
	<xs:simpleType name="numMax2Type">
      		<xs:restriction base="xs:string">
    			<xs:minLength value="1" />
    			<xs:maxLength value="2" />
    			<xs:pattern value="([0-9]*)" />
  		</xs:restriction>
	</xs:simpleType>

<!-- Number FORMAT, max 2 bytes, values 1 to 50 -->
	<xs:simpleType name="numMax2Type2">
      		<xs:restriction base="xs:string">
    			<xs:minLength value="1" />
    			<xs:maxLength value="2" />
			<xs:pattern value="([0-9])" />
			<xs:pattern value="([0-4][0-9])" />
			<xs:pattern value="(50)" />
  		</xs:restriction>
	</xs:simpleType>

<!-- Number FORMAT, max 3 bytes -->
	<xs:simpleType name="numMax3Type">
      		<xs:restriction base="xs:string">
    			<xs:minLength value="1" />
    			<xs:maxLength value="3" />
    			<xs:pattern value="([0-9]*)" />
  		</xs:restriction>
	</xs:simpleType>

<!-- Number FORMAT, 4 bytes -->
	<xs:simpleType name="numFull4Type">
    		<xs:restriction base="xs:string">
	 		<xs:length value="4" />
			<xs:pattern value="([0-9]{4})" />
		</xs:restriction>
	</xs:simpleType>

<!-- Number FORMAT, max 5 bytes -->
	<xs:simpleType name="numMax5Type">
      		<xs:restriction base="xs:string">
    			<xs:minLength value="1" />
    			<xs:maxLength value="5" />
    			<xs:pattern value="([0-9]*)" />
  		</xs:restriction>
	</xs:simpleType>

<!-- Number FORMAT, max 8 bytes -->
	<xs:simpleType name="numMax8Type">
      		<xs:restriction base="xs:string">
    			<xs:minLength value="1" />
    			<xs:maxLength value="8" />
    			<xs:pattern value="([0-9]*)" />
  		</xs:restriction>
	</xs:simpleType>

<!-- Number FORMAT, 9 bytes -->
	<xs:simpleType name="numFull9Type">
    		<xs:restriction base="xs:string">
	 		<xs:length value="9" />
			<xs:pattern value="([0-9]{9})" />
		</xs:restriction>
	</xs:simpleType>

<!-- Number FORMAT, 9 bytes, non-zero -->
	<xs:simpleType name="numFull9NonZeroType">
		<xs:restriction base="xs:string">
	 		<xs:length value="9" />
			<xs:pattern value="(([0]{8}[1-9]))" />
			<xs:pattern value="([1-9][0-9]{8})" />
			<xs:pattern value="([0-9][1-9][0-9]{7})" />
			<xs:pattern value="([0-9]{2}[1-9][0-9]{6})" />
			<xs:pattern value="([0-9]{3}[1-9][0-9]{5})" />
			<xs:pattern value="([0-9]{4}[1-9][0-9]{4})" />
			<xs:pattern value="([0-9]{5}[1-9][0-9]{3})" />
			<xs:pattern value="([0-9]{6}[1-9][0-9]{2})" />
			<xs:pattern value="([0-9]{7}[1-9][0-9]{1})" />
			<xs:pattern value="([1-9]{8}[0-9])" />
		</xs:restriction>	
	</xs:simpleType>

<!-- Number FORMAT, 8 bytes, non-zero -->
	<xs:simpleType name="numFull8NonZeroType">
		<xs:restriction base="xs:string">
	 		<xs:length value="8" />
			<xs:pattern value="(([0]{7}[1-9]))" />
			<xs:pattern value="([1-9][0-9]{7})" />
			<xs:pattern value="([0-9][1-9][0-9]{6})" />
			<xs:pattern value="([0-9]{2}[1-9][0-9]{5})" />
			<xs:pattern value="([0-9]{3}[1-9][0-9]{4})" />
			<xs:pattern value="([0-9]{4}[1-9][0-9]{3})" />
			<xs:pattern value="([0-9]{5}[1-9][0-9]{2})" />
			<xs:pattern value="([0-9]{6}[1-9][0-9]{1})" />
			<xs:pattern value="([1-9]{7}[0-9])" />
		</xs:restriction>	
	</xs:simpleType>

<!-- Number FORMAT, max 12 bytes -->
	<xs:simpleType name="numMax12Type">
      		<xs:restriction base="xs:string">
    			<xs:minLength value="1" />
    			<xs:maxLength value="12" />
    			<xs:pattern value="([0-9]*)" />
  		</xs:restriction>
	</xs:simpleType>

<!-- Number FORMAT, 13 bytes -->
	<xs:simpleType name="numFull13Type">
		<xs:restriction base="xs:string">
    			<xs:length value="13" />
   			<xs:pattern value="([0-9]{13})" />
  		</xs:restriction>
	</xs:simpleType>

<!-- Number FORMAT, max 15 bytes -->
	<xs:simpleType name="numMax15Type">
    		<xs:restriction base="xs:string">
    			<xs:minLength value="1" />
    			<xs:maxLength value="15" />
    			<xs:pattern value="([0-9]*)" />
		</xs:restriction>
	</xs:simpleType>

<!-- Number FORMAT, 15 bytes -->
	<xs:simpleType name="numFull15Type">
    		<xs:restriction base="xs:string">
	 		<xs:length value="15" />
			<xs:pattern value="([0-9]{15})" />
		</xs:restriction>
	</xs:simpleType>

<!-- Debit/Credit FORMAT  -->
	<xs:simpleType name="dbCrType">
 		<xs:restriction base="xs:string">
	  		<xs:enumeration value="C" />
	     		<xs:enumeration value="D" />
	   	</xs:restriction>
</xs:simpleType>
    
<!-- Message -->
	<xs:element name="Message">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="VersNbr"   />
				<xs:element ref="SubmrId"   />
				<xs:element ref="MsgSeqNbr" />
				<xs:element ref="CreateDt" minOccurs="0"  maxOccurs="1" />
				<xs:element ref="CreateTm" minOccurs="0"  maxOccurs="1" />
				<xs:element ref="ExprDt" minOccurs="0"  maxOccurs="1" />
				<xs:element ref="TravelBatch" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element ref="SettleBatch" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element ref="MessageTrailer" />
			</xs:sequence>	
		</xs:complexType>
	</xs:element>

<!-- Version No --> 
	<xs:element name="VersNbr">
		<xs:simpleType>
			<xs:restriction base="xs:int">
				<xs:enumeration value="201000001"/>
			</xs:restriction>
		</xs:simpleType>
	</xs:element> 


<!-- submitter ID -->
	<xs:element name="SubmrId">
		<xs:simpleType>
			<xs:restriction base="xs:string">
				<xs:minLength value="1" />
				<xs:maxLength value="11" />
			</xs:restriction>
		</xs:simpleType>
	</xs:element>

<!-- Message Seq No -->
        <xs:element name="MsgSeqNbr" type="numFull9NonZeroType" />

<!-- Create date -->
        <xs:element name="CreateDt"  type="dateType"  />

<!-- Create Time -->
        <xs:element name="CreateTm"  type="timeType"  />

<!-- Expiry date -->
        <xs:element name="ExprDt"    type="dateType" />

<!-- Travel Batch -->
	<xs:element name="TravelBatch">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="BtchSeqNbr" /> 
				<xs:element ref="ProviderNm" />
				<xs:element ref="TrvlBtchCurrCd"/>
				<xs:element ref="TravelTran" minOccurs="1"  maxOccurs="unbounded"/>
				<xs:element ref="BatchTrailer" /> 
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	 
<!-- Batch seq number -->
        <xs:element name="BtchSeqNbr" type="numFull8NonZeroType" />

<!-- Provider name -->
	<xs:element name="ProviderNm" type="xs:string" />	

<!-- Currency code -->
	<xs:element name="TrvlBtchCurrCd"  type="strFull3Type" />

<!-- Travel Transaction -->
	<xs:element name="TravelTran">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="TransSeqNbr"/>
				<xs:element ref="TransDt" />
				<xs:element ref="TransTm"    minOccurs="0"  maxOccurs="1" />
				<xs:element ref="CancRsnTx"  minOccurs="0"  maxOccurs="1" />
				<xs:element ref="BkgSrceCd"  minOccurs="0"  maxOccurs="1" />
				<xs:element ref="MediaCd"    minOccurs="0"  maxOccurs="1" />
				<xs:element ref="TMCDossierNbr" minOccurs="0" maxOccurs="1" />
				<xs:element ref="ProdDesc"  minOccurs="0"  maxOccurs="1" />
				<xs:element ref="OrderNbr"  minOccurs="0"  maxOccurs="1" />
				<xs:element ref="GDSCd"     minOccurs="0"  maxOccurs="1" />
				<xs:element ref="CommodityCd" />
				<xs:element ref="Account"  />
				<xs:element ref="Amount"/>
				<xs:element ref="Trip"/>

	<!-- Supplier - This supplier is declared locally as the two tags SplrMtchCd and SplrMtchDa can present only for travel transactions -->
				<xs:element name="Supplier">
					<xs:complexType>
						<xs:sequence>
							<xs:element ref="SuplrNm"/>
							<xs:element ref="VATNbr"      minOccurs="0" maxOccurs="1" />
							<xs:element ref="SplrMtchCd"  minOccurs="0" maxOccurs="1" />
							<xs:element ref="SplrMtchDa"  minOccurs="0" maxOccurs="1" />
							<xs:element ref ="SuplrLegalNm" minOccurs="0" maxOccurs="1" />
							<xs:element ref ="SuplrAddress" minOccurs="0" maxOccurs="1" />
						</xs:sequence>
					</xs:complexType>
				</xs:element>

				<xs:element ref="Provider" />
				<xs:element ref="BookingSystem" minOccurs="0"  maxOccurs="1" />
				<xs:element ref="CustRefGrp" minOccurs="0"  maxOccurs="1"/>
				<xs:element ref="AddAmountGrp" minOccurs="0" maxOccurs="1"/>
				<xs:element ref="ElementGrp" minOccurs="0"  maxOccurs="1"/>
				<xs:element ref="Commodity" minOccurs="0"  maxOccurs="1" />
			</xs:sequence>
		</xs:complexType>
	</xs:element>

<!-- Transaction Seq No -->
        <xs:element name="TransSeqNbr" type="numFull9NonZeroType" />

<!-- Transaction date -->
        <xs:element name="TransDt"   type="dateType"  />

<!-- Transacton Time -->
        <xs:element name="TransTm"   type="timeType"  />

<!-- Cancellation reason -->
        <xs:element name="CancRsnTx" type="strMax255Type"  />

<!-- Background Source Code -->
	<xs:element name="BkgSrceCd" > 
		<xs:simpleType>
		    <xs:restriction base="xs:string">
			    <xs:enumeration value="01"/>
			    <xs:enumeration value="02"/>
			    <xs:enumeration value="03"/>
			    <xs:enumeration value="04"/>
		    </xs:restriction>
		</xs:simpleType>
	</xs:element>

<!-- Media Code -->
	<xs:element name="MediaCd" > 
		<xs:simpleType>
			<xs:restriction base="xs:string">
			    <xs:enumeration value="01"/>
			    <xs:enumeration value="02"/>
			    <xs:enumeration value="03"/>
			    <xs:enumeration value="04"/>
			    <xs:enumeration value="05"/>
			</xs:restriction>
		</xs:simpleType>
	</xs:element>

<!-- Travel company dossier or folio number -->
	<xs:element name="TMCDossierNbr" type="strMax30Type" />

<!-- Product Description -->
        <xs:element name="ProdDesc" type="strMax255Type" />

<!-- Order Number -->
        <xs:element name="OrderNbr" type="strMax30Type" />

<!-- GDSCd Number -->
	<xs:element name="GDSCd" > 
		<xs:simpleType>
			<xs:restriction base="xs:string">
				<xs:pattern value="[A-Za-z0-9]{0}|[A-Za-z0-9]{4}"/>
			</xs:restriction>
		</xs:simpleType>
	</xs:element>

<!-- Commodity code -->
	<xs:element name="CommodityCd"  type="strFull3Type" /> 

<!-- Account -->
	<xs:element name="Account">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="AcctNbr"/>
				<xs:element ref="CrdExpDt" minOccurs="0"  maxOccurs="1" />
				<xs:element ref="ClientLegalNm" minOccurs="0"  maxOccurs="1" />
				<xs:element ref="ClientTaxNbr" minOccurs="0"  maxOccurs="1" />
				<xs:element ref="ClientAddress" minOccurs="0"  maxOccurs="1" />
			</xs:sequence>
		</xs:complexType>
	</xs:element>

<!-- Account Number -->
	<xs:element name="AcctNbr" type="numFull15Type" />

<!-- Card Expiry Date -->
	<xs:element name="CrdExpDt" > 
		<xs:simpleType>
			<xs:restriction base="xs:string">
  				<xs:pattern value="(0[1-9][0-9][0-9])" />
 				<xs:pattern value="(1[0-2][0-9][0-9])" />
			</xs:restriction>
	    	</xs:simpleType>
	</xs:element>

<!-- Client Legal Name -->
	<xs:element name="ClientLegalNm" type="strMax255Type" />

<!-- Client Legal Name -->
	<xs:element name="ClientTaxNbr" type="strMax255Type" />

<!-- Client Legal Name -->
	<xs:element name="ClientAddress" type="strMax255Type" />
	
<!-- Amount -->
	<xs:element name="Amount">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="TransAmt" />
				<xs:element ref="DbCrInd"    />
				<xs:element ref="OrigAmt"  minOccurs="0" maxOccurs="1"  />
				<xs:element ref="OrigCurrCd" minOccurs="0" maxOccurs="1" />
			</xs:sequence>
		</xs:complexType>
	</xs:element>

<!-- Transaction Amount -->
	<xs:element name="TransAmt" type="numMax12Type" />

<!-- Debit Credit Indicator -->
	<xs:element name="DbCrInd"  type="dbCrType" />

<!-- Original Amount -->
        <xs:element name="OrigAmt"  type="numMax12Type" />

<!-- Original Currency code -->
        <xs:element name="OrigCurrCd"  type="strFull3Type" />	

<!-- Trip -->
	<xs:element name="Trip">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="ConsultantNm" minOccurs="0" maxOccurs="1"/>
				<xs:element ref="DestNm"/>
				<xs:element ref="DprtDt"/>
				<xs:element ref="TvlrFirstNm"/>
				<xs:element ref="TvlrLastNm"/>
				<xs:element ref="TvlrPartyCnt" minOccurs="0" maxOccurs="1" />
			</xs:sequence>
		</xs:complexType>
	</xs:element>

<!-- Consultant name -->
	<xs:element name="ConsultantNm"  type="strMax255Type"  />

<!-- Destination name -->
	<xs:element name="DestNm" type="strMax255Type"  />

<!-- Destination date -->
	<xs:element name="DprtDt" type="dateType"  />

<!-- Traveller First name -->
	<xs:element name="TvlrFirstNm"  type="strMax255Type" />

<!-- Traveller Last name -->
	<xs:element name="TvlrLastNm"   type="strMax255Type" />

<!-- Traveller party count -->
	<xs:element name="TvlrPartyCnt" type="numMax3Type" />

<!-- Supplier - This supplier declaration is used only for settle transactions -->
	<xs:element name="Supplier">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="SuplrNm"/>
				<xs:element ref="VATNbr"  minOccurs="0" maxOccurs="1" />
				<xs:element ref ="SuplrLegalNm" minOccurs="0" maxOccurs="1" />
				<xs:element ref ="SuplrAddress" minOccurs="0" maxOccurs="1" />		
			</xs:sequence>
		</xs:complexType>
	</xs:element>

<!-- Supplier Name -->
	<xs:element name="SuplrNm"  type="strMax255Type"  />

<!-- VAT nbr -->
	<xs:element name="VATNbr"   type="strMax30Type" />

<!-- Supplier Matching Code -->
        <xs:element name="SplrMtchCd" type="strMax20Type"  />

<!-- Supplier Matching Data -->
        <xs:element name="SplrMtchDa" type="strMax255Type"  />

<!-- Supplier Legal Name -->
        <xs:element name="SuplrLegalNm" type="strMax255Type"  />

<!-- Supplier Address -->
        <xs:element name="SuplrAddress" type="strMax255Type"  />

<!-- Provider -->
	<xs:element name="Provider">
		<xs:complexType>
			<xs:all>
				<xs:element ref="IATANbr" minOccurs="0"  maxOccurs="1" />
				<xs:element ref="AmexAgcyNbr" />
				<xs:element ref="AmexOfcNbr" />
				<xs:element ref="ServCtrCd" minOccurs="0"  maxOccurs="1" />
				<xs:element ref="TrmnlId" minOccurs="0"  maxOccurs="1" />
				<xs:element ref="InvInd" />
				<xs:element ref="InvNbr" minOccurs="0" maxOccurs="1" />
				<xs:element ref="InvDt" minOccurs="0" maxOccurs="1" />
				<xs:element ref="CrNoteNbr" minOccurs="0"  maxOccurs="1" />
				<xs:element ref="CrNoteDt" minOccurs="0"  maxOccurs="1" />
				<xs:element ref="ProviderTransRefDa" minOccurs="0"  maxOccurs="1" />
				<xs:element ref="ProviderClntRefDa" minOccurs="0"  maxOccurs="1" />
				<xs:element ref="EInvLocTxt" minOccurs="0"  maxOccurs="1" />
				<xs:element ref="AssocInvNbr" minOccurs="0"  maxOccurs="1" />
			</xs:all>
		</xs:complexType>
	</xs:element>

<!-- IATA no -->
	<xs:element name="IATANbr"  type="numMax8Type" />

<!-- AMEX Agency no -->
	<xs:element name="AmexAgcyNbr">
		<xs:simpleType>
			<xs:restriction base="xs:string">
				<xs:length value="4" />
			</xs:restriction>
	    	 </xs:simpleType>
	</xs:element>

<!-- AMEX Office no -->
	<xs:element name="AmexOfcNbr">
		<xs:simpleType>
			<xs:restriction base="xs:string">
				<xs:length value="9" />
			</xs:restriction>
		</xs:simpleType>
	</xs:element>

<!-- Service centr -->
	<xs:element name="ServCtrCd"  type="strMax30Type"  />

<!-- Terminal no -->
	<xs:element name="TrmnlId"    type="strMax30Type"  />

<!-- Invoice indicator -->
	<xs:element name="InvInd">
			<xs:simpleType>
				<xs:restriction base="xs:string">
	    			<xs:enumeration value="Y"/>
  		        	<xs:enumeration value="N"/>
	    			<xs:enumeration value="y"/>
  		        	<xs:enumeration value="n"/>
	    			<xs:enumeration value="R"/>
  		        	<xs:enumeration value="r"/>  		        	
			</xs:restriction>
		</xs:simpleType>
	</xs:element>

<!-- Invoice number -->
	<xs:element name="InvNbr"     type="strMax30Type" />

<!-- Invoice Date -->
	<xs:element name="InvDt"      type="dateType" />

<!-- Credit note number -->
	<xs:element name="CrNoteNbr"  type="strMax30Type"  />

<!-- Credit note date -->
	<xs:element name="CrNoteDt"   type="dateType" />

<!-- Associated Invoice number -->
	<xs:element name="AssocInvNbr" type="strMax30Type" />

<!-- Provider transansaction referrence -->	
	<xs:element name="ProviderTransRefDa"  type="strMax30Type" />

<!-- Provider referrence for their client -->
	<xs:element name="ProviderClntRefDa"   type="strMax30Type" />

<!-- E-Invoice location text -->
	<xs:element name="EInvLocTxt"  type="strMax255Type" />				    	

<!-- Bookingsystem -->

	<xs:element name="BookingSystem">
		<xs:complexType>
			<xs:all>
				<xs:element ref="InvNbr" minOccurs="0" maxOccurs="1"    />
				<xs:element ref="InvDt"  minOccurs="0" maxOccurs="1"    />
				<xs:element ref="CrNoteNbr" minOccurs="0" maxOccurs="1" />
				<xs:element ref="CrNoteDt" minOccurs="0" maxOccurs="1"  />
				<xs:element ref="BkgRefDa" minOccurs="0" maxOccurs="1"  />
				<xs:element ref="AssocInvNbr" minOccurs="0" maxOccurs="1" />
			</xs:all>
		</xs:complexType>
	</xs:element>

<!-- Bookingsystem booking referrence -->
	<xs:element name="BkgRefDa"   type="strMax30Type" />
				   
<!-- Customer Reference Group -->
	<xs:element name="CustRefGrp">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="CustRef" minOccurs="0" maxOccurs="7"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>

<!-- Customer Reference -->
	<xs:element name="CustRef">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="CustRefNbr" />
				<xs:element ref="CustRefTypeCd" />
				<xs:element ref="CustRefTx" />
			</xs:sequence>
		</xs:complexType>
	</xs:element>

<!-- Customer reference number  -->
        <xs:element name="CustRefNbr">
		<xs:simpleType>
			<xs:restriction base="xs:string">
		    		<xs:enumeration value="01"/>
 				<xs:enumeration value="02"/>
				<xs:enumeration value="03"/>
				<xs:enumeration value="04"/>
				<xs:enumeration value="05"/>
				<xs:enumeration value="06"/>
				<xs:enumeration value="07"/>
 			</xs:restriction>
		</xs:simpleType>
	</xs:element>


<!-- Customer reference type cd  -->
	<xs:element name="CustRefTypeCd"  type="numFull4Type" />

<!-- Customer reference data  -->
	<xs:element name="CustRefTx"  type="strMax255Type" />
				            

<!-- Add Amount group  -->
	<xs:element name="AddAmountGrp">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="AddAmount" minOccurs="0" maxOccurs="30" />
			</xs:sequence>
		</xs:complexType>
	</xs:element>

<!-- Add Amount -->
	<xs:element name="AddAmount">
		<xs:complexType>
			<xs:all>
				<xs:element ref="AmtTypeCd" />
				<xs:element ref="AddAmt" />
				<xs:element ref="DbCrInd" />
				<xs:element ref="AddAmtRt" minOccurs="0" maxOccurs="1"/>
				<xs:element ref="AddAmtNet" minOccurs="0" maxOccurs="1"/>
				<xs:element ref="AddAmtTax" minOccurs="0" maxOccurs="1"/>
			</xs:all>
		</xs:complexType>
	</xs:element>

<!-- Amount type code -->
	<xs:element name="AmtTypeCd" type="strFull3Type" />

<!-- Add Amount -->
	<xs:element name="AddAmt"  type="numMax12Type" />

<!-- Add Amount Rate -->
	<xs:element name="AddAmtRt">
		<xs:simpleType>
			<xs:restriction base="xs:string">
				<xs:minLength value="1" />
				<xs:maxLength value="7" />
				<xs:pattern value="([0-9])*" />
				<xs:pattern value="([0-9])*[.]([0-9])*" />
				<xs:pattern value="([0-9])*[,]([0-9])*" />
				<xs:pattern value="[.]([0-9])*" />
				<xs:pattern value="[,]([0-9])*" />
			</xs:restriction>
		</xs:simpleType>
	</xs:element>
				 
<!-- Add Amount -->
	<xs:element name="AddAmtNet"  type="numMax12Type" />

<!-- Add Amount -->
	<xs:element name="AddAmtTax"  type="numMax12Type" />


<!-- Element group  -->
	<xs:element name="ElementGrp">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="Element" minOccurs="0" maxOccurs="99"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>

<!-- Element -->
	<xs:element name="Element">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="ElemNbr"/>
				<xs:element ref="ElemDesc"/>
				<xs:element ref="ElemRefCd"/>
				<xs:element ref="TourCd"  minOccurs="0" maxOccurs="1"/>
				<xs:element ref="StmtInd" minOccurs="0" maxOccurs="1"/>
				<xs:element ref="TvlrFirstNm" minOccurs="0" maxOccurs="1"/>
				<xs:element ref="TvlrLastNm" minOccurs="0" maxOccurs="1"/>
				<xs:element ref="ElemAmount" />
 				<xs:element ref="ElemAddAmountGrp" minOccurs="0" maxOccurs="1" />
 				<xs:element ref="ElemCustRefGrp" minOccurs="0" maxOccurs="1" />
			</xs:sequence>
		</xs:complexType>
	</xs:element>           

<!-- Element Number -->
	<xs:element name="ElemNbr"  type="numMax2Type" />

<!-- Element Desc -->
	<xs:element name="ElemDesc"  type="strMax255Type" />

<!-- Element Ref cd -->
	<xs:element name="ElemRefCd" type="strMax30Type" />	

<!-- Tour cd -->
	<xs:element name="TourCd"    type="strMax30Type" />

<!-- Statement Ind -->
	<xs:element name="StmtInd"  type="strYNindType" />

<!-- Element Amount  -->
	<xs:element name="ElemAmount">
	        <xs:complexType>
	        <xs:sequence>
			<xs:element ref="ElemAmt" />
			<xs:element ref="DbCrInd" />
			</xs:sequence>
		</xs:complexType>
	</xs:element>

<!-- Element Amount -->
	<xs:element name="ElemAmt"  type="numMax12Type" />

<!-- Element Additional Amount Grp -->
	<xs:element name="ElemAddAmountGrp">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="ElemAddAmount" minOccurs = "0" maxOccurs="30"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>

<!-- Element Add Amount -->
	<xs:element name="ElemAddAmount">
		<xs:complexType>
			<xs:all>
				<xs:element ref="AmtTypeCd"/>
				<xs:element ref="AddAmt"/>
				<xs:element ref="DbCrInd"/>
				<xs:element ref="AddAmtRt" minOccurs="0" maxOccurs="1"/>
				<xs:element ref="AddAmtNet" minOccurs="0" maxOccurs="1"/>
				<xs:element ref="AddAmtTax" minOccurs="0" maxOccurs="1"/>
			</xs:all>
		</xs:complexType>
	</xs:element>

<!--Element Cust Ref Grp -->
	<xs:element name="ElemCustRefGrp">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="ElemCustRef" minOccurs = "0" maxOccurs="7"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>

<!-- Customer Reference -->
	<xs:element name="ElemCustRef">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="CustRefNbr"/>
				<xs:element ref="CustRefTypeCd"/>
				<xs:element ref="CustRefTx"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>


<!-- Commodity starts -->
	<xs:element name="Commodity">
		<xs:complexType>
			<xs:choice>
				<xs:element ref="Air"/>
				<xs:element ref="CarHire"/>
				<xs:element ref="Hotel"/>
				<xs:element ref="Rail"/>
			</xs:choice>
		</xs:complexType>
	</xs:element>	

<!-- Air -->
	<xs:element name="Air">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="TktNbr"/>
				<xs:element ref="PNRLocCd" minOccurs="0" maxOccurs="1" />
				<xs:element ref="AirTransTypeCd"/>
				<xs:element ref="ExchTktNbr" minOccurs="0" maxOccurs="1"/>
				<xs:element ref="TktIssCityNm" minOccurs="0" maxOccurs="1"/>
				<xs:element ref="TktIssDt"/>
				<xs:element ref="ETktInd"/>
				<xs:element ref="FreqFlyerNbr" minOccurs="0" maxOccurs="1" />
				<xs:element ref="AirSectorGrp" />
			</xs:sequence>
		</xs:complexType>
	</xs:element>

<!-- Ticket number -->	            
	<xs:element name="TktNbr">
		<xs:simpleType>
			<xs:restriction base="xs:string">
				<xs:length value="14" />
			</xs:restriction>
		</xs:simpleType>
	</xs:element>

<!-- PNR location code -->	
	<xs:element name="PNRLocCd">
		<xs:simpleType>
			<xs:restriction base="xs:string">
				<xs:minLength value="1" />
				<xs:maxLength value="11" />
			</xs:restriction>
		</xs:simpleType>
 	</xs:element>

<!-- AIR Transaction type code -->
	<xs:element name="AirTransTypeCd"> 
        	<xs:simpleType>
			<xs:restriction base="xs:string">
		    	<xs:enumeration value="TKT"/>
 				<xs:enumeration value="REF"/>
				<xs:enumeration value="EXC"/>
				<xs:enumeration value="MSC"/>
			</xs:restriction>
		</xs:simpleType>
	</xs:element>

<!-- Exchange Ticket number -->
	<xs:element name="ExchTktNbr">
		<xs:simpleType>
			<xs:restriction base="xs:string">
				<xs:length value="14" />
			</xs:restriction>
		</xs:simpleType>
 	</xs:element>

<!-- Ticket issue city name -->
	<xs:element name="TktIssCityNm"  type="strMax30Type" />

<!-- Ticket issue date -->
	<xs:element name="TktIssDt"  type="dateType" />

<!-- E-Ticket indicator -->
	<xs:element name="ETktInd"  type="strYNindType" />

<!-- Freq flier number -->
	<xs:element name="FreqFlyerNbr"  type="strMax30Type" />

<!-- Air sector group -->
	<xs:element name="AirSectorGrp">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="AirSector" minOccurs="0" maxOccurs="50"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>

<!-- Air sector -->
	<xs:element name="AirSector">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="SctrNbr"/>
				<xs:element ref="SctrTypeCd"/>
				<xs:element ref="DprtAirCd"/>
				<xs:element ref="ArrAirCd"/>
				<xs:element ref="DprtDt"/>
				<xs:element ref="DprtTm" minOccurs="0" maxOccurs="1" />
				<xs:element ref="ArrDt"  minOccurs="0" maxOccurs="1" />
				<xs:element ref="ArrTm"  minOccurs="0" maxOccurs="1" />
				<xs:element ref="FlightNbr"/>
				<xs:element ref="SctrClassCd"/>
				<xs:element ref="SctrFareAmt" minOccurs="0" maxOccurs="1" />
				<xs:element ref="SctrFareBasisCd" minOccurs="0" maxOccurs="1" />
				<xs:element ref="StopOvrInd" minOccurs="0" maxOccurs="1" />

				<xs:element name="CarrierCd" minOccurs="0" maxOccurs="1" >  
					<xs:simpleType> 	
						<xs:restriction base="xs:string">  
						    <xs:minLength value="0" />
				            <xs:maxLength value="2" />
						</xs:restriction> 
					</xs:simpleType> 
				</xs:element>

				<xs:element ref="DomesticInd"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>

<!-- Sector number -->
	<xs:element name="SctrNbr"  type="numMax2Type2" />


<!-- Sector type cd -->
	<xs:element name="SctrTypeCd">
		<xs:simpleType>
			<xs:restriction base="xs:string">
		    	<xs:enumeration value="A"/>
			 	<xs:enumeration value="R"/>
				<xs:enumeration value="S"/>
				<xs:enumeration value="V"/>
			</xs:restriction>
		</xs:simpleType>
	</xs:element>

<!-- Departure air cd -->
	<xs:element name="DprtAirCd"  type="strFull3Type" />

<!-- Arrival air cd -->
	<xs:element name="ArrAirCd"  type="strFull3Type" />

<!-- Depart time -->
	<xs:element name="DprtTm"  type="timeType" />

<!-- Arrival Date -->
	<xs:element name="ArrDt"  type="dateType"  />
				         
<!-- Arrival time -->
        <xs:element name="ArrTm"  type="timeType" />

<!-- flight number -->
	<xs:element name="FlightNbr">
		<xs:simpleType>
			<xs:restriction base="xs:string">
				<xs:minLength value="1" />
				<xs:maxLength value="4" />
			</xs:restriction>
		</xs:simpleType> 		
	</xs:element>

<!-- Sector class code  -->
	<xs:element name="SctrClassCd">
		<xs:simpleType>
			<xs:restriction base="xs:string">
				<xs:minLength value="1" />
				<xs:maxLength value="2" />
			</xs:restriction>
		</xs:simpleType>
	</xs:element>

<!-- Sector fare amount -->
	<xs:element name="SctrFareAmt"  type="numMax12Type" />

<!-- Sector fare basis code  -->
	<xs:element name="SctrFareBasisCd">
		<xs:simpleType>
			<xs:restriction base="xs:string">
				<xs:minLength value="0" />
				<xs:maxLength value="15" />
			</xs:restriction>
		</xs:simpleType>
	</xs:element>

<!-- Stop over indicator -->
	<xs:element name="StopOvrInd">
		<xs:simpleType>
			<xs:restriction base="xs:string">
				<xs:enumeration value="X"/>
			 	<xs:enumeration value="O"/>
				<xs:enumeration value="x"/>
			 	<xs:enumeration value="o"/>
			</xs:restriction>
		</xs:simpleType>
	</xs:element>


<!-- Domestic Ind -->
	<xs:element name="DomesticInd"  type="strYNindType" />

<!-- Rail  -->
	<xs:element name="Rail">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="TktNbr" minOccurs="0" maxOccurs="1" />
				<xs:element ref="TktIssNm"/>
				<xs:element ref="TktIssCityNm" minOccurs="0" maxOccurs="1" />
				<xs:element ref="TktIssDt"/>
				<xs:element ref="RailSectorGrp" minOccurs="0" maxOccurs="1"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>

<!-- Ticket issuer name  -->
	<xs:element name="TktIssNm" type="strMax255Type" />

<!-- Rail Sector group -->
	<xs:element name="RailSectorGrp">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="RailSector" minOccurs="0" maxOccurs="50"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>

<!-- Rail Sector -->
	<xs:element name="RailSector">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="SctrNbr"/>
				<xs:element ref="DprtPtCd" minOccurs="0" maxOccurs="1"/>
				<xs:element ref="DprtPtNm" minOccurs="0" maxOccurs="1"/>
				<xs:element ref="ArrPtCd" minOccurs="0" maxOccurs="1"/>
				<xs:element ref="ArrPtNm" minOccurs="0" maxOccurs="1"/>
				<xs:element ref="DprtDt"/>
				<xs:element ref="ArrDt" minOccurs="0" maxOccurs="1"/>
				<xs:element ref="TrvlClassCd" minOccurs="0" maxOccurs="1"/>
				<xs:element ref="CarrierCd" minOccurs="0" maxOccurs="1"/>
				<xs:element ref="CarrierNm" minOccurs="0" maxOccurs="1"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>

<!-- Departure point cd -->
	<xs:element name="DprtPtCd"  type="strMax3Type" />

<!-- Departure Point name -->
	<xs:element name="DprtPtNm" type="strMax50Type" />

<!-- Arrival point code -->
	<xs:element name="ArrPtCd" type="strMax3Type" />

<!-- Arrival Point name -->
	<xs:element name="ArrPtNm"  type="strMax50Type" />

<!-- Travel class code -->
	<xs:element name="TrvlClassCd"  type="strMax30Type" />
			                       
<!-- Rail Carrier code, length 3 -->
	<xs:element name="CarrierCd" >  
		<xs:simpleType> 	
			<xs:restriction base="xs:string">  
				<xs:minLength value="1" />  
				<xs:maxLength value="3" />  
			</xs:restriction> 
		</xs:simpleType> 
	</xs:element> 

<!-- Rail carrier name -->
	<xs:element name="CarrierNm"   type="strMax255Type" />
					
<!-- Hotel   --> 
	<xs:element name="Hotel">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="ChkInDt"/>
				<xs:element ref="ChkInTm"  minOccurs="0" maxOccurs="1" />
				<xs:element ref="ChkOutDt"  minOccurs="0" maxOccurs="1" />
				<xs:element ref="ChkOutTm"  minOccurs="0" maxOccurs="1" />
				<xs:element ref="FolioNbr"/>
				<xs:element ref="HotelChrgTypeCd"  minOccurs="0" maxOccurs="1" />
				<xs:element ref="HotelChrgTypeCat"  minOccurs="0" maxOccurs="1" />
				<xs:element ref="RoomRateGrp"  minOccurs="0" maxOccurs="1"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>

<!-- Check in date --> 
	<xs:element name="ChkInDt" type="dateType" />

<!-- check in time  --> 
	<xs:element name="ChkInTm"  type="timeType"  />
				           
<!-- check out date  --> 
     <xs:element name="ChkOutDt" type="dateType"  />

<!-- check out time  --> 
	<xs:element name="ChkOutTm" type="timeType"  />

<!-- Folio number  --> 
	<xs:element name="FolioNbr">
		<xs:simpleType>
			<xs:restriction base="xs:string">
				<xs:length value="12" />
			</xs:restriction>
		</xs:simpleType>
 	</xs:element>

<!-- Hotel charge type code  --> 
	<xs:element name="HotelChrgTypeCd" >
		<xs:simpleType>
			<xs:restriction base="xs:string">
				<xs:enumeration value="0"/>
			 	<xs:enumeration value="1"/>
			 	<xs:enumeration value="2"/>
			 	<xs:enumeration value="3"/>
			 	<xs:enumeration value="4"/>
			 	<xs:enumeration value="5"/>
			 	<xs:enumeration value="6"/>
			 	<xs:enumeration value="7"/>
			</xs:restriction>
		</xs:simpleType>
	</xs:element>

<!-- Hotel Charge type cat --> 
	<xs:element name="HotelChrgTypeCat">
		<xs:simpleType>
			<xs:restriction base="xs:string">
			 	<xs:enumeration value="1"/>
			 	<xs:enumeration value="2"/>
			 	<xs:enumeration value="3"/>
			</xs:restriction>
		</xs:simpleType>
	</xs:element>

<!-- Room Rate Group --> 
	<xs:element name="RoomRateGrp">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="RoomRate" minOccurs="1" maxOccurs="50" />
			</xs:sequence>
		</xs:complexType>
	</xs:element>

<!-- Room Rate -->
	<xs:element name="RoomRate">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="RateNbr"/>
				<xs:element ref="DayRate"/>
				<xs:element ref="NightCnt"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>


<!-- Rate Number -->
	<xs:element name="RateNbr"  type="numMax2Type2" />

<!-- Day Rate -->
	<xs:element name="DayRate"  type="numMax12Type" />

<!-- Night Count -->
	<xs:element name="NightCnt"  type="numMax2Type" />

<!-- Car Hire -->  

	<xs:element name="CarHire">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="PickUpDt"/>
				<xs:element ref="PickUpLocNm"  minOccurs="0" maxOccurs="1" />
				<xs:element ref="PickUpCityNm"/>
				<xs:element ref="PickUpRgnCd"  minOccurs="0" maxOccurs="1" />
				<xs:element ref="PickUpCtryCd"  minOccurs="0" maxOccurs="1"/>
				<xs:element ref="DropOffDt"/>
				<xs:element ref="DropOffLocNm"  minOccurs="0" maxOccurs="1" />
				<xs:element ref="DropOffCityNm"/>
				<xs:element ref="DropOffRgnCd"  minOccurs="0" maxOccurs="1" />
				<xs:element ref="DropOffCtryCd"  minOccurs="0" maxOccurs="1" />
				<xs:element ref="CarRentAgrNbr" minOccurs="0" maxOccurs="1" />
				<xs:element ref="RentDistNbr"  minOccurs="0" maxOccurs="1" />
				<xs:element ref="RenDistUnitCd" minOccurs="0" maxOccurs="1"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>

<!-- Pick up Date -->
	<xs:element name="PickUpDt" type="dateType"  />

<!-- Pick up location name -->
	<xs:element name="PickUpLocNm" type="strMax50Type" />

<!-- Pick up city name  -->
	<xs:element name="PickUpCityNm" type="strMax50Type" />

<!-- Pick up Region cd  -->
	<xs:element name="PickUpRgnCd" type="strFull3Type" />

<!-- Pick up country cd  -->
	<xs:element name="PickUpCtryCd" type="strFull3Type" />


<!-- Drop off Date  -->
	<xs:element name="DropOffDt" type="dateType" />

<!-- Drop off location name  -->
	<xs:element name="DropOffLocNm"  type="strMax50Type" />
			
<!-- Drop off city name -->
	<xs:element name="DropOffCityNm" type="strMax50Type" />

<!-- Drop off Region cd  -->
	<xs:element name="DropOffRgnCd" type="strFull3Type" />

<!-- Drop off country cd  -->
	<xs:element name="DropOffCtryCd" type="strFull3Type" />

<!-- Car rent Agreement no -->
	<xs:element name="CarRentAgrNbr" type="strMax30Type" />

<!-- Rent Dist number --> 
	<xs:element name="RentDistNbr"  type="numMax5Type" />

<!-- Rent Dist Unit Cd -->
	<xs:element name="RenDistUnitCd" >
		<xs:simpleType>
			<xs:restriction base="xs:string">
		    		<xs:enumeration value="K"/>
			 	<xs:enumeration value="M"/>
			</xs:restriction>
		</xs:simpleType>
 	</xs:element>


<!-- Batch Trailer  -->  

	<xs:element name="BatchTrailer">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="BtchDbCnt"/>
				<xs:element ref="BtchDbTot"/>
				<xs:element ref="BtchCrCnt"/>
				<xs:element ref="BtchCrTot"/>
				<xs:element ref="BtchCnt"/>
				<xs:element ref="BtchTot"/>
				<xs:element ref="BtchDbCrInd"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>


<!-- Batch Debit count -->                        
	<xs:element name="BtchDbCnt"    type="numFull9Type"  />	

<!-- Batch Debit total -->                        
	<xs:element name="BtchDbTot"    type="numFull13Type"    />

<!-- Batch credit count -->                        
	<xs:element name="BtchCrCnt"    type="numFull9Type"  />

<!-- Batch credit total -->                        
	<xs:element name="BtchCrTot"    type="numFull13Type"    />

<!-- Batch count -->                        
	<xs:element name="BtchCnt"      type="numFull9Type"  />

<!-- Batch total -->                        
	<xs:element name="BtchTot"      type="numFull13Type"    />

<!-- Batch Debit credit indicator -->                        
	<xs:element name="BtchDbCrInd"  type="dbCrType"   />
                         
<!-- Settle Batch -->
	<xs:element name="SettleBatch">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="BtchSeqNbr" />
				<xs:element ref="ProviderNm" />
				<xs:element ref="SENbr" />
				<xs:element ref="SOCRefNbr" minOccurs="0" maxOccurs="1" />
				<xs:element ref="SECurrCd" />
				<xs:element ref="SettleTran" minOccurs="1" maxOccurs="unbounded"/>
				<xs:element ref="BatchTrailer" />
			</xs:sequence>
		</xs:complexType>
	</xs:element>

<!-- SE number  -->
	<xs:element name="SENbr"  type="numMax15Type" />

<!-- SOC Ref No -->
	<xs:element name="SOCRefNbr"  type="numMax15Type" />

<!-- Must be a valid ISO Currency Code.  -->
	<xs:element name="SECurrCd"   type="strFull3Type" />
 		 
<!-- Settle Transaction -->
	<xs:element name="SettleTran">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="TransSeqNbr"/>
				<xs:element ref="TransDt" />
				<xs:element ref="TransTm"    minOccurs="0" maxOccurs="1" />
				<xs:element ref="CancRsnTx"  minOccurs="0"  maxOccurs="1" />
				<xs:element ref="BkgSrceCd"  minOccurs="0"  maxOccurs="1" />
				<xs:element ref="MediaCd"    minOccurs="0"  maxOccurs="1" />
				<xs:element ref="TMCDossierNbr"  minOccurs="0" maxOccurs="1" />
				<xs:element ref="ProdDesc"  minOccurs="0"  maxOccurs="1" />
				<xs:element ref="OrderNbr"  minOccurs="0"  maxOccurs="1" />
				<xs:element ref="GDSCd"     minOccurs="0"  maxOccurs="1" />
				<xs:element ref="CommodityCd" />
				<xs:element ref="Account" />
				<xs:element ref="Auth" minOccurs="0"  maxOccurs="1"  />
				<xs:element ref="Amount" />
				<xs:element ref="Trip" />
				<xs:element ref="Supplier" />
				<xs:element ref="Provider" />
				<xs:element ref="BookingSystem" minOccurs="0" maxOccurs="1" />
				<xs:element ref="CustRefGrp" minOccurs="0"  maxOccurs="1"/>
				<xs:element ref="AddAmountGrp" minOccurs="0" maxOccurs="1"/>
				<xs:element ref="ElementGrp" minOccurs="0"  maxOccurs="1"/>
				<xs:element ref="TxnLinkGrp" minOccurs="0" maxOccurs="1" />
				<xs:element ref="Commodity" minOccurs="0" maxOccurs="1" />
			</xs:sequence>
		</xs:complexType>
	</xs:element>


<!-- Auth -->
	<xs:element name="Auth">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="AuthCd" minOccurs="0"  maxOccurs="1"/>
				<xs:element ref="POSCd" minOccurs="0"  maxOccurs="1"/>
				<xs:element ref="SELocnId" minOccurs="0"  maxOccurs="1"/>
				<xs:element ref="SEContactDa" minOccurs="0"  maxOccurs="1"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>

<!-- Auth Code -->
	<xs:element name="AuthCd">
		<xs:simpleType>
			<xs:restriction base="xs:string">
				<xs:pattern value="(([a-zA-Z0-9][a-zA-Z0-9])|[a-zA-Z0-9 ]{6})" />
			</xs:restriction>
		</xs:simpleType>
	</xs:element>

<!-- POS Cd -->
	<xs:element name="POSCd" > 
		<xs:simpleType>
			<xs:restriction base="xs:string">
				<xs:minLength value="1" />
				<xs:maxLength value="12" />
			</xs:restriction>
		</xs:simpleType>
	</xs:element>

<!-- SE Location ID -->
	<xs:element name="SELocnId" > 
		<xs:simpleType>
			<xs:restriction base="xs:string">
				<xs:minLength value="1" />
				<xs:maxLength value="15" />
			</xs:restriction>
		</xs:simpleType>
	</xs:element>

<!-- SE Contact DA -->
	<xs:element name="SEContactDa" > 
		<xs:simpleType>
			<xs:restriction base="xs:string">
				<xs:minLength value="1" />
				<xs:maxLength value="40" />
			</xs:restriction>
		</xs:simpleType>
	</xs:element>


<!-- Transaction Link Ref Grp -->
	<xs:element name="TxnLinkGrp">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="TxnLink" minOccurs = "0" maxOccurs="99"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>

<!-- Transaction Link -->
	<xs:element name="TxnLink">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="TxnLinkSeqNbr"/>
				<xs:element ref="TxnLinkRefCd"/>
				<xs:element ref="TxnLinkRefDa"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>

<!-- Transaction Link Seq No -->
        <xs:element name="TxnLinkSeqNbr" type="numFull9NonZeroType" />

<!-- Transaction Link Ref code -->
	<xs:element name="TxnLinkRefCd"  type="strFull5Type" />

<!-- Transaction Link Ref Data -->
	<xs:element name="TxnLinkRefDa" type="strMax30Type" />

	  
<!-- Message Trailer -->
	<xs:element name="MessageTrailer">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="SettleBtchCnt"/>
				<xs:element ref="TrvlBtchCnt"/>
				<xs:element ref="CurrencyTotGrp" minOccurs="0"  maxOccurs="1" />
			</xs:sequence>
		</xs:complexType>
	</xs:element>

<!-- Settle batch count -->
	<xs:element name="SettleBtchCnt" type="numFull9Type" />

<!-- Travel batch count -->
	<xs:element name="TrvlBtchCnt"   type="numFull9Type" />

<!-- Currency Total group -->
	<xs:element name="CurrencyTotGrp">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="CurrencyTot" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>

<!-- Currency total -->
	<xs:element name="CurrencyTot">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="CurrencyCd"/>
				<xs:element ref="TravelTranDbCnt"/>
				<xs:element ref="TravelTranDbTot"/>
				<xs:element ref="TravelTranCrCnt"/>
				<xs:element ref="TravelTranCrTot"/>
				<xs:element ref="TravelTranCnt"/>
				<xs:element ref="TravelTranTot"/>
				<xs:element ref="TravelDbCrInd"/>
				<xs:element ref="SettleTranDbCnt"/>
				<xs:element ref="SettleTranDbTot"/>
				<xs:element ref="SettleTranCrCnt"/>
				<xs:element ref="SettleTranCrTot"/>
				<xs:element ref="SettleTranCnt"/>
				<xs:element ref="SettleTranTot"/>
				<xs:element ref="SettleDbCrInd"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>


<!-- Currency Code -->
	<xs:element name="CurrencyCd"  type="strFull3Type" />

<!-- Travel Tran Debit count -->
	<xs:element name="TravelTranDbCnt" type="numFull9Type" />	

<!-- Travel Tran Credit count -->
	<xs:element name="TravelTranDbTot" type="numFull13Type"  />	

<!-- Travel tran credit total -->
	<xs:element name="TravelTranCrCnt" type="numFull9Type"  />

<!-- Travel tran total -->
        <xs:element name="TravelTranCrTot" type="numFull13Type"    />

<!-- Travel tran count -->
	<xs:element name="TravelTranCnt"   type="numFull9Type"  />	

<!-- Travel tran total  -->
	<xs:element name="TravelTranTot"   type="numFull13Type"    />		

<!-- Travel debit credit indicator -->
	<xs:element name="TravelDbCrInd"   type="dbCrType"   />	

<!-- Settle Tran debit count -->
	<xs:element name="SettleTranDbCnt" type="numFull9Type"  />	

<!-- settle tran debit total -->
	<xs:element name="SettleTranDbTot" type="numFull13Type"    />

<!-- settle tran credit count -->
	<xs:element name="SettleTranCrCnt" type="numFull9Type"  />	

<!-- settle tran credit total -->
	<xs:element name="SettleTranCrTot" type="numFull13Type"    />

<!-- settle tran count -->
	<xs:element name="SettleTranCnt"   type="numFull9Type"  />	

<!-- settle tran total -->
	<xs:element name="SettleTranTot"   type="numFull13Type"    />

<!-- settle debit credit ind -->
	<xs:element name="SettleDbCrInd"   type="dbCrType"   />	
                               
</xs:schema>