<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    elementFormDefault="qualified"
    attributeFormDefault="unqualified"
    version="1.0"
    targetNamespace="http://www.company.com/09/09/2004/PaymentAuthorization/xsd"
    xmlns="http://www.company.com/09/09/2004/PaymentAuthorization/xsd">
    <xs:element name="PaymentAuthorizationRQ">
        <xs:annotation>
            <xs:documentation>Request to authorize payment</xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence>
                <xs:element name="POS" type="POS_Type">
                    <xs:annotation>
                        <xs:documentation>Identifes the party making the request</xs:documentation>
                    </xs:annotation>
                </xs:element>
                <xs:element name="PaymentDetail" type="PaymentDetailType">
                    <xs:annotation>
                        <xs:documentation>Payment details</xs:documentation>
                    </xs:annotation>
                </xs:element>
            </xs:sequence>
            <xs:attributeGroup ref="OTA_PayloadStdAttributes"/>
        </xs:complexType>
    </xs:element>
    <xs:attributeGroup name="OTA_PayloadStdAttributes">
        <xs:annotation>
            <xs:documentation xml:lang="en">The OTA_PayloadStdAttributes defines the standard attributes that appear on the root element for all OTA payloads.</xs:documentation>
        </xs:annotation>
        <xs:attribute name="EchoToken" type="StringLength1to64" use="optional">
            <xs:annotation>
                <xs:documentation xml:lang="en">A reference for additional message identification, assigned by the requesting host system. When a request message includes an echo token the corresponding response message MUST include an echo token with an identical value.</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="TimeStamp" type="xs:dateTime" use="optional">
            <xs:annotation>
                <xs:documentation xml:lang="en">Indicates the creation date and time of the message in UTC using the following format specified by ISO 8601; YYYY-MM-DDThh:mm:ssZ with time values using the 24 hour clock (e.g. 20 November 2003, 1:59:38 pm UTC becomes 2003-11-20T13:59:38Z).</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="Target" use="optional" default="Production">
            <xs:annotation>
                <xs:documentation xml:lang="en">Used to indicate whether the request is for the Test or Production system.</xs:documentation>
            </xs:annotation>
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="Test"/>
                    <xs:enumeration value="Production"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="Version" type="xs:decimal" use="required">
            <xs:annotation>
                <xs:documentation xml:lang="en">For all OTA versioned messages, the version of the message is indicated by a decimal value.</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="TransactionIdentifier" type="StringLength1to32" use="optional">
            <xs:annotation>
                <xs:documentation xml:lang="en">A unique identifier to relate all messages within a transaction (e.g. this would be sent in all request and response messages that are part of an on-going transaction).</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="SequenceNmbr" type="xs:nonNegativeInteger" use="optional">
            <xs:annotation>
                <xs:documentation xml:lang="en">Used to identify the sequence number of the transaction as assigned by the sending system; allows for an application to process messages in a certain order or to request a resynchronization of messages in the event that a system has been off-line and needs to retrieve messages that were missed. </xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="TransactionStatusCode" use="optional">
            <xs:annotation>
                <xs:documentation xml:lang="en">This indicates where this message falls within a sequence of messages. </xs:documentation>
            </xs:annotation>
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="Start">
                        <xs:annotation>
                            <xs:documentation xml:lang="en">This is the first message within a transaction.</xs:documentation>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="End">
                        <xs:annotation>
                            <xs:documentation xml:lang="en">This is the last message within a transaction.</xs:documentation>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="Rollback">
                        <xs:annotation>
                            <xs:documentation xml:lang="en">This indicates that all messages within the current transaction must be ignored.</xs:documentation>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="InSeries">
                        <xs:annotation>
                            <xs:documentation xml:lang="en">This is any message that is not the first or last message within a transaction.</xs:documentation>
                        </xs:annotation>
                    </xs:enumeration>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attributeGroup ref="PrimaryLangID_Group"/>
        <xs:attributeGroup ref="AltLangID_Group"/>
    </xs:attributeGroup>

<!-- OTA_CommonTypes.xsd -->
    <xs:complexType name="POS_Type">
        <xs:annotation>
            <xs:documentation xml:lang="en">Point of Sale (POS) is the details identifying the party or connection channel making the request.</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="Source" type="SourceType" maxOccurs="5">
                <xs:annotation>
                    <xs:documentation xml:lang="en">This holds details regarding the requestor. It may be repeated to also accommodate the delivery systems.</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="SourceType">
        <xs:sequence>
            <xs:element name="RequestorID" type="UniqueID_Type">
                <xs:annotation>
                    <xs:documentation xml:lang="en">An identifier of the entity making the request  (e.g. ATA/IATA/ID number, Electronic Reservation Service Provider (ERSP), Association of British Travel Agents (ABTA)). </xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="Position" type="PositionType" minOccurs="0"/>
            <xs:element name="BookingChannel" minOccurs="0">
                <xs:annotation>
                    <xs:documentation xml:lang="en">Specifies the booking channel type and whether it is the primary means of connectivity of the source.</xs:documentation>
                </xs:annotation>
                <xs:complexType>
                    <xs:complexContent>
                        <xs:extension base="BookingChannelType">
                            <xs:sequence>
                                <xs:element name="CompanyName" type="CompanyNameType" minOccurs="0">
                                    <xs:annotation>
                                        <xs:documentation xml:lang="en">Identifies the company that is associated with the booking channel.</xs:documentation>
                                    </xs:annotation>
                                </xs:element>
                            </xs:sequence>
                        </xs:extension>
                    </xs:complexContent>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
        <xs:attribute name="AgentSine" type="StringLength1to16" use="optional">
            <xs:annotation>
                <xs:documentation xml:lang="en">Identifies the party within the requesting entity.</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="PseudoCityCode" type="StringLength1to16" use="optional">
            <xs:annotation>
                <xs:documentation xml:lang="en">An identification code assigned to an office/agency by a reservation system.</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="ISOCountry" type="ISO3166" use="optional">
            <xs:annotation>
                <xs:documentation xml:lang="en">The country code of the requesting party.</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="ISOCurrency" type="AlphaLength3" use="optional">
            <xs:annotation>
                <xs:documentation xml:lang="en">The currency code in which the reservation will be ticketed.</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="AgentDutyCode" type="StringLength1to16" use="optional">
            <xs:annotation>
                <xs:documentation xml:lang="en">An authority code assigned to a requestor.</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="AirlineVendorID" type="UpperCaseAlphaNumericLength2to3" use="optional">
            <xs:annotation>
                <xs:documentation xml:lang="en">The IATA assigned airline code.</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="AirportCode" type="UpperCaseAlphaNumericLength3to5" use="optional">
            <xs:annotation>
                <xs:documentation xml:lang="en">The IATA assigned airport code.</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="FirstDepartPoint" type="StringLength3" use="optional">
            <xs:annotation>
                <xs:documentation xml:lang="en">The point of first departure in a trip.</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="ERSP_UserID" type="StringLength1to16" use="optional">
            <xs:annotation>
                <xs:documentation xml:lang="en">Electronic Reservation Service Provider (ERSP) assigned identifier used to identify the individual using the ERSP system.</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="TerminalID" type="StringLength1to32" use="optional">
            <xs:annotation>
                <xs:documentation xml:lang="en">This is the electronic address of the device from which information is entered.</xs:documentation>
            </xs:annotation>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="UniqueID_Type">
        <xs:annotation>
            <xs:documentation xml:lang="en">An identifier used to uniquely reference an object in a system (e.g. an airline reservation reference, customer profile reference, booking confirmation number, or a reference to a previous availability quote). </xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="CompanyName" type="CompanyNameType" minOccurs="0">
                <xs:annotation>
                    <xs:documentation xml:lang="en">Identifies the company that is associated with the UniqueID.</xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
        <xs:attributeGroup ref="UniqueID_Group"/>
    </xs:complexType>
    <xs:complexType name="PositionType">
        <xs:annotation>
            <xs:documentation xml:lang="en">Used to identify geospatial postion of the requesting entity.</xs:documentation>
        </xs:annotation>
        <xs:attributeGroup ref="PositionGroup"/>
    </xs:complexType>
    <xs:complexType name="CompanyNameType">
        <xs:annotation>
            <xs:documentation xml:lang="en">Identifies a company by name.</xs:documentation>
        </xs:annotation>
        <xs:simpleContent>
            <xs:extension base="StringLength0to64">
                <xs:attributeGroup ref="CompanyID_AttributesGroup"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:attributeGroup name="UniqueID_Group">
        <xs:annotation>
            <xs:documentation>Provides unique identification information.</xs:documentation>
        </xs:annotation>
        <xs:attribute name="URL" type="xs:anyURI">
            <xs:annotation>
                <xs:documentation xml:lang="en">URL that identifies the location associated with the record identified by the UniqueID.</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="Type" type="OTA_CodeType" use="required">
            <xs:annotation>
                <xs:documentation xml:lang="en">A reference to the type of object defined by the UniqueID element. Refer to OTA Code List Unique ID Type (UIT).</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="Instance" type="StringLength1to32">
            <xs:annotation>
                <xs:documentation xml:lang="en">The identification of a record as it exists at a point in time. An instance is used in update messages where the sender must assure the server that the update sent refers to the most recent modification level of the object being updated.</xs:documentation>
            </xs:annotation>
        </xs:attribute>
<!--        <xs:attributeGroup ref="ID_Group"/>  -->
        <xs:attribute name="ID" type="StringLength1to32" use="required">
            <xs:annotation>
                <xs:documentation xml:lang="en">A unique identifying value assigned by the creating system.  The ID attribute may be used to reference a primary-key value within a database or in a particular implementation.</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="ID_Context" type="StringLength1to32" use="optional">
            <xs:annotation>
                <xs:documentation xml:lang="en">Used to identify the source of the identifier (e.g. IATA, ABTA, etc.).</xs:documentation>
            </xs:annotation>
        </xs:attribute>
    </xs:attributeGroup>
    <xs:attributeGroup name="PositionGroup">
        <xs:annotation>
            <xs:documentation>Used to specify the geographic coordinates of a location.</xs:documentation>
        </xs:annotation>
        <xs:attribute name="Latitude" type="StringLength1to16" use="optional">
            <xs:annotation>
                <xs:documentation xml:lang="en">The measure of the angular distance on a meridian north or south of the equator.</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="Longitude" type="StringLength1to16" use="optional">
            <xs:annotation>
                <xs:documentation xml:lang="en">The measure of the angular distance on a meridian east or west of the prime meridian.</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="Altitude" type="StringLength1to16" use="optional">
            <xs:annotation>
                <xs:documentation xml:lang="en">The height of an item, typically above sea level.</xs:documentation>
            </xs:annotation>
        </xs:attribute>
    </xs:attributeGroup>
    <xs:complexType name="BookingChannelType">
        <xs:annotation>
            <xs:documentation xml:lang="en">Specifies the booking channel types and whether it is the primary means of connectivity of the source.</xs:documentation>
        </xs:annotation>
        <xs:attribute name="Type" type="OTA_CodeType" use="required">
            <xs:annotation>
                <xs:documentation xml:lang="en">The type of booking channel (e.g. Global Distribution System (GDS), Alternative Distribution System (ADS), Sales and Catering System (SCS), Property Management System (PMS), Central Reservation System (CRS), Tour Operator System (TOS), Internet and ALL). Refer to OTA Code List Booking Channel Type (BCT).</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="Primary" type="xs:boolean" use="optional">
            <xs:annotation>
                <xs:documentation xml:lang="en">Indicates whether the enumerated booking channel is the primary means of connectivity used by the source.</xs:documentation>
            </xs:annotation>
        </xs:attribute>
    </xs:complexType>
    <xs:attributeGroup name="ID_Group">
        <xs:annotation>
            <xs:documentation>Used to provide a required unique identifier.</xs:documentation>
        </xs:annotation>
        <xs:attribute name="ID" type="StringLength1to32" use="required">
            <xs:annotation>
                <xs:documentation xml:lang="en">A unique identifying value assigned by the creating system.  The ID attribute may be used to reference a primary-key value within a database or in a particular implementation.</xs:documentation>
            </xs:annotation>
        </xs:attribute>
    </xs:attributeGroup>
    <xs:complexType name="PaymentDetailType">
        <xs:annotation>
            <xs:documentation xml:lang="en">Details of payment.  Vastly simplified for .NET and the Payment Authorization Web service.</xs:documentation>
        </xs:annotation>
        <xs:attribute name="CostCenterID" type="StringLength1to32">
            <xs:annotation>
                <xs:documentation xml:lang="en">A reference to identify the billing department for allocating cost of travel to company account.</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="RPH" type="RPH_Type"/>
        <xs:attribute name="PaymentTransactionTypeCode">
            <xs:annotation>
                <xs:documentation xml:lang="en">This is used to indicate either a charge or reserve (deposit).</xs:documentation>
            </xs:annotation>
            <xs:simpleType>
                <xs:restriction base="xs:NMTOKEN">
                    <xs:enumeration value="charge">
                        <xs:annotation>
                            <xs:documentation xml:lang="en">This indicates that an actual payment has been made.</xs:documentation>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="reserve">
                        <xs:annotation>
                            <xs:documentation xml:lang="en">This indicates that a hold has been placed on a credit card or that cash has been taken from the customer to guarantee final payment.</xs:documentation>
                        </xs:annotation>
                    </xs:enumeration>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="CardType" type="OTA_CodeType" use="optional">
            <xs:annotation>
                <xs:documentation xml:lang="en">Indicates the type of magnetic striped card. Refer to OTA Code ListCard Type (CDT).</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="CardCode" type="PaymentCardCodeType" use="optional">
            <xs:annotation>
                <xs:documentation xml:lang="en">Code indicating the type of credit card. Refer to OTA Code List Card Type(CDT).</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="CardNumber" type="NumericStringLength1to19" use="optional">
            <xs:annotation>
                <xs:documentation xml:lang="en">Credit card number embossed on the card.</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="SeriesCode" type="NumericStringLength1to8" use="optional">
            <xs:annotation>
                <xs:documentation xml:lang="en">Verification digits printed on the card following the embossed number. This may also accommodate the customer identification/batch number (CID), card verification value (CVV2 ), card validation code number (CVC2) on credit card.</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="EffectiveDate" type="MMYYDate" use="optional">
            <xs:annotation>
                <xs:documentation xml:lang="en">Indicates the starting date.</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="ExpireDate" type="MMYYDate" use="optional">
            <xs:annotation>
                <xs:documentation xml:lang="en">Indicates the ending date.</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="Amount" type="MoneyString" use="optional"/>
        <xs:attribute name="CurrencyCode" type="AlphaLength3" use="optional">
            <xs:annotation>
                <xs:documentation xml:lang="en">The code specifying a monetary unit. Use ISO 4217, three alpha code.</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="DecimalPlaces" type="xs:nonNegativeInteger" use="optional">
            <xs:annotation>
                <xs:documentation xml:lang="en">Indicates the number of decimal places for a particular currency. This is equivalent to the ISO 4217 standard "minor unit". Typically used when the amount provided includes the minor unit of currency without a decimal point (e.g., USD 8500 needs DecimalPlaces="2" to represent $85).</xs:documentation>
            </xs:annotation>
        </xs:attribute>
    </xs:complexType>
    <xs:attributeGroup name="PrimaryLangID_Group">
        <xs:annotation>
            <xs:documentation>Identifes the primary language preference for the message.</xs:documentation>
        </xs:annotation>
        <xs:attribute name="PrimaryLangID" type="xs:language" use="optional">
            <xs:annotation>
                <xs:documentation xml:lang="en">Identifes the primary language preference for the message.  The human language is identified by ISO 639 codes.</xs:documentation>
            </xs:annotation>
        </xs:attribute>
    </xs:attributeGroup>
    <xs:attributeGroup name="AltLangID_Group">
        <xs:annotation>
            <xs:documentation xml:lang="en">Identifies the alternate language for a customer or message. The human language is identified by ISO 639 codes.</xs:documentation>
        </xs:annotation>
        <xs:attribute name="AltLangID" type="xs:language" use="optional"/>
    </xs:attributeGroup>
    <xs:simpleType name="NumericStringLength1to8">
        <xs:annotation>
            <xs:documentation xml:lang="en">Used for Numeric Strings, length 1 to 8.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
            <xs:pattern value="[0-9]{1,8}"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:attributeGroup name="CompanyID_AttributesGroup">
        <xs:annotation>
            <xs:documentation>Provides meaning to a company code.</xs:documentation>
        </xs:annotation>
        <xs:attribute name="CompanyShortName" type="StringLength1to32" use="optional">
            <xs:annotation>
                <xs:documentation xml:lang="en">Used to provide the company common name.</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="TravelSector" type="OTA_CodeType" use="optional">
            <xs:annotation>
                <xs:documentation xml:lang="en">
Refer to OTA Code List Travel Sector (TVS).
        </xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="Code" type="StringLength1to8" use="optional">
            <xs:annotation>
                <xs:documentation xml:lang="en">Identifies a company by the company code.</xs:documentation>
            </xs:annotation>
        </xs:attribute>
        <xs:attribute name="CodeContext" type="StringLength1to32" use="optional">
            <xs:annotation>
                <xs:documentation xml:lang="en">Identifies the context of the identifying code, such as DUNS, IATA or internal code, etc.</xs:documentation>
            </xs:annotation>
        </xs:attribute>
    </xs:attributeGroup>

<!-- OTA_SimpleTypes.xsd -->
    <xs:simpleType name="OTA_CodeType">
        <xs:annotation>
            <xs:documentation xml:lang="en">Used for codes in the OTA code tables. Possible values of this pattern are 1, 101, 101.EQP, or 101.EQP.X.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
            <xs:pattern value="[0-9A-Z]{1,3}(\.[A-Z]{3}(\.X){0,1}){0,1}"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="StringLength0to64">
        <xs:annotation>
            <xs:documentation xml:lang="en">Used for Character Strings, length 0 to 64</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
            <xs:minLength value="0"/>
            <xs:maxLength value="64"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="StringLength1to32">
        <xs:annotation>
            <xs:documentation xml:lang="en">Used for Character Strings, length 1 to 32</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
            <xs:minLength value="1"/>
            <xs:maxLength value="32"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="StringLength1to16">
        <xs:annotation>
            <xs:documentation xml:lang="en">Used for Character Strings, length 1 to 16</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
            <xs:minLength value="1"/>
            <xs:maxLength value="16"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="UpperCaseAlphaNumericLength2to3">
        <xs:annotation>
            <xs:documentation xml:lang="en">Used for an Upper Alpha String and Numeric, length 2 to 3.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
            <xs:pattern value="[A-Z0-9]{2,3}"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="UpperCaseAlphaNumericLength3to5">
        <xs:annotation>
            <xs:documentation xml:lang="en">Used for an Upper Alpha String and Numeric, length 3 to 5.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
            <xs:pattern value="[A-Z0-9]{3,5}"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="StringLength3">
        <xs:annotation>
            <xs:documentation xml:lang="en">Used for Strings, length exactly 3</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
            <xs:minLength value="3"/>
            <xs:maxLength value="3"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="ISO3166">
        <xs:annotation>
            <xs:documentation xml:lang="en">2 character country code as defined in ISO3166.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
            <xs:pattern value="[a-zA-Z]{2}"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="AlphaLength3">
        <xs:annotation>
            <xs:documentation xml:lang="en">Used for Alphabetic Strings, length exactly 3</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
            <xs:pattern value="[a-zA-Z]{3}"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="StringLength1to64">
        <xs:annotation>
            <xs:documentation xml:lang="en">Used for Character Strings, length 1 to 64</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
            <xs:minLength value="1"/>
            <xs:maxLength value="64"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="AlphaNumericStringLength1to14">
        <xs:annotation>
            <xs:documentation xml:lang="en">Used forAlpha-Numeric Strings, length 1 to 14</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
            <xs:pattern value="[0-9a-zA-Z]{1,14}"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="RPH_Type">
        <xs:annotation>
            <xs:documentation xml:lang="en">(Reference Place Holder) - an index code to identify an instance in a collection of like items.. For example,  used to assign individual passengers or clients to particular itinerary items.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
            <xs:pattern value="[0-9]{1,8}"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="Money">
        <xs:annotation>
            <xs:documentation xml:lang="en">Used for amounts, max 3 decimals</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:decimal">
            <xs:fractionDigits value="3"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="PaymentCardCodeType">
        <xs:annotation>
            <xs:documentation xml:lang="en">The 2 digit code used that references the credit card used.</xs:documentation>
        </xs:annotation>
        <xs:union>
            <xs:simpleType>
                <xs:restriction base="UpperCaseAlphaLength1to2">
                    <xs:enumeration value="AX">
                        <xs:annotation>
                            <xs:documentation xml:lang="en">
                    American Express
                    </xs:documentation>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="BC">
                        <xs:annotation>
                            <xs:documentation xml:lang="en">
                    Bank Card
                    </xs:documentation>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="BL">
                        <xs:annotation>
                            <xs:documentation xml:lang="en">
                    Carte Bleu
                    </xs:documentation>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="CB">
                        <xs:annotation>
                            <xs:documentation xml:lang="en">
                    Carte Blanche
                    </xs:documentation>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="DN">
                        <xs:annotation>
                            <xs:documentation xml:lang="en">
                    Diners Club
                    </xs:documentation>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="DS">
                        <xs:annotation>
                            <xs:documentation xml:lang="en">
                    Discover Card
                    </xs:documentation>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="EC">
                        <xs:annotation>
                            <xs:documentation xml:lang="en">
                     Eurocard
                    </xs:documentation>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="JC">
                        <xs:annotation>
                            <xs:documentation xml:lang="en">
                    JCB Credit Card
                    </xs:documentation>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="MC">
                        <xs:annotation>
                            <xs:documentation xml:lang="en">
                    Master Card
                    </xs:documentation>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="TP">
                        <xs:annotation>
                            <xs:documentation xml:lang="en">
                     Universal Air Travel Card
                    </xs:documentation>
                        </xs:annotation>
                    </xs:enumeration>
                    <xs:enumeration value="VI">
                        <xs:annotation>
                            <xs:documentation xml:lang="en">
                     Visa
                    </xs:documentation>
                        </xs:annotation>
                    </xs:enumeration>
                </xs:restriction>
            </xs:simpleType>
            <xs:simpleType>
                <xs:annotation>
                    <xs:documentation xml:lang="en">This is intended to be used when the above enumeration list does not meet your needs. </xs:documentation>
                </xs:annotation>
                <xs:restriction base="UpperCaseAlphaLength1to2"/>
            </xs:simpleType>
        </xs:union>
    </xs:simpleType>
    <xs:simpleType name="NumericStringLength1to19">
        <xs:annotation>
            <xs:documentation xml:lang="en">Used for Numeric Strings, length 1 to 19.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
            <xs:pattern value="[0-9]{1,19}"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="UpperCaseAlphaLength1to2">
        <xs:annotation>
            <xs:documentation xml:lang="en">Used for an Alpha String, length 2 (for letter codes)</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
            <xs:pattern value="[A-Z]{1,2}"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="MMYYDate">
        <xs:annotation>
            <xs:documentation xml:lang="en">Month and year information.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
            <xs:pattern value="(0[1-9]|1[0-2])[0-9][0-9]"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="StringLength1to8">
        <xs:annotation>
            <xs:documentation xml:lang="en">Used for Character Strings, length 1 to 8</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
            <xs:minLength value="1"/>
            <xs:maxLength value="8"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="StateProvCodeType">
        <xs:annotation>
            <xs:documentation xml:lang="en">The standard code or abbreviation for the state, province, or region</xs:documentation>
        </xs:annotation>
        <xs:restriction base="StringLength1to8">
            <xs:minLength value="2"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="MoneyString">
        <xs:annotation>
            <xs:documentation xml:lang="en">Used for Money Strings, length 1 to 19.</xs:documentation>
        </xs:annotation>
        <xs:restriction base="xs:string">
            <xs:pattern value="[0-9\.]{1,19}"/>
        </xs:restriction>
    </xs:simpleType>

</xs:schema>
