<?xml version="1.0" encoding="UTF-8"?>

<!--
     AlpineBits 2024-10
     http://www.alpinebits.org/

     W3C XML Schema file

     changelog:

    v. 2024-10  1.4    **************************************************************************************************
                       All occurrences of type="def_nonempty_string" have been replaced with the value defined in
                       OTA 2015A.

    v. 2024-10  1.3    **************************************************************************************************
                       HotelCode: Bugfix: define HotelCode as required everywhere

    v. 2024-10  1.2    **************************************************************************************************
                       RatePlans: Attribute RatePlanNotifType value `New` has been replaced with `Full`. `New` is still
                       accepted for compatibility reasons.
                       Inventory: Element TypeRoom changed to mandatory element

    v. 2024-10  1.1    **************************************************************************************************
                       GuestRequests: added optional RoomRates element

    v. 2024-10  1.0    **************************************************************************************************
                       GuestRequests: added optional Services element


    v. 2022-10  1.2    **************************************************************************************************
                       GuestRequests: allow Errors in OTA_HotelResNotifRS
                       GuestRequests: allow Warnings in OTA_NotifReportRS
                       Inventory: allow Warnings in OTA_HotelDescriptiveInfoRS
                       BaseRates: allow Warnings in OTA_HotelRatePlanRS


    v. 2022-10  1.1    **************************************************************************************************
                       GuestRequests: added optional LastModifyDateTime attribute for HotelReservation element


    v. 2022-10  1.0    **************************************************************************************************
                       GuestRequests: added optional attribute RoomStayReservation to element HotelReservation


    v. 2020-10  1.6    **************************************************************************************************
                       HotelCode: define HotelCode as String of length 1 to 16, just like in OTA2015A


    v. 2020-10  1.5    **************************************************************************************************
                       Inventory: fix HotelDescriptiveContents -> ... -> ContactInfo -> ... -> URL -> ID restriction
                       The written 2020-10 standard says on page 55 that "...Partners are allowed to define further
                       values...". The prior XSD defined an enumeration of allowed values, which was too restrictive. This
                       has been fixed.


    v. 2020-10  1.4    **************************************************************************************************
                       Inventory: removed attributes Code and CodeContext from element CompanyName under ContactInfo


    v. 2020-10  1.3    **************************************************************************************************
                       make LocationCategories optional


    v. 2020-10  1.2    **************************************************************************************************
                       OTA_PingRS has been loosened to accept Warning elements of any type, as well asError elements


    v. 2020-10  1.1    **************************************************************************************************
                       FreeRooms: major changes, since that action has completely been rewritten; the root node has been
                       changed from OTA_HotelAvailNotifRQ/RS to OTA_HotelInvCountNotifRQ/RS
                       (done by C. Gapp)

                       **************************************************************************************************
                       the CurrencyCode attribute used to be defined as non-empty string or hard-coded to "EUR"; this has
                       been changed to a generic string with 3 character in order to allow other currencies and to be
                       compatible with OTA

                       **************************************************************************************************
                       GuestRequests: added SpecialRequests for pets

                       **************************************************************************************************
                       Inventory: HotelDescriptiveContents has been expanded: ContactInfos has more content and
                       HotelInfo, Policies and AffiliationInfo are now strictly defined (they used to allow any OTA
                       content).

                       **************************************************************************************************
                       new action Activities: elements OTA_HotelPostEventNotifRQ and OTA_HotelPostEventNotifRS added


    v. 2018-10  1.3    more things changed related to the new section "Responses with a request for complete sets of data":

                       - added "11" as allowed value for the attribute Type of the Error elements

                       - made the attribute Code of the Error elements optional

                       - added Warnings element below OTA_ResRetrieveRS


    v. 2018-10  1.2    the Status attribute has been extended to all Warning elements (also the ones
                       for GuestRequests) and to Error elements; the choice of keywords has become
                       a common definition (def_send_complete)


    v. 2018-10  1.1    added Status attribute to Warning element (see section "Responses with a
                       request for complete sets of data")

                       fixed copy&paste error in enumeration of new RoomType attribute values


    v. 2018-10  1.0    **************************************************************************************************
                       allowed additional value "HTML" for attribute TextFormat in Inventory
                       HotelDescriptiveContents -> ... -> FacilityInfo -> ... -> MultimediaDescription -> ... -> Description


                       **************************************************************************************************
                       https://gitlab.com/alpinebits/developers-kit/issues/5
                       "Booking push functionality"

                       042 - GuestRequests:

                             added HotelCode and HotelName attributes to BasicPropertyInfo element
                             (this is needed to share the HotelReservation-sub-schema for
                             "GuestRequests" and "GuestRequests (Push)")

                             added new root nodes OTA_HotelResNotifRQ/OTA_HotelResNotifRS for
                             "GuestRequests (Push)" messages with a shared HotelReservation-sub-schema


                       **************************************************************************************************
                       https://gitlab.com/alpinebits/developers-kit/issues/8
                       "Extension with new room types"

                       042 - GuestRequests:
                             OTA_ResRetrieveRS -> ... -> HotelReservation > RoomStays > RoomStay > RoomTypes > RoomType {1}

                       and

                       044 - Inventory/*:
                             group name="def_hoteldescriptivecontents" -> ... -> GuestRoom -> TypeRoom

                       => Added optional RoomType attribute with possible values 1, 2, 3, 4, 5, 6, 7, 8, 9.


                       **************************************************************************************************
                       https://gitlab.com/alpinebits/developers-kit/issues/10
                       "Hotel ID transmission"

                       044 - Inventory/*
                             group name="def_hoteldescriptivecontents" -> ... -> ContactInfos

                       => defined (narrowed down) the content of the ContactInfos element


                       **************************************************************************************************
                       https://gitlab.com/alpinebits/developers-kit/issues/4
                       "Handshaking review"

                       03 - Handshake

                       => added new root elements OTA_PingRQ and OTA_PingRS


    v. 2017-10  1.1 -  RatePlans:       RatePlans > RatePlan > Offers: allow only MinLOS and MaxLOS attributes (not the forward ones too)

    v. 2017-10  1.0 -  FreeRooms:       OTA_HotelAvailNotifRQ -> UniqueID (added allowed value to attribute Type, by Luca Rainone)
                       FreeRooms:       OTA_HotelAvailNotifRQ -> AvailStatusMessages -> ...  -> StatusApplicationControl (added new mandatory attribute BookingThreshold)

                       GuestRequests:   OTA_ResRetrieveRS -> ReservationsList -> ... -> RatePlan (added element Commission)
                       GuestRequests:   OTA_ResRetrieveRS -> ReservationsList -> ... -> CardNumber (added attributes EncryptedValue and EncryptionMethod)
                       GuestRequests:   OTA_ResRetrieveRS -> ReservationsList -> ... -> RoomStay > RoomTypes (made optional)

                       SimplePackages section removed

                       Inventory has become Inventory/Basic (Push) and Inventory/HotelInfo (Push):
                                        OTA_HotelDescriptiveContentNotifRQ (major changes, one being that empty GuestRooms elements are now allowed by Luca Rainone)

                       Inventory/Basic (Pull) and Inventory/HotelInfo (Pull) added

                       RatePlans:       OTA_HotelRatePlanNotifRQ -> RatePlans -> RatePlan -> BookingRules -> ... -> LengthOfStay (added allowed values to attribute MinMaxMessageType)
                       RatePlans:       OTA_HotelRatePlanNotifRQ -> RatePlans -> RatePlan -> Supplements -> Supplement (added element PrerequisiteInventory)
                       RatePlans:       OTA_HotelRatePlanNotifRQ -> RatePlans -> RatePlan -> Supplements -> Supplement -> Description (major changes)
                       RatePlans:       OTA_HotelRatePlanNotifRQ -> RatePlans -> RatePlan -> Offers -> Offer (major changes)
                       RatePlans:       OTA_HotelRatePlanNotifRQ -> RatePlans -> RatePlan -> Description (major changes)
                       RatePlans:       OTA_HotelRatePlanNotifRQ -> RatePlans -> RatePlan -> ... -> BaseByGuestAmt (NumberOfGuests and Type are optional now to allow static rates)

                       BaseRates section added

    v. 2015-07b 1.4 - weaken the schema for Inventory (to prepare for upcoming release that will support Inventory deltas):

                      - the RoomAmenityCode attribute becomes optional to allow empty Amenity elements
                      - the MultimediaDescription element can be empty

    v. 2015-07b 1.3 - RatePlans > RatePlan > Description > TextFormat can now also be "HTML" (besides "PlainText")

    v. 2015-07b 1.2 - added optional attributes RatePlanID and RatePlanQualifier to RatePlan
                      for the new OTA_HotelRatePlanNotif_accept_RatePlanJoin capability

    v. 2015-07b 1.1 - added def_invTypeCode_string type (string with up to 8 chars) used for the following attributes that identify room categories:

                      FreeRooms:     OTA_HotelAvailNotifRQ -> AvailStatusMessages -> AvailStatusMessage -> StatusApplicationControl -> InvTypeCode
                      GuestRequests: OTA_ResRetrieveRS -> ReservationList -> HotelReservation -> RoomStays -> RoomStay -> RoomTypes > RoomType -> RoomTypeCode
                      Inventory:     OTA_HotelDescriptiveContentNotifRQ -> HotelDescriptiveContents -> HotelDescriptiveContent -> FacilityInfo -> GuestRooms -> GuestRoom -> Code
                      RatePlan:      OTA_HotelRatePlanNotifRQ -> RatePlans -> RatePlan -> BookingRules -> BookingRule -> Code
                      RatePlan:      OTA_HotelRatePlanNotifRQ -> RatePlans -> RatePlan -> Rates -> Rate -> InvTypeCode

                      (derived from Lukas Braun's pull request)

    v. 2015-07b 1.0 - RatePlans > RatePlan > Rates > Rate > BaseByGuestAmts > AmountAfterTax
                      must be > 0.0 (was: >= 0.0)

     v. 2015-07 2.9 - Inventory: added a missing maxOccurs="unbounded" to the ImageItem

     v. 2015-07 2.8 - Inventory: reconciled with the definitions given in the updated document

     v. 2015-07 2.7 - changes to Inventory: removed the old Inventory, added MaxChildOccupancy to GuestRoom,
                      made some of the attributes mandatory, formating changes

     v. 2015-07 2.6 - made sub-elements of HotelReservation > ... > Customer > Address {0,1} optional

     v. 2015-07 2.5 - added a choice of 'Modify' for ResStatus

     v. 2015-07 2.4 - added MinCount attribute to Offer>>Guest

     v. 2015-07 2.3 - changes to Supplement: a few attributes are removed and many attributes are made optional

     v. 2015-07 2.2 - RatePlans/Supplements: changed format of description

     v. 2015-07 2.1 - GuestRequests: ResGuests >> Customer: attributes Gender and Language are now optional

     v. 2015-07 2.0 - allow Warnings in OTA_NotifReportRQ messages

     v. 2015-07 1.9 - GuestRequests: use CardNumber -> PlainText instead of the Remark attribute of
                      PaymentCard under Guarantee; add BasicPropertyInfo element at the end of the
                      ResGlobalInfo block for OTA-2015A compatiblity

     v. 2015-07 1.8 - added section for New Inventory (exact name pending)

     v. 2015-07 1.7 - allowed more than one HotelReservationID

     v. 2015-07 1.6 - RatePlans: allow optional PrerequisiteInventory element under Supplement element

     v. 2015-07 1.5 - Inventory: removed Amenities and added optional Room -> RoomTypeCode

     v. 2015-07 1.4 - HotelReservationID -> ResID_Type is not limited to 13 anymore

     v. 2015-07 1.3 - new section in RoomStays: Guarantee -> GuaranteesAccepted -> GuaranteeAccepted -> PaymentCard

     v. 2015-07 1.2 - new section in ResGlobalInfo: Profiles -> ProfileInfo -> Profile -> CompanyInfo

     v. 2015-07 1.1 - HotelReservation > RoomStays > RoomStay > RoomTypes > RoomType is now
                      mandatory and has a new optional attribute RoomClassificationCode

     v. 2015-07 1.0 - OTA_NotifReportRS besides Success, now also allows Error responses

     v. 2014-04 1.6 - [fixed] InvCode attribute in Supplement changed from def_int_ge0 to def_nonempty_string

     v. 2014-04 1.5 - [strictness improvement] made NumberOfGuests attribute mandatory

     v. 2014-04 1.4 - [fixed] RatePlans: optional Rate attributes RateTimeUnit and UnitMultiplier added

     v. 2014-04 1.3 - [fixed] GuestRequests: ReservationsList can be empy

     v. 2014-04 1.2 - follow-up to fix 1.1 that allowed empty AvailStatusMessages elements too
                      (reverted)

     v. 2014-04 1.1 - empty AvailStatusMessage elements in FreeRooms now allowed
                      (see https://groups.google.com/d/msg/alpinebits/B-orBE9eJCk/rKyIYbNBFNoJ )
                    - Version and TimeStamp also added to OTA_NotifReportRS
                      (see https://groups.google.com/d/msg/alpinebits/jwaPC3XAafo/yDDYCkpNPYEJ )

     v. 2014-04 1.0 - major rewrite for 2014-04

     previous changelogs:

     v. 2013-04 1.0 - the XML schema is now flattened into this single file;
                      some improvements by Martin;
                      added optional RatePlanCode attribute to RatePlan;
                      removed restrictions on the form of the ID attribute in UniqueID

     W3C XML Schema for OTA_HotelAvailNotifRQ:
     v. 2013-04 1.0 - added MessageContentCode attribute for delta messages
     v. 2012-05 1.2 - changed Thu -> Thur and Wed -> Weds for OTA compatibility
     v. 2012-05 1.1 - added optional TimeStamp attribute for OTA_HotelAvailNotifRQ to be compatible with AlpineBits 2011-11 documents
     v. 2012-05 1.0

     W3C XML Schema for OTA_HotelAvailNotifRS:
     v. 2013-04 1.0 - added warnings
     v. 2012-05 1.0

     W3C XML Schema for OTA_ReadRQ:
     v. 2012-05 1.0

     W3C XML Schema for OTA_ResRetrieveRS:
     v. 2013-04 1.0 - simplified the definition of GuestCounts for XSD conformance,
                      moved UniqueID and RatePlans elements to common to support schema flattening
     v. 2012-05 1.0

     W3C XML Schema for OTA_HotelRatePlanNotifRQ:
     v. 2013-04 1.0 - removed def_plaintext and simplified def_rate_plan to fix an issue with the parsing of the schema,
                      moved UniqueID and RatePlans elements to common
     v. 2012-05 1.2 - changed Thu -> Thur and Wed -> Weds for OTA compatibility
     v. 2012-05 1.0

     W3C XML Schema for OTA_HotelRatePlanNotifRS:
     v. 2013-04 1.0 - added warnings
     v. 2012-05 1.0
-->

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           elementFormDefault="qualified"
           targetNamespace="http://www.opentravel.org/OTA/2003/05"
           xmlns="http://www.opentravel.org/OTA/2003/05">


  <!-- ******************************************************************************* -->
  <!-- * Handshake                                                                     -->
  <!-- ******************************************************************************* -->

  <!-- Handshake: OTA_PingRQ -->

  <xs:element name="OTA_PingRQ">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="EchoData" type="def_nonempty_string"/>
      </xs:sequence>
      <xs:attribute name="Version" use="required"/>
      <xs:attribute name="TimeStamp"/>
    </xs:complexType>
  </xs:element>

  <!-- Handshake: OTA_PingRS -->

  <xs:element name="OTA_PingRS">
    <xs:complexType>

      <xs:choice>

        <!-- choice: Errors -->

        <xs:sequence>
          <xs:element name="Errors">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="Error" maxOccurs="unbounded">
                  <xs:complexType mixed="true">
                    <xs:attribute name="Type" use="required">
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:enumeration value="11"/>
                          <xs:enumeration value="13"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:attribute>
                    <xs:attribute name="Code" type="def_int_gt0"/>
                    <xs:attribute name="Status">
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:enumeration value="ALPINEBITS_HANDSHAKE"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:attribute>
                  </xs:complexType>
                </xs:element>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:sequence>

        <!-- choice: Success + Warnings + EchoData -->

        <xs:sequence>
          <xs:element name="Success"/>
          <xs:element name="Warnings" minOccurs="0">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="Warning" maxOccurs="unbounded">
                  <xs:complexType mixed="true">
                    <xs:attribute name="Type" use="required" type="def_int_gt0"/>
                    <xs:attribute name="Status">
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:enumeration value="ALPINEBITS_HANDSHAKE"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:attribute>
                  </xs:complexType>
                </xs:element>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="EchoData" type="def_nonempty_string"/>
        </xs:sequence>

      </xs:choice>

      <xs:attribute name="Version" use="required"/>
      <xs:attribute name="TimeStamp"/>
    </xs:complexType>
  </xs:element>


  <!-- ******************************************************************************* -->
  <!-- * Activities                                                                    -->
  <!-- ******************************************************************************* -->

  <!-- Activities: OTA_HotelPostEventNotifRQ -->

  <xs:element name="OTA_HotelPostEventNotifRQ">
    <xs:complexType>
      <xs:sequence>

        <xs:element name="EventReports">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="EventReport" maxOccurs="99">
                <xs:complexType>
                  <xs:sequence>

                    <!-- EventSites -->
                    <xs:element name="EventSites">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="EventSite">
                            <xs:complexType>
                              <xs:sequence>
                                <xs:element name="Event_ID">
                                  <xs:complexType>
                                    <xs:attribute name="ID" type="StringLength1to32" use="required"/>
                                    <xs:attribute name="ID_Context" type="StringLength1to32" use="required"/>
                                    <xs:attribute name="Type" use="required">
                                      <xs:simpleType>
                                        <xs:restriction base="xs:string">
                                          <xs:enumeration value="18"/>
                                        </xs:restriction>
                                      </xs:simpleType>
                                    </xs:attribute>
                                  </xs:complexType>
                                </xs:element>
                              </xs:sequence>
                              <xs:attribute name="HotelCode" use="required" type="def_one_to_sixteen_chars_string"/>
                              <xs:attribute name="HotelName" type="StringLength1to128"/>
                            </xs:complexType>
                          </xs:element>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>

                    <!-- GeneralEventInfo -->
                    <xs:element name="GeneralEventInfo">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="EventContacts" minOccurs="0">
                            <xs:complexType>
                              <xs:sequence>
                                <xs:element name="EventContact" maxOccurs="unbounded">
                                  <xs:complexType>
                                    <xs:sequence>
                                      <xs:element name="PersonName" minOccurs="0">
                                        <xs:complexType>
                                          <xs:sequence>
                                            <xs:element name="GivenName" minOccurs="0">
                                              <xs:complexType>
                                                <xs:simpleContent>
                                                  <xs:extension base="StringLength1to64"/>
                                                </xs:simpleContent>
                                              </xs:complexType>
                                            </xs:element>
                                            <xs:element name="Surname">
                                              <xs:complexType>
                                                <xs:simpleContent>
                                                  <xs:extension base="StringLength1to64"/>
                                                </xs:simpleContent>
                                              </xs:complexType>
                                            </xs:element>
                                          </xs:sequence>
                                        </xs:complexType>
                                      </xs:element>
                                      <xs:element name="URL" minOccurs="0">
                                        <xs:complexType>
                                          <xs:simpleContent>
                                            <xs:extension base="def_nonempty_string">
                                              <xs:attribute name="Type" use="required">
                                                <xs:simpleType>
                                                  <xs:restriction base="xs:string">
                                                    <xs:enumeration value="Image"/>
                                                  </xs:restriction>
                                                </xs:simpleType>
                                              </xs:attribute>
                                            </xs:extension>
                                          </xs:simpleContent>
                                        </xs:complexType>
                                      </xs:element>
                                      <xs:element name="EmployeeInfo" minOccurs="0">
                                        <xs:complexType>
                                          <xs:attribute name="EmployeeId">
                                            <xs:simpleType>
                                              <xs:restriction base="xs:string">
                                                <xs:minLength value="1"/>
                                                <xs:maxLength value="16"/>
                                              </xs:restriction>
                                            </xs:simpleType>
                                          </xs:attribute>
                                        </xs:complexType>
                                      </xs:element>
                                    </xs:sequence>
                                    <xs:attribute name="Role" type="StringLength1to32"/>
                                  </xs:complexType>
                                </xs:element>
                              </xs:sequence>
                            </xs:complexType>
                          </xs:element>
                          <xs:element name="AttendeeInfo" minOccurs="0">
                            <xs:complexType>
                              <xs:attribute name="TotalQuantity" use="required" type="def_int_ge0"/>
                              <xs:attribute name="PreRegisteredQuantity" use="required" type="def_int_ge0"/>
                            </xs:complexType>
                          </xs:element>
                          <xs:element name="Dates" minOccurs="0">
                            <xs:complexType>
                              <xs:sequence>
                                <!-- LatestDate/Start/End are dates or datetimes, but we cannot make a choice between the two,
                                     because XSD would need Elements to be different to distinguish the cases. -->
                                <xs:element name="Date" maxOccurs="99">
                                  <xs:complexType>
                                    <xs:sequence>
                                      <xs:element name="EndDateWindow" minOccurs="0">
                                        <xs:complexType>
                                          <xs:attribute name="LatestDate" use="required" type="DateOrDateTimeType"/>
                                        </xs:complexType>
                                      </xs:element>
                                      <xs:element name="LocationCategories" minOccurs="0">
                                        <xs:complexType>
                                          <xs:sequence>
                                            <xs:element name="Location" minOccurs="0">
                                              <xs:complexType>
                                                <xs:attribute name="AreaID" use="required" type="NumericStringLength1to8"/>
                                              </xs:complexType>
                                            </xs:element>
                                            <xs:element name="Category" maxOccurs="unbounded">
                                              <xs:complexType>
                                                <xs:simpleContent>
                                                  <xs:extension base="def_nonempty_string">
                                                    <xs:attribute name="Language" use="required">
                                                      <xs:simpleType>
                                                        <xs:restriction base="xs:language">
                                                          <xs:pattern value="[a-z][a-z]"/>
                                                        </xs:restriction>
                                                      </xs:simpleType>
                                                    </xs:attribute>
                                                  </xs:extension>
                                                </xs:simpleContent>
                                              </xs:complexType>
                                            </xs:element>
                                          </xs:sequence>
                                        </xs:complexType>
                                      </xs:element>
                                    </xs:sequence>
                                    <xs:attribute name="Start" use="required" type="DateOrTimeOrDateTimeType"/>
                                    <xs:attribute name="End" type="DateOrTimeOrDateTimeType"/>
                                  </xs:complexType>
                                </xs:element>
                              </xs:sequence>
                            </xs:complexType>
                          </xs:element>
                          <xs:element name="Comments" minOccurs="0">
                            <xs:complexType>
                              <xs:sequence>
                                <xs:element name="Comment" maxOccurs="unbounded">
                                  <xs:complexType>
                                    <xs:sequence>
                                      <xs:element name="Text" minOccurs="0" maxOccurs="unbounded">
                                        <xs:complexType>
                                          <xs:simpleContent>
                                            <xs:extension base="def_nonempty_string">
                                              <xs:attribute name="Language">
                                                <xs:simpleType>
                                                  <xs:restriction base="xs:language">
                                                    <xs:pattern value="[a-z][a-z]"/>
                                                  </xs:restriction>
                                                </xs:simpleType>
                                              </xs:attribute>
                                            </xs:extension>
                                          </xs:simpleContent>
                                        </xs:complexType>
                                      </xs:element>
                                      <xs:element name="Image" minOccurs="0" maxOccurs="unbounded">
                                        <xs:complexType>
                                          <xs:simpleContent>
                                            <xs:extension base="def_nonempty_string"/>
                                          </xs:simpleContent>
                                        </xs:complexType>
                                      </xs:element>
                                    </xs:sequence>
                                    <xs:attribute name="Name" use="required">
                                      <xs:simpleType>
                                        <xs:restriction base="xs:string">
                                          <xs:enumeration value="Title"/>
                                          <xs:enumeration value="Category"/>
                                          <xs:enumeration value="Gallery"/>
                                          <xs:enumeration value="Description"/>
                                        </xs:restriction>
                                      </xs:simpleType>
                                    </xs:attribute>
                                  </xs:complexType>
                                </xs:element>
                              </xs:sequence>
                            </xs:complexType>
                          </xs:element>
                        </xs:sequence>
                        <xs:attribute name="Type" type="def_nonempty_string"/>
                        <xs:attribute name="URL" type="def_url_string"/>
                        <xs:attribute name="Acronym" type="StringLength1to32"/>
                      </xs:complexType>
                    </xs:element>

                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
      <xs:attribute name="Version" use="required"/>
    </xs:complexType>
  </xs:element>

  <!-- Activities: OTA_HotelPostEventNotifRS -->

  <xs:element name="OTA_HotelPostEventNotifRS">
    <xs:complexType>
      <xs:group ref="def_generic_response"/>
      <xs:attribute name="Version" use="required"/>
      <xs:attribute name="TimeStamp"/>
    </xs:complexType>
  </xs:element>


  <!-- ******************************************************************************* -->
  <!-- * FreeRooms                                                                     -->
  <!-- ******************************************************************************* -->

  <!-- FreeRooms: OTA_HotelInvCountNotifRQ -->

  <xs:element name="OTA_HotelInvCountNotifRQ">
    <xs:complexType>
      <xs:sequence>

        <!-- UniqueID {0,1} -->

        <xs:element name="UniqueID" minOccurs="0">
          <xs:complexType>
            <xs:attribute name="Type" use="required">
              <xs:simpleType>
                <xs:restriction base="xs:string">
                  <xs:enumeration value="16"/>
                  <xs:enumeration value="35"/>
                </xs:restriction>
              </xs:simpleType>
            </xs:attribute>
            <xs:attribute name="ID" use="required" type="xs:string"/> <!-- an ID is required by OTA, we ignore the value -->
            <xs:attribute name="Instance" use="required">
              <xs:simpleType>
                <xs:restriction base="xs:string">
                  <xs:enumeration value="CompleteSet"/>
                </xs:restriction>
              </xs:simpleType>
            </xs:attribute>
          </xs:complexType>
        </xs:element>

        <!-- Inventories {1} -->

        <xs:element name="Inventories">
          <xs:complexType>
            <xs:sequence>

              <!-- Inventories > Inventory (1,} -->

              <xs:element name="Inventory" maxOccurs="unbounded">
                <xs:complexType>

                  <!-- Inventories > Inventory > StatusApplicationControl {0,1} -->

                  <xs:sequence>
                    <xs:element name="StatusApplicationControl" minOccurs="0">
                      <xs:complexType>
                        <xs:attribute name="Start" use="required" type="def_date"/>
                        <xs:attribute name="End" use="required" type="def_date"/>
                        <xs:attribute name="InvTypeCode" type="def_invTypeCode_string"/>
                        <xs:attribute name="InvCode" type="StringLength1to16"/>
                        <xs:attribute name="AllInvCode" type="def_bool"/>
                      </xs:complexType>
                    </xs:element>

                    <xs:element name="InvCounts" minOccurs="0">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="InvCount" maxOccurs="3">
                            <xs:complexType>
                              <xs:attribute name="CountType" use="required">
                                <xs:simpleType>
                                  <xs:restriction base="xs:string">
                                    <xs:enumeration value="2"/>
                                    <xs:enumeration value="6"/>
                                    <xs:enumeration value="9"/>
                                  </xs:restriction>
                                </xs:simpleType>
                              </xs:attribute>

                              <xs:attribute name="Count" use="required" type="def_int_ge0"/>
                            </xs:complexType>
                          </xs:element>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
            <xs:attribute name="HotelCode" use="required" type="StringLength1to16"/>
            <xs:attribute name="HotelName" type="StringLength1to128"/>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
      <xs:attribute name="Version" use="required"/>
    </xs:complexType>
  </xs:element>

  <!-- FreeRooms: OTA_HotelInvCountNotifRS -->

  <xs:element name="OTA_HotelInvCountNotifRS">
    <xs:complexType>
      <xs:group ref="def_generic_response"/>
      <xs:attribute name="Version" use="required"/>
      <xs:attribute name="TimeStamp"/>
    </xs:complexType>
  </xs:element>


  <!-- ******************************************************************************* -->
  <!-- * GuestRequests                                                                 -->
  <!-- ******************************************************************************* -->

  <!-- GuestRequests (push): OTA_HotelResNotifRQ -->

  <xs:element name="OTA_HotelResNotifRQ">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="HotelReservations">
          <xs:complexType>
            <xs:sequence>
              <xs:group ref="def_hotelreservation"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
      <xs:attribute name="Version" use="required"/>
      <xs:attribute name="TimeStamp"/>
    </xs:complexType>
  </xs:element>

  <!-- GuestRequests (push): OTA_HotelResNotifRS -->

  <xs:element name="OTA_HotelResNotifRS">
    <xs:complexType>
      <xs:sequence>

        <xs:choice>

          <!-- choice: Errors {1} -->

          <xs:element name="Errors">
            <xs:complexType>
              <xs:sequence>

                <!-- Errors > Error {1,} -->

                <xs:element name="Error" maxOccurs="unbounded">
                  <xs:complexType mixed="true">
                    <xs:attribute name="Type" use="required">
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:enumeration value="11"/>
                          <xs:enumeration value="13"/>
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:attribute>
                    <xs:attribute name="Code" type="def_int_ge0"/>
                    <xs:attribute name="Status" type="def_send_complete"/>
                  </xs:complexType>
                </xs:element>

              </xs:sequence>
            </xs:complexType>
          </xs:element>

          <!-- choice: Success {1} + Warnings {0,1} + HotelReservations {1} -->

          <xs:sequence>

            <xs:element name="Success"/>

            <xs:element name="Warnings" minOccurs="0">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="Warning" maxOccurs="unbounded">
                    <xs:complexType mixed="true">
                      <xs:attribute name="Type" use="required" type="def_int_gt0"/>
                      <xs:attribute name="Code" use="required" type="def_int_gt0"/>
                      <xs:attribute name="RecordID" use="required" type="StringLength1to64"/>
                      <xs:attribute name="Status" type="def_send_complete"/>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>

            <xs:element name="HotelReservations">
              <xs:complexType>
                <xs:sequence>

                  <xs:element name="HotelReservation" maxOccurs="unbounded">
                    <xs:complexType>
                      <xs:sequence>

                        <xs:element name="UniqueID">
                          <xs:complexType>
                            <xs:attribute name="Type" use="required">
                              <xs:simpleType>
                                <xs:restriction base="xs:string">
                                  <xs:enumeration value="14"/>
                                  <xs:enumeration value="15"/>
                                </xs:restriction>
                              </xs:simpleType>
                            </xs:attribute>
                            <xs:attribute name="ID" use="required" type="StringLength1to32"/>
                          </xs:complexType>
                        </xs:element>

                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>

                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>

        </xs:choice>

      </xs:sequence>
      <xs:attribute name="Version" use="required"/>
      <xs:attribute name="TimeStamp"/>
    </xs:complexType>
  </xs:element>

  <!-- GuestRequests: OTA_ReadRQ -->

  <xs:element name="OTA_ReadRQ">
    <xs:complexType>
      <xs:sequence>

        <xs:element name="ReadRequests">
          <xs:complexType>
            <xs:sequence>

              <xs:element name="HotelReadRequest">
                <xs:complexType>
                  <xs:sequence>

                    <xs:element name="SelectionCriteria" minOccurs="0">
                      <xs:complexType>
                        <xs:attribute name="Start" use="required" type="def_datetime"/>
                      </xs:complexType>
                    </xs:element>

                  </xs:sequence>
                  <xs:attribute name="HotelCode" use="required" type="StringLength1to16"/> 
                  <xs:attribute name="HotelName" type="StringLength1to128"/>
                </xs:complexType>
              </xs:element>

            </xs:sequence>
          </xs:complexType>
        </xs:element>

      </xs:sequence>
      <xs:attribute name="Version" use="required"/>
      <xs:attribute name="TimeStamp"/>
    </xs:complexType>
  </xs:element>

  <!-- GuestRequests: OTA_ResRetrieveRS -->

  <xs:element name="OTA_ResRetrieveRS">
    <xs:complexType>

      <xs:choice>

        <!-- choice: Errors {1} -->

        <xs:element name="Errors">
          <xs:complexType>
            <xs:sequence>

              <!-- Errors > Error {1,} -->

              <xs:element name="Error" maxOccurs="unbounded">
                <xs:complexType mixed="true">
                  <xs:attribute name="Type" use="required">
                    <xs:simpleType>
                      <xs:restriction base="xs:string">
                        <xs:enumeration value="11"/>
                        <xs:enumeration value="13"/>
                      </xs:restriction>
                    </xs:simpleType>
                  </xs:attribute>
                  <xs:attribute name="Code" type="def_int_ge0"/>
                  <xs:attribute name="Status" type="def_send_complete"/>
                </xs:complexType>
              </xs:element>

            </xs:sequence>
          </xs:complexType>
        </xs:element>

        <!-- choice: Success {1} + Warnings {0,1} + ReservationsList {1} -->

        <xs:sequence>

          <xs:element name="Success"/>

          <xs:element name="Warnings" minOccurs="0">
            <xs:complexType>
              <xs:sequence>

                <!-- Warnings > Warning {1,} -->

                <xs:element name="Warning" maxOccurs="unbounded">
                  <xs:complexType mixed="true">
                    <xs:attribute name="Type" use="required" type="def_int_gt0"/>
                    <xs:attribute name="Code" type="def_int_ge0"/>
                    <xs:attribute name="RecordID" type="StringLength1to64"/>
                    <xs:attribute name="Status" type="def_send_complete"/>
                  </xs:complexType>
                </xs:element>

              </xs:sequence>
            </xs:complexType>
          </xs:element>

          <xs:element name="ReservationsList">
            <xs:complexType>
              <xs:sequence>
                <xs:group ref="def_hotelreservation"/>
              </xs:sequence>
            </xs:complexType>
          </xs:element>

        </xs:sequence>

      </xs:choice>

      <xs:attribute name="Version" use="required"/>
      <xs:attribute name="TimeStamp"/>
    </xs:complexType>
  </xs:element>

  <!-- GuestRequests: OTA_NotifReportRQ -->

  <xs:element name="OTA_NotifReportRQ">
    <xs:complexType>
      <xs:sequence>

        <xs:element name="Success"/>

        <xs:element name="Warnings" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Warning" maxOccurs="unbounded">
                <xs:complexType mixed="true">
                  <xs:attribute name="Type" use="required" type="def_int_gt0"/>
                  <xs:attribute name="Code" use="required" type="def_int_gt0"/>
                  <xs:attribute name="RecordID" use="required" type="StringLength1to64"/>
                  <xs:attribute name="Status" type="def_send_complete"/>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>

        <xs:element name="NotifDetails" minOccurs="0">
          <xs:complexType>
            <xs:sequence>

              <xs:element name="HotelNotifReport">
                <xs:complexType>
                  <xs:sequence>

                    <xs:element name="HotelReservations">
                      <xs:complexType>
                        <xs:sequence>

                          <xs:element name="HotelReservation" maxOccurs="unbounded">
                            <xs:complexType>
                              <xs:sequence>

                                <xs:element name="UniqueID">
                                  <xs:complexType>
                                    <xs:attribute name="Type" use="required">
                                      <xs:simpleType>
                                        <xs:restriction base="xs:string">
                                          <xs:enumeration value="14"/>
                                          <xs:enumeration value="15"/>
                                        </xs:restriction>
                                      </xs:simpleType>
                                    </xs:attribute>
                                    <xs:attribute name="ID" use="required" type="StringLength1to32"/>
                                  </xs:complexType>
                                </xs:element>

                              </xs:sequence>
                            </xs:complexType>
                          </xs:element>

                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>

                  </xs:sequence>
                </xs:complexType>
              </xs:element>

            </xs:sequence>
          </xs:complexType>
        </xs:element>

      </xs:sequence>
      <xs:attribute name="Version" use="required"/>
      <xs:attribute name="TimeStamp"/>
    </xs:complexType>
  </xs:element>

  <!-- GuestRequests: OTA_NotifReportRS -->

  <xs:element name="OTA_NotifReportRS">
    <xs:complexType>

      <xs:choice>

        <!-- choice: Errors {1} -->

        <xs:element name="Errors">
          <xs:complexType>
            <xs:sequence>

              <!-- Errors > Error {1,} -->

              <xs:element name="Error" maxOccurs="unbounded">
                <xs:complexType mixed="true">
                  <xs:attribute name="Type" use="required">
                    <xs:simpleType>
                      <xs:restriction base="xs:string">
                        <xs:enumeration value="11"/>
                        <xs:enumeration value="13"/>
                      </xs:restriction>
                    </xs:simpleType>
                  </xs:attribute>
                  <xs:attribute name="Code" type="def_int_ge0"/>
                  <xs:attribute name="Status" type="def_send_complete"/>
                </xs:complexType>
              </xs:element>

            </xs:sequence>
          </xs:complexType>
        </xs:element>

        <!-- choice: Success {1}, Warnings{0,}  -->

        <xs:sequence>
          <xs:element name="Success"/>

          <xs:element name="Warnings" minOccurs="0">
            <xs:complexType>
              <xs:sequence>

                <!-- Warnings > Warning {1,} -->

                <xs:element name="Warning" maxOccurs="unbounded">
                  <xs:complexType mixed="true">
                    <xs:attribute name="Type" use="required" type="def_int_gt0"/>
                    <xs:attribute name="RecordID" type="StringLength1to64"/>
                    <xs:attribute name="Status" type="def_send_complete"/>
                  </xs:complexType>
                </xs:element>

              </xs:sequence>
            </xs:complexType>
          </xs:element>

        </xs:sequence>



      </xs:choice>

      <xs:attribute name="Version" use="required"/>
      <xs:attribute name="TimeStamp"/>

    </xs:complexType>
  </xs:element>


  <!-- ******************************************************************************* -->
  <!-- * Inventory/Basic (Push) and Inventory/HotelInfo (Push)                         -->
  <!-- ******************************************************************************* -->

  <!-- Inventory: OTA_HotelDescriptiveContentNotifRQ -->

  <xs:element name="OTA_HotelDescriptiveContentNotifRQ">
    <xs:complexType>
      <xs:sequence>

        <xs:group ref="def_hoteldescriptivecontents"/>

      </xs:sequence>
      <xs:attribute name="Version" use="required"/>
      <xs:attribute name="TimeStamp"/>
    </xs:complexType>
  </xs:element>

  <!-- Inventory: OTA_HotelDescriptiveContentNotifRS -->

  <xs:element name="OTA_HotelDescriptiveContentNotifRS">
    <xs:complexType>
      <xs:group ref="def_generic_response"/>
      <xs:attribute name="Version" use="required"/>
      <xs:attribute name="TimeStamp"/>
    </xs:complexType>
  </xs:element>


  <!-- ******************************************************************************* -->
  <!-- * Inventory/Basic (Pull) and Inventory/HotelInfo (Pull)                         -->
  <!-- ******************************************************************************* -->

  <!-- Inventory: OTA_HotelDescriptiveInfoRQ -->

  <xs:element name="OTA_HotelDescriptiveInfoRQ">
    <xs:complexType>
      <xs:sequence>

        <xs:element name="HotelDescriptiveInfos">
          <xs:complexType>
            <xs:sequence>

              <xs:element name="HotelDescriptiveInfo">
                <xs:complexType>
                  <xs:attribute name="HotelCode" use="required" type="StringLength1to16"/>
                  <xs:attribute name="HotelName" type="StringLength1to128"/>
                </xs:complexType>
              </xs:element>

            </xs:sequence>
          </xs:complexType>
        </xs:element>

      </xs:sequence>
      <xs:attribute name="Version" use="required"/>
      <xs:attribute name="TimeStamp"/>
    </xs:complexType>
  </xs:element>

  <!-- Inventory: OTA_HotelDescriptiveInfoRS -->

  <xs:element name="OTA_HotelDescriptiveInfoRS">
    <xs:complexType>

      <xs:choice>

        <!-- choice: Errors {1} -->

        <xs:element name="Errors">
          <xs:complexType>
            <xs:sequence>

              <!-- Errors > Error {1,} -->

              <xs:element name="Error" maxOccurs="unbounded">
                <xs:complexType mixed="true">
                  <xs:attribute name="Type" use="required">
                    <xs:simpleType>
                      <xs:restriction base="xs:string">
                        <xs:enumeration value="11"/>
                        <xs:enumeration value="13"/>
                      </xs:restriction>
                    </xs:simpleType>
                  </xs:attribute>
                  <xs:attribute name="Code" type="def_int_ge0"/>
                  <xs:attribute name="Status" type="def_send_complete"/>
                </xs:complexType>
              </xs:element>

            </xs:sequence>
          </xs:complexType>
        </xs:element>

        <!-- choice: Success {1} + Warnings {0, } + HotelDescriptiveContents {1} -->

        <xs:sequence>
          <xs:element name="Success"/>

          <xs:element name="Warnings" minOccurs="0">
            <xs:complexType>
              <xs:sequence>

                <!-- Warnings > Warning {1,} -->

                <xs:element name="Warning" maxOccurs="unbounded">
                  <xs:complexType mixed="true">
                    <xs:attribute name="Type" use="required" type="def_int_gt0"/>
                    <xs:attribute name="RecordID" type="StringLength1to64"/>
                    <xs:attribute name="Status" type="def_send_complete"/>
                  </xs:complexType>
                </xs:element>

              </xs:sequence>
            </xs:complexType>
          </xs:element>

          <xs:group ref="def_hoteldescriptivecontents"/>
        </xs:sequence>

      </xs:choice>

      <xs:attribute name="Version" use="required"/>
      <xs:attribute name="TimeStamp"/>

    </xs:complexType>
  </xs:element>


  <!-- ******************************************************************************* -->
  <!-- * RatePlans                                                                     -->
  <!-- ******************************************************************************* -->

  <!-- RatePlans: OTA_HotelRatePlanNotifRQ -->

  <xs:element name="OTA_HotelRatePlanNotifRQ">
    <xs:complexType>
      <xs:sequence>

        <!-- UniqueID {0,1} -->

        <xs:element name="UniqueID" minOccurs="0">
          <xs:complexType>
            <xs:attribute name="Type" use="required">
              <xs:simpleType>
                <xs:restriction base="xs:string">
                  <xs:enumeration value="16"/>
                </xs:restriction>
              </xs:simpleType>
            </xs:attribute>
            <xs:attribute name="ID" use="required" type="xs:string"/> <!-- an ID is required by OTA, we ignore the value -->
            <xs:attribute name="Instance" use="required">
              <xs:simpleType>
                <xs:restriction base="xs:string">
                  <xs:enumeration value="CompleteSet"/>
                </xs:restriction>
              </xs:simpleType>
            </xs:attribute>
          </xs:complexType>
        </xs:element>

        <!-- RatePlans {1} -->

        <xs:group ref="def_rateplans"/>

      </xs:sequence>
      <xs:attribute name="Version" use="required"/>
      <xs:attribute name="TimeStamp"/>
    </xs:complexType>
  </xs:element>

  <!-- RatePlans: OTA_HotelRatePlanNotifRS -->

  <xs:element name="OTA_HotelRatePlanNotifRS">
    <xs:complexType>
      <xs:group ref="def_generic_response"/>
      <xs:attribute name="Version" use="required"/>
      <xs:attribute name="TimeStamp"/>
    </xs:complexType>
  </xs:element>


  <!-- ******************************************************************************* -->
  <!-- * BaseRates                                                                     -->
  <!-- ******************************************************************************* -->

  <!-- BaseRates: OTA_HotelRatePlanRQ -->

  <xs:element name="OTA_HotelRatePlanRQ">
    <xs:complexType>
      <xs:sequence>

        <!-- RatePlans {1} -->

        <xs:element name="RatePlans">
          <xs:complexType>
            <xs:sequence>

              <!-- RatePlans > RatePlan {1} -->

              <xs:element name="RatePlan">
                <xs:complexType>
                  <xs:sequence>

                    <xs:choice maxOccurs="unbounded">

                      <xs:element name="DateRange">
                        <xs:complexType>
                          <xs:attribute name="Start" type="def_date"/>
                          <xs:attribute name="End" type="def_date"/>
                        </xs:complexType>
                      </xs:element>

                      <xs:element name="RatePlanCandidates">
                        <xs:complexType>
                          <xs:sequence>
                            <xs:element name="RatePlanCandidate" maxOccurs="unbounded">
                              <xs:complexType>
                                <xs:attribute name="RatePlanCode" type="StringLength1to64"/>
                                <xs:attribute name="RatePlanID" type="StringLength1to64"/>
                              </xs:complexType>
                            </xs:element>
                          </xs:sequence>
                        </xs:complexType>
                      </xs:element>

                      <xs:element name="HotelRef">
                        <xs:complexType>
                          <xs:attribute name="HotelCode" use="required" type="StringLength1to16"/>
                          <xs:attribute name="HotelName" type="StringLength1to128"/>
                        </xs:complexType>
                      </xs:element>

                    </xs:choice>

                  </xs:sequence>
                </xs:complexType>
              </xs:element>

            </xs:sequence>
          </xs:complexType>
        </xs:element>

      </xs:sequence>
      <xs:attribute name="Version" use="required"/>
      <xs:attribute name="TimeStamp"/>

    </xs:complexType>
  </xs:element>

  <!-- BaseRates: OTA_HotelRatePlanRS -->

  <xs:element name="OTA_HotelRatePlanRS">
    <xs:complexType>

      <xs:choice>

        <!-- choice: Errors {1} -->

        <xs:element name="Errors">
          <xs:complexType>
            <xs:sequence>

              <!-- Errors > Error {1,} -->

              <xs:element name="Error" maxOccurs="unbounded">
                <xs:complexType mixed="true">
                  <xs:attribute name="Type" use="required">
                    <xs:simpleType>
                      <xs:restriction base="xs:string">
                        <xs:enumeration value="11"/>
                        <xs:enumeration value="13"/>
                      </xs:restriction>
                    </xs:simpleType>
                  </xs:attribute>
                  <xs:attribute name="Code" type="def_int_ge0"/>
                  <xs:attribute name="Status" type="def_send_complete"/>
                </xs:complexType>
              </xs:element>

            </xs:sequence>
          </xs:complexType>
        </xs:element>

        <!-- choice: Success {1} + Warnings {0, } + RatePlans {1} -->

        <xs:sequence>
          <xs:element name="Success"/>

          <xs:element name="Warnings" minOccurs="0">
            <xs:complexType>
              <xs:sequence>

                <!-- Warnings > Warning {1,} -->

                <xs:element name="Warning" maxOccurs="unbounded">
                  <xs:complexType mixed="true">
                    <xs:attribute name="Type" use="required" type="def_int_gt0"/>
                    <xs:attribute name="RecordID" type="StringLength1to64"/>
                    <xs:attribute name="Status" type="def_send_complete"/>
                  </xs:complexType>
                </xs:element>

              </xs:sequence>
            </xs:complexType>
          </xs:element>

          <xs:group ref="def_rateplans"/>
        </xs:sequence>

      </xs:choice>
      <xs:attribute name="Version" use="required"/>
      <xs:attribute name="TimeStamp"/>

    </xs:complexType>
  </xs:element>


  <!-- ******************************************************************************* -->
  <!-- * common definition of HotelReservation used in GuestRequests                   -->
  <!-- ******************************************************************************* -->

  <xs:group name="def_hotelreservation">
    <xs:sequence>

      <!-- HotelReservation {0,} -->

      <xs:element name="HotelReservation" maxOccurs="unbounded" minOccurs="0">
        <xs:complexType>
          <xs:sequence>

            <!-- HotelReservation > UniqueID {1} -->

            <xs:element name="UniqueID">
              <xs:complexType>
                <xs:attribute name="Type" use="required">
                  <xs:simpleType>
                    <xs:restriction base="xs:string">
                      <xs:enumeration value="14"/>
                      <xs:enumeration value="15"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
                <xs:attribute name="ID" use="required" type="StringLength1to32"/>
              </xs:complexType>
            </xs:element>

            <!-- HotelReservation > RoomStays {0,1} -->

            <xs:element name="RoomStays" minOccurs="0">
              <xs:complexType>
                <xs:sequence>

                  <!-- HotelReservation > RoomStays > RoomStay {1,} -->

                  <xs:element name="RoomStay" maxOccurs="unbounded">
                    <xs:complexType>
                      <xs:sequence>

                        <!-- HotelReservation > RoomStays > RoomStay > RoomTypes {0,1} -->

                        <xs:element name="RoomTypes" minOccurs="0">
                          <xs:complexType>
                            <xs:sequence>

                              <!-- HotelReservation > RoomStays > RoomStay > RoomTypes > RoomType {1} -->

                              <xs:element name="RoomType">
                                <xs:complexType>
                                  <xs:attribute name="RoomTypeCode" type="def_invTypeCode_string"/>
                                  <xs:attribute name="RoomClassificationCode" type="def_int_ge0"/>
                                  <xs:attribute name="RoomType">
                                    <xs:simpleType>
                                      <xs:restriction base="xs:string">
                                        <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:enumeration value="8"/>
                                        <xs:enumeration value="9"/>
                                      </xs:restriction>
                                    </xs:simpleType>
                                  </xs:attribute>
                                </xs:complexType>
                              </xs:element>

                            </xs:sequence>
                          </xs:complexType>
                        </xs:element>

                        <!-- HotelReservation > RoomStays > RoomStay > RatePlans {0,1} -->

                        <xs:element name="RatePlans" minOccurs="0">
                          <xs:complexType>
                            <xs:sequence>

                              <!-- HotelReservation > RoomStays > RoomStay > RatePlans > RatePlan {1} -->

                              <xs:element name="RatePlan">
                                <xs:complexType>
                                  <xs:sequence>

                                    <!-- HotelReservation > RoomStays > RoomStay > RatePlans > RatePlan > Commission {0,1} -->

                                    <xs:element name="Commission" minOccurs="0">
                                      <xs:complexType>
                                        <xs:sequence>
                                          <xs:element name="CommissionPayableAmount" minOccurs="0">
                                            <xs:complexType>
                                              <xs:attribute name="Amount" type="def_decimal_ge0"/>
                                              <xs:attribute name="CurrencyCode" type="def_three_char_string"/>
                                            </xs:complexType>
                                          </xs:element>
                                        </xs:sequence>
                                        <xs:attribute name="Percent" type="def_int_ge0"/>
                                      </xs:complexType>
                                    </xs:element>

                                    <!-- HotelReservation > RoomStays > RoomStay > RatePlans > RatePlan > MealsIncluded {0,1} -->

                                    <xs:element name="MealsIncluded" minOccurs="0">
                                      <xs:complexType>
                                        <xs:attribute name="MealPlanIndicator" use="required">
                                          <xs:simpleType>
                                            <xs:restriction base="xs:string">
                                              <xs:enumeration value="1"/>
                                              <xs:enumeration value="true"/>
                                            </xs:restriction>
                                          </xs:simpleType>
                                        </xs:attribute>
                                        <xs:attribute name="MealPlanCodes" use="required">
                                          <xs:simpleType>
                                            <xs:restriction base="xs:string">
                                              <xs:enumeration value="1"/>
                                              <xs:enumeration value="3"/>
                                              <xs:enumeration value="10"/>
                                              <xs:enumeration value="12"/>
                                              <xs:enumeration value="14"/>
                                            </xs:restriction>
                                          </xs:simpleType>
                                        </xs:attribute>
                                      </xs:complexType>
                                    </xs:element>

                                  </xs:sequence>
                                  <xs:attribute name="RatePlanCode" type="StringLength1to64"/>
                                </xs:complexType>
                              </xs:element>

                            </xs:sequence>
                          </xs:complexType>
                        </xs:element>

                        <!-- HotelReservation > RoomStays > RoomStay > RoomRates {0,1} -->

                        <xs:element name="RoomRates" minOccurs="0">
                          <xs:complexType>
                            <xs:sequence>

                              <!-- HotelReservation > RoomStays > RoomStay > RoomRates > RoomRate {1} -->

                              <xs:element name="RoomRate">
                                <xs:complexType>
                                  <xs:sequence>

                                    <!-- HotelReservation > RoomStays > RoomStay > RoomRates > RoomRate > Rates {1} -->

                                    <xs:element name="Rates" minOccurs="1">
                                      <xs:complexType>
                                        <xs:sequence>

                                          <!-- HotelReservation > RoomStays > RoomStay > RoomRates > RoomRate > Rates > Rate {1,} -->

                                          <xs:element name="Rate" maxOccurs="unbounded">
                                            <xs:complexType>
                                              <xs:sequence>

                                                <!-- HotelReservation > RoomStays > RoomStay > RoomRates > RoomRate > Rates > Rate > Base {1} -->

                                                <xs:element name="Base" maxOccurs="unbounded">
                                                  <xs:complexType>
                                                    <xs:attribute name="AmountAfterTax" type="def_decimal_gt0"/>
                                                    <xs:attribute name="CurrencyCode"   type="def_three_char_string"/>
                                                  </xs:complexType>
                                                </xs:element>

                                              </xs:sequence>

                                              <xs:attribute name="EffectiveDate" use="required" type="def_date"/>
                                              <xs:attribute name="ExpireDate" type="def_date"/>
                                              <xs:attribute name="ExpireDateExclusiveInd" type="def_bool"/>
                                              <xs:attribute name="RateTimeUnit">
                                                <xs:simpleType>
                                                  <xs:restriction base="xs:string">
                                                    <xs:enumeration value="Day"/>
                                                  </xs:restriction>
                                                </xs:simpleType>
                                              </xs:attribute>
                                              <xs:attribute name="UnitMultiplier" type="def_int_gt0"/>
                                            </xs:complexType>
                                          </xs:element>

                                        </xs:sequence>
                                      </xs:complexType>
                                    </xs:element>

                                  </xs:sequence>
                                  <xs:attribute name="RatePlanCode" use="required" type="StringLength1to64"/>
                                  <xs:attribute name="RoomTypeCode" use="required" type="def_invTypeCode_string"/>
                                </xs:complexType>
                              </xs:element>

                            </xs:sequence>
                          </xs:complexType>
                        </xs:element>

                        <!-- HotelReservation > RoomStays > RoomStay > GuestCounts {0,1} -->

                        <xs:element name="GuestCounts" minOccurs="0">
                          <xs:complexType>
                            <xs:sequence>

                              <!-- HotelReservation > RoomStays > RoomStay > GuestCounts > GuestCount {1,} -->

                              <xs:element name="GuestCount" maxOccurs="unbounded">
                                <xs:complexType>
                                  <xs:attribute name="Count" use="required" type="def_int_gt0"/>
                                  <xs:attribute name="Age" type="def_int_ge0"/>
                                </xs:complexType>
                              </xs:element>

                            </xs:sequence>
                          </xs:complexType>
                        </xs:element>

                        <!-- HotelReservation > RoomStays > RoomStay > TimeSpan {1} -->

                        <xs:element name="TimeSpan">
                          <xs:complexType>
                            <xs:sequence>

                              <!-- HotelReservation > RoomStays > RoomStay > TimeSpan > StartDateWindow {0,1} -->

                              <xs:element name="StartDateWindow" minOccurs="0">
                                <xs:complexType>
                                  <xs:attribute name="EarliestDate" use="required" type="def_date"/>
                                  <xs:attribute name="LatestDate" use="required" type="def_date"/>
                                </xs:complexType>
                              </xs:element>

                            </xs:sequence>
                            <xs:attribute name="Start" type="def_date"/>
                            <xs:attribute name="End" type="def_date"/>
                            <xs:attribute name="Duration">
                              <xs:simpleType>
                                <xs:restriction base="xs:string">
                                  <xs:pattern value="P[0-9]+N"/>
                                </xs:restriction>
                              </xs:simpleType>
                            </xs:attribute>
                          </xs:complexType>
                        </xs:element>

                        <!-- HotelReservation > RoomStays > RoomStay > Guarantee {0,1} -->

                        <xs:element name="Guarantee" minOccurs="0">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="GuaranteesAccepted">
                                <xs:complexType>
                                  <xs:sequence>
                                    <xs:element name="GuaranteeAccepted">
                                      <xs:complexType>
                                        <xs:sequence>

                                          <xs:element name="PaymentCard">
                                            <xs:complexType>
                                              <xs:sequence>
                                                <xs:element name="CardHolderName" type="StringLength1to64"/>

                                                <xs:element name="CardNumber">
                                                  <xs:complexType>
                                                    <xs:sequence>
                                                      <xs:element name="PlainText" type="def_nonempty_string" minOccurs="0"/>
                                                    </xs:sequence>
                                                    <xs:attribute name="EncryptedValue" type="def_nonempty_string"/>
                                                    <xs:attribute name="EncryptionMethod" type="def_nonempty_string"/>
                                                  </xs:complexType>
                                                </xs:element>

                                              </xs:sequence>
                                              <xs:attribute name="CardCode" use="required">
                                                <xs:simpleType>
                                                  <xs:restriction base="xs:string">
                                                    <xs:pattern value="[A-Z][A-Z]?"/>
                                                  </xs:restriction>
                                                </xs:simpleType>
                                              </xs:attribute>
                                              <xs:attribute name="ExpireDate" use="required">
                                                <xs:simpleType>
                                                  <xs:restriction base="xs:string">
                                                    <xs:pattern value="[0-9][0-9][0-9][0-9]"/>
                                                  </xs:restriction>
                                                </xs:simpleType>
                                              </xs:attribute>
                                            </xs:complexType>
                                          </xs:element>

                                        </xs:sequence>
                                      </xs:complexType>
                                    </xs:element>
                                  </xs:sequence>
                                </xs:complexType>
                              </xs:element>
                            </xs:sequence>
                          </xs:complexType>
                        </xs:element>

                        <!-- HotelReservation > RoomStays > RoomStay > Total {0,1} -->

                        <xs:element name="Total" minOccurs="0">
                          <xs:complexType>
                            <xs:attribute name="AmountAfterTax" use="required" type="def_decimal_ge0"/>
                            <xs:attribute name="CurrencyCode" use="required" type="def_three_char_string"/>
                          </xs:complexType>
                        </xs:element>

                        <!-- HotelReservation > RoomStays > RoomStay > ServiceRPHs {0,1} -->
                        <xs:element name="ServiceRPHs" minOccurs="0">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="ServiceRPH" maxOccurs="unbounded">
                                <xs:complexType>
                                  <xs:attribute name="RPH" use="required">
                                    <xs:simpleType>
                                      <xs:restriction base="xs:string">
                                        <xs:pattern value="[0-9]{1,8}"/>
                                      </xs:restriction>
                                    </xs:simpleType>
                                  </xs:attribute>
                                </xs:complexType>
                              </xs:element>
                            </xs:sequence>
                          </xs:complexType>
                        </xs:element>

                      </xs:sequence>
                      <xs:attribute name="RoomStayGroupID" type="StringLength1to32"/>
                    </xs:complexType>
                  </xs:element>

                </xs:sequence>
              </xs:complexType>
            </xs:element>

            <!-- HotelReservation > Services {0,1} -->

            <xs:element name="Services" minOccurs="0">
              <xs:complexType>
                <xs:sequence>

                  <!-- HotelReservation > Services > Service {1,} -->

                  <xs:element name="Service" maxOccurs="unbounded">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="ServiceDetails" minOccurs="1">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="GuestCounts" minOccurs="0">
                                <xs:complexType>
                                  <xs:sequence>
                                    <xs:element name="GuestCount" maxOccurs="99">
                                      <xs:complexType>
                                        <xs:attribute name="Age" type="def_int_gt0"/>
                                        <xs:attribute name="Count" type="def_int_gt0" use="required"/>
                                      </xs:complexType>
                                    </xs:element>
                                  </xs:sequence>
                                </xs:complexType>
                              </xs:element>
                              <xs:element name="TimeSpan" minOccurs="0">
                                <xs:complexType>
                                  <xs:attribute name="Start" type="def_datetime" use="required"/>
                                  <xs:attribute name="End" type="def_datetime"/>
                                </xs:complexType>
                              </xs:element>
                              <xs:element name="Comments" minOccurs="0">
                                <xs:complexType>
                                  <xs:sequence>
                                    <xs:element name="Comment">
                                      <xs:complexType>
                                        <xs:sequence>
                                          <xs:element name="Text">
                                            <xs:complexType>
                                              <xs:simpleContent>
                                                <xs:extension base="def_nonempty_string">
                                                  <xs:attribute name="TextFormat" use="required">
                                                    <xs:simpleType>
                                                      <xs:restriction base="xs:string">
                                                        <xs:enumeration value="PlainText"/>
                                                      </xs:restriction>
                                                    </xs:simpleType>
                                                  </xs:attribute>
                                                </xs:extension>
                                              </xs:simpleContent>
                                            </xs:complexType>
                                          </xs:element>
                                        </xs:sequence>
                                      </xs:complexType>
                                    </xs:element>
                                  </xs:sequence>
                                </xs:complexType>
                              </xs:element>
                              <xs:element name="Total">
                                <xs:complexType>
                                  <xs:attribute name="AmountAfterTax" use="required" type="def_decimal_ge0"/>
                                  <xs:attribute name="CurrencyCode" use="required" type="def_three_char_string"/>
                                </xs:complexType>
                              </xs:element>
                              <xs:element name="ServiceDescription" minOccurs="0">
                                <xs:complexType>
                                  <xs:sequence>
                                    <xs:element name="Text" minOccurs="1">
                                      <xs:complexType>
                                        <xs:simpleContent>
                                          <xs:extension base="def_nonempty_string">
                                            <xs:attribute name="TextFormat" use="required">
                                              <xs:simpleType>
                                                <xs:restriction base="xs:string">
                                                  <xs:enumeration value="PlainText"/>
                                                </xs:restriction>
                                              </xs:simpleType>
                                            </xs:attribute>
                                          </xs:extension>
                                        </xs:simpleContent>
                                      </xs:complexType>
                                    </xs:element>
                                  </xs:sequence>
                                </xs:complexType>
                              </xs:element>
                            </xs:sequence>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                      <xs:attribute name="ID" use="required" type="def_one_to_thirty_two_chars_string"/>
                      <xs:attribute name="Type" use="required">
                        <xs:simpleType>
                          <xs:restriction base="xs:string">
                            <xs:enumeration value="16"/>
                          </xs:restriction>
                        </xs:simpleType>
                      </xs:attribute>
                      <xs:attribute name="ServiceCategoryCode" use="required">
                        <xs:simpleType>
                          <xs:restriction base="xs:string">
                            <xs:enumeration value="BOARD"/>
                            <xs:enumeration value="SUPPLEMENT"/>
                            <xs:enumeration value="SPA"/>
                            <xs:enumeration value="FOOD"/>
                            <xs:enumeration value="BEVERAGE"/>
                            <xs:enumeration value="ACTIVITY"/>
                            <xs:enumeration value="TOURISTTAX"/>
                            <xs:enumeration value="TRANSFER"/>
                            <xs:enumeration value="OTHER"/>
                          </xs:restriction>
                        </xs:simpleType>
                      </xs:attribute>
                      <xs:attribute name="ServiceInventoryCode" type="def_one_to_sixteen_chars_string" use="required"/>
                      <xs:attribute name="ServiceRPH">
                        <xs:simpleType>
                          <xs:restriction base="xs:string">
                            <xs:pattern value="[0-9]{1,8}"/>
                          </xs:restriction>
                        </xs:simpleType>
                      </xs:attribute>
                      <xs:attribute name="ServicePricingType" use="required">
                        <xs:simpleType>
                          <xs:restriction base="xs:string">
                            <xs:enumeration value="Per night"/>
                            <xs:enumeration value="Per person"/>
                            <xs:enumeration value="Per person per night"/>
                            <xs:enumeration value="Per stay"/>
                            <xs:enumeration value="Per use"/>
                          </xs:restriction>
                        </xs:simpleType>
                      </xs:attribute>
                      <xs:attribute name="Inclusive" type="xs:boolean" use="required"/>
                      <xs:attribute name="Quantity" type="def_int_gt0" use="required"/>
                    </xs:complexType>
                  </xs:element>

                </xs:sequence>
              </xs:complexType>
            </xs:element>

            <!-- HotelReservation > ResGuests {0, 1} -->

            <xs:element name="ResGuests" minOccurs="0">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="ResGuest">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="Profiles">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="ProfileInfo">
                                <xs:complexType>
                                  <xs:sequence>
                                    <xs:element name="Profile">
                                      <xs:complexType>
                                        <xs:sequence>

                                          <!-- HotelReservation > ... > Customer {1} -->

                                          <xs:element name="Customer">
                                            <xs:complexType>
                                              <xs:sequence>

                                                <!-- HotelReservation > ... > Customer > PersonName {1} -->

                                                <xs:element name="PersonName">
                                                  <xs:complexType>
                                                    <xs:sequence>
                                                      <xs:element name="NamePrefix" minOccurs="0" type="StringLength1to16"/>
                                                      <xs:element name="GivenName" type="StringLength1to64"/>
                                                      <xs:element name="Surname" type="StringLength1to64"/>
                                                      <xs:element name="NameTitle"  minOccurs="0" type="StringLength1to16"/>
                                                    </xs:sequence>
                                                  </xs:complexType>
                                                </xs:element>

                                                <!-- HotelReservation > ... > Customer > Telephone {0,} -->

                                                <xs:element name="Telephone" minOccurs="0" maxOccurs="unbounded">
                                                  <xs:complexType>
                                                    <xs:attribute name="PhoneTechType">
                                                      <xs:simpleType>
                                                        <xs:restriction base="xs:string">
                                                          <xs:pattern value="(1|3|5)"/>
                                                        </xs:restriction>
                                                      </xs:simpleType>
                                                    </xs:attribute>
                                                    <xs:attribute name="PhoneNumber" use="required">
                                                      <xs:simpleType>
                                                        <xs:restriction base="xs:string">
                                                          <xs:pattern value="\+?[0-9]+"/>
                                                        </xs:restriction>
                                                      </xs:simpleType>
                                                    </xs:attribute>
                                                  </xs:complexType>
                                                </xs:element>

                                                <!-- HotelReservation > ... > Customer > Email {0,1} -->

                                                <xs:element name="Email" minOccurs="0">
                                                  <xs:complexType>
                                                    <xs:simpleContent>
                                                      <xs:extension base="def_email_string">
                                                        <xs:attribute name="Remark">
                                                          <xs:simpleType>
                                                            <xs:restriction base="xs:string">
                                                              <xs:pattern value="newsletter:(no|yes)"/>
                                                            </xs:restriction>
                                                          </xs:simpleType>
                                                        </xs:attribute>
                                                      </xs:extension>
                                                    </xs:simpleContent>
                                                  </xs:complexType>
                                                </xs:element>

                                                <!-- HotelReservation > ... > Customer > Address {0,1} -->

                                                <xs:element name="Address" minOccurs="0">
                                                  <xs:complexType>
                                                    <xs:sequence>
                                                      <xs:element name="AddressLine"  type="StringLength1to255" minOccurs="0"/>
                                                      <xs:element name="CityName"     type="StringLength1to64" minOccurs="0"/>
                                                      <xs:element name="PostalCode"   type="StringLength1to16" minOccurs="0"/>
                                                      <xs:element name="CountryName" minOccurs="0">
                                                        <xs:complexType>
                                                          <xs:attribute name="Code" use="required">
                                                            <xs:simpleType>
                                                              <xs:restriction base="xs:string">
                                                                <xs:pattern value="[A-Z][A-Z]"/>
                                                              </xs:restriction>
                                                            </xs:simpleType>
                                                          </xs:attribute>
                                                        </xs:complexType>
                                                      </xs:element>
                                                    </xs:sequence>
                                                    <xs:attribute name="Remark">
                                                      <xs:simpleType>
                                                        <xs:restriction base="xs:string">
                                                          <xs:pattern value="catalog:(no|yes)"/>
                                                        </xs:restriction>
                                                      </xs:simpleType>
                                                    </xs:attribute>
                                                  </xs:complexType>
                                                </xs:element>

                                              </xs:sequence>
                                              <xs:attribute name="Gender">
                                                <xs:simpleType>
                                                  <xs:restriction base="xs:string">
                                                    <xs:pattern value="(Unknown|Male|Female)"/>
                                                  </xs:restriction>
                                                </xs:simpleType>
                                              </xs:attribute>
                                              <xs:attribute name="BirthDate" type="def_date"/>
                                              <xs:attribute name="Language">
                                                <xs:simpleType>
                                                  <xs:restriction base="xs:language">
                                                    <xs:pattern value="[a-z][a-z]"/>
                                                  </xs:restriction>
                                                </xs:simpleType>
                                              </xs:attribute>
                                            </xs:complexType>
                                          </xs:element>

                                        </xs:sequence>
                                      </xs:complexType>
                                    </xs:element>
                                  </xs:sequence>
                                </xs:complexType>
                              </xs:element>
                            </xs:sequence>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>

            <!-- HotelReservation > ResGlobalInfo {0,1} -->

            <xs:element name="ResGlobalInfo" minOccurs="0">
              <xs:complexType>
                <xs:sequence>

                  <!-- HotelReservation > ResGlobalInfo > Comments {0,1} -->

                  <xs:element name="Comments" minOccurs="0">
                    <xs:complexType>
                      <xs:sequence>

                        <!-- HotelReservation > ResGlobalInfo > Comment {1,2} -->

                        <xs:element name="Comment" maxOccurs="3">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:choice>

                                <xs:element name="ListItem" minOccurs="0" maxOccurs="unbounded">
                                  <xs:complexType>
                                    <xs:simpleContent>
                                      <xs:extension base="def_nonempty_string">
                                        <xs:attribute name="ListItem" use="required" type="def_int_ge0"/>
                                        <xs:attribute name="Language" use="required">
                                          <xs:simpleType>
                                            <xs:restriction base="xs:language">
                                              <xs:pattern value="[a-z][a-z]"/>
                                            </xs:restriction>
                                          </xs:simpleType>
                                        </xs:attribute>
                                      </xs:extension>
                                    </xs:simpleContent>
                                  </xs:complexType>
                                </xs:element>

                                <xs:element name="Text" minOccurs="0" type="def_nonempty_string"/>

                              </xs:choice>
                            </xs:sequence>
                            <xs:attribute name="Name" use="required">
                              <xs:simpleType>
                                <xs:restriction base="xs:string">
                                  <xs:enumeration value="included services"/>
                                  <xs:enumeration value="customer comment"/>
                                  <xs:enumeration value="additional info"/>
                                </xs:restriction>
                              </xs:simpleType>
                            </xs:attribute>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>

                  <!-- HotelReservation > ResGlobalInfo > SpecialRequests {0,1} -->

                  <xs:element name="SpecialRequests" minOccurs="0">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="SpecialRequest" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="Text" minOccurs="0">
                                <xs:complexType>
                                  <xs:simpleContent>
                                    <xs:extension base="xs:string">
                                      <xs:attribute name="TextFormat" use="required">
                                        <xs:simpleType>
                                          <xs:restriction base="xs:string">
                                            <xs:enumeration value="PlainText"/>
                                          </xs:restriction>
                                        </xs:simpleType>
                                      </xs:attribute>
                                    </xs:extension>
                                  </xs:simpleContent>
                                </xs:complexType>
                              </xs:element>
                            </xs:sequence>
                            <xs:attribute name="RequestCode" use="required" type="StringLength1to16"/>
                            <xs:attribute name="CodeContext" use="required">
                              <xs:simpleType>
                                <xs:restriction base="xs:string">
                                  <xs:enumeration value="ALPINEBITS"/>
                                  <xs:enumeration value="HOTEL"/>
                                </xs:restriction>
                              </xs:simpleType>
                            </xs:attribute>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>

                  <!-- HotelReservation > ResGlobalInfo > DepositPayments {0,1} -->

                  <xs:element name="DepositPayments" minOccurs="0">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="GuaranteePayment" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="AcceptedPayments">
                                <xs:complexType>
                                  <xs:sequence>
                                    <xs:element name="AcceptedPayment">
                                      <xs:complexType>
                                        <xs:choice>
                                          <xs:element name="PaymentCard" minOccurs="0">
                                            <xs:complexType>
                                              <xs:sequence>
                                                <xs:element name="CardHolderName" type="StringLength1to64"
                                                            minOccurs="0"/>
                                                <xs:element name="CardNumber" minOccurs="0">
                                                  <xs:complexType>
                                                    <xs:attribute name="Mask">
                                                      <xs:simpleType>
                                                        <xs:restriction base="xs:string">
                                                          <xs:pattern value="[0-9a-zA-Z]{1,32}"/>
                                                        </xs:restriction>
                                                      </xs:simpleType>
                                                    </xs:attribute>
                                                    <xs:attribute name="Token">
                                                      <xs:simpleType>
                                                        <xs:restriction base="xs:string">
                                                          <xs:pattern value="[0-9a-zA-Z]{1,32}"/>
                                                        </xs:restriction>
                                                      </xs:simpleType>
                                                    </xs:attribute>
                                                    <xs:attribute name="TokenProviderID" type="def_nonempty_string"/>
                                                  </xs:complexType>
                                                </xs:element>
                                              </xs:sequence>
                                              <xs:attribute name="CardCode">
                                                <xs:simpleType>
                                                  <xs:restriction base="xs:string">
                                                    <xs:pattern value="[A-Z]{1,2}"/>
                                                  </xs:restriction>
                                                </xs:simpleType>
                                              </xs:attribute>
                                              <xs:attribute name="ExpireDate">
                                                <xs:simpleType>
                                                  <xs:restriction base="xs:string">
                                                    <xs:pattern value="(0[1-9]|1[0-2])[0-9][0-9]"/>
                                                  </xs:restriction>
                                                </xs:simpleType>
                                              </xs:attribute>
                                            </xs:complexType>
                                          </xs:element>
                                          <xs:element name="BankAcct" minOccurs="0">
                                            <xs:complexType>
                                              <xs:sequence>
                                                <xs:element name="BankAcctName" type="StringLength1to64"
                                                            minOccurs="0"/>
                                                <xs:element name="BankAcctNumber">
                                                  <xs:complexType>
                                                    <xs:sequence>
                                                      <xs:element name="PlainText" type="NumericStringLength1to19"/>
                                                    </xs:sequence>
                                                    <xs:attribute name="Mask">
                                                      <xs:simpleType>
                                                        <xs:restriction base="xs:string">
                                                          <xs:pattern value="[0-9a-zA-Z]{1,32}"/>
                                                        </xs:restriction>
                                                      </xs:simpleType>
                                                    </xs:attribute>
                                                  </xs:complexType>
                                                </xs:element>
                                              </xs:sequence>
                                            </xs:complexType>
                                          </xs:element>
                                          <xs:element name="Voucher" minOccurs="0">
                                            <xs:complexType>
                                              <xs:attribute name="ElectronicIndicator" use="required">
                                                <xs:simpleType>
                                                  <xs:restriction base="xs:boolean">
                                                    <xs:pattern value="1|true"/>
                                                  </xs:restriction>
                                                </xs:simpleType>
                                              </xs:attribute>
                                              <xs:attribute name="Identifier" type="StringLength1to64" use="required" />
                                            </xs:complexType>
                                          </xs:element>
                                        </xs:choice>
                                        <xs:attribute name="GuaranteeTypeCode"/>
                                        <xs:attribute name="GuaranteeID"/>
                                        <xs:attribute name="PaymentTransactionTypeCode"/>
                                      </xs:complexType>
                                    </xs:element>
                                  </xs:sequence>
                                </xs:complexType>
                              </xs:element>
                              <xs:element name="AmountPercent" minOccurs="0">
                                <xs:complexType>
                                  <xs:attribute name="Amount" use="required" type="def_decimal_gt0"/>
                                  <xs:attribute name="CurrencyCode" type="def_three_char_string"/>
                                </xs:complexType>
                              </xs:element>
                            </xs:sequence>
                            <xs:attribute name="Start"/>
                            <xs:attribute name="GuaranteeCode"/>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>

                  <!-- HotelReservation > ResGlobalInfo > CancelPenalties {0,1} -->

                  <xs:element name="CancelPenalties" minOccurs="0">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="CancelPenalty">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="PenaltyDescription">
                                <xs:complexType>
                                  <xs:sequence>
                                    <xs:element name="Text" type="def_nonempty_string"/>
                                  </xs:sequence>
                                </xs:complexType>
                              </xs:element>
                            </xs:sequence>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>

                  <!-- HotelReservation > ResGlobalInfo > HotelReservationIDs {0,1} -->

                  <xs:element name="HotelReservationIDs" minOccurs="0">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="HotelReservationID" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:attribute name="ResID_Type" use="required" type="def_int_gt0"/>
                            <xs:attribute name="ResID_Value" type="StringLength1to64"/>
                            <xs:attribute name="ResID_Source" type="StringLength1to64"/>
                            <xs:attribute name="ResID_SourceContext" type="StringLength1to64"/>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>

                  <!-- HotelReservation > ResGlobalInfo > Profiles {0,1} -->

                  <xs:element name="Profiles" minOccurs="0">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="ProfileInfo">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="Profile">
                                <xs:complexType>
                                  <xs:sequence>
                                    <xs:element name="CompanyInfo">
                                      <xs:complexType>
                                        <xs:sequence>

                                          <xs:element name="CompanyName">
                                            <xs:complexType>
                                              <xs:simpleContent>
                                                <xs:extension base="def_nonempty_string">
                                                  <xs:attribute name="Code" use="required" type="def_nonempty_string"/>
                                                  <xs:attribute name="CodeContext" use="required" type="def_nonempty_string"/>
                                                </xs:extension>
                                              </xs:simpleContent>
                                            </xs:complexType>
                                          </xs:element>

                                          <xs:element name="AddressInfo" minOccurs="0">
                                            <xs:complexType>
                                              <xs:sequence>
                                                <xs:element name="AddressLine" type="StringLength1to255"/>
                                                <xs:element name="CityName" type="StringLength1to64"/>
                                                <xs:element name="PostalCode" type="StringLength1to16"/>
                                                <xs:element name="CountryName">
                                                  <xs:complexType>
                                                    <xs:attribute name="Code" use="required">
                                                      <xs:simpleType>
                                                        <xs:restriction base="xs:string">
                                                          <xs:pattern value="[A-Z][A-Z]"/>
                                                        </xs:restriction>
                                                      </xs:simpleType>
                                                    </xs:attribute>
                                                  </xs:complexType>
                                                </xs:element>
                                              </xs:sequence>
                                            </xs:complexType>
                                          </xs:element>

                                          <xs:element name="TelephoneInfo" minOccurs="0">
                                            <xs:complexType>
                                              <xs:attribute name="PhoneTechType">
                                                <xs:simpleType>
                                                  <xs:restriction base="xs:string">
                                                    <xs:pattern value="(1|3|5)"/>
                                                  </xs:restriction>
                                                </xs:simpleType>
                                              </xs:attribute>
                                              <xs:attribute name="PhoneNumber" use="required">
                                                <xs:simpleType>
                                                  <xs:restriction base="xs:string">
                                                    <xs:pattern value="\+?[0-9]+"/>
                                                  </xs:restriction>
                                                </xs:simpleType>
                                              </xs:attribute>
                                            </xs:complexType>
                                          </xs:element>

                                          <xs:element name="Email" minOccurs="0" type="def_nonempty_string"/>

                                        </xs:sequence>
                                      </xs:complexType>
                                    </xs:element>
                                  </xs:sequence>
                                  <xs:attribute name="ProfileType" use="required">
                                    <xs:simpleType>
                                      <xs:restriction base="xs:string">
                                        <xs:enumeration value="4"/>
                                      </xs:restriction>
                                    </xs:simpleType>
                                  </xs:attribute>
                                </xs:complexType>
                              </xs:element>
                            </xs:sequence>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>

                  <xs:element name="BasicPropertyInfo">
                    <xs:complexType>
                      <xs:attribute name="HotelCode" use="required" type="StringLength1to16"/>
                      <xs:attribute name="HotelName" type="StringLength1to128"/>
                    </xs:complexType>
                  </xs:element>

                </xs:sequence>
              </xs:complexType>
            </xs:element>

          </xs:sequence>
          <xs:attribute name="CreateDateTime" use="required" type="def_datetime"/>
          <xs:attribute name="LastModifyDateTime" type="def_datetime"/>
          <xs:attribute name="ResStatus" use="required">
            <xs:simpleType>
              <xs:restriction base="xs:string">
                <xs:enumeration value="Requested"/>
                <xs:enumeration value="Reserved"/>
                <xs:enumeration value="Cancelled"/>
                <xs:enumeration value="Modify"/>
              </xs:restriction>
            </xs:simpleType>
          </xs:attribute>
          <xs:attribute name="RoomStayReservation" type="def_bool"/>
        </xs:complexType>
      </xs:element>

    </xs:sequence>
  </xs:group>


  <!-- ******************************************************************************* -->
  <!-- * common definition for HotelDescriptiveContents element as used                -->
  <!-- * in the Inventory types Inventory/HotelInfo (Push) and Inventory/Basic (Push)  -->
  <!-- ******************************************************************************* -->

  <xs:group name="def_hoteldescriptivecontents">
    <xs:sequence>

      <xs:element name="HotelDescriptiveContents">
        <xs:complexType>
          <xs:sequence>

            <xs:element name="HotelDescriptiveContent">
              <xs:complexType>
                <xs:sequence>

                  <!-- HotelInfo (Inventory/HotelInfo (push)) -->
                  <xs:element name="HotelInfo" minOccurs="0">
                    <xs:complexType>
                      <xs:sequence>

                        <!-- HotelInfo > CategoryCodes -->
                        <xs:element name="CategoryCodes" minOccurs="0">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="HotelCategory">
                                <xs:complexType>
                                  <xs:attribute name="Code" type="def_nonempty_string"/>
                                  <xs:attribute name="CodeDetail" use="required" type="StringLength1to128"/>
                                </xs:complexType>
                              </xs:element>
                            </xs:sequence>
                          </xs:complexType>
                        </xs:element>

                        <!-- HotelInfo > Descriptions  -->
                        <xs:element name="Descriptions" minOccurs="0">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="MultimediaDescriptions">
                                <xs:complexType>
                                  <xs:sequence>
                                    <xs:element name="MultimediaDescription" maxOccurs="unbounded">
                                      <xs:complexType>
                                        <xs:choice>
                                          <xs:element name="TextItems" minOccurs="0">
                                            <xs:complexType>
                                              <xs:sequence>
                                                <xs:element name="TextItem" minOccurs="0" maxOccurs="unbounded">
                                                  <xs:complexType>
                                                    <xs:sequence>
                                                      <xs:element name="Description" maxOccurs="unbounded">
                                                        <xs:complexType>
                                                          <xs:simpleContent>
                                                            <xs:extension base="def_nonempty_string">
                                                              <xs:attribute name="TextFormat" use="required">
                                                                <xs:simpleType>
                                                                  <xs:restriction base="xs:string">
                                                                    <xs:enumeration value="PlainText"/>
                                                                    <xs:enumeration value="HTML"/>
                                                                  </xs:restriction>
                                                                </xs:simpleType>
                                                              </xs:attribute>
                                                              <xs:attribute name="Language" use="required">
                                                                <xs:simpleType>
                                                                  <xs:restriction base="xs:language">
                                                                    <xs:pattern value="[a-z][a-z]"/>
                                                                  </xs:restriction>
                                                                </xs:simpleType>
                                                              </xs:attribute>
                                                            </xs:extension>
                                                          </xs:simpleContent>
                                                        </xs:complexType>
                                                      </xs:element>
                                                    </xs:sequence>
                                                    <xs:attribute name="SourceID" type="StringLength1to32"/>
                                                    <xs:attribute name="CopyrightNotice" type="StringLength1to64"/>
                                                  </xs:complexType>
                                                </xs:element>
                                              </xs:sequence>
                                            </xs:complexType>
                                          </xs:element>
                                          <xs:element name="ImageItems" minOccurs="0">
                                            <xs:complexType>
                                              <xs:sequence>
                                                <xs:element name="ImageItem" maxOccurs="unbounded">
                                                  <xs:complexType>
                                                    <xs:sequence>
                                                      <xs:element name="ImageFormat">
                                                        <xs:complexType>
                                                          <xs:sequence>
                                                            <xs:element name="URL" type="def_url_string"/>
                                                          </xs:sequence>
                                                            <xs:attribute name="CopyrightNotice" type="StringLength1to64" />
                                                          <xs:attribute name="SourceID" type="StringLength1to32"/>
                                                          <xs:attribute name="Title" type="StringLength1to64"/>
                                                          <xs:attribute name="ApplicableStart">
                                                            <xs:simpleType>
                                                              <xs:restriction base="xs:string">
                                                                <xs:pattern value="--[0-1][0-9]-[0-3][0-9]"/>
                                                              </xs:restriction>
                                                            </xs:simpleType>
                                                          </xs:attribute>
                                                          <xs:attribute name="ApplicableEnd">
                                                            <xs:simpleType>
                                                              <xs:restriction base="xs:string">
                                                                <xs:pattern value="--[0-1][0-9]-[0-3][0-9]"/>
                                                              </xs:restriction>
                                                            </xs:simpleType>
                                                          </xs:attribute>
                                                        </xs:complexType>
                                                      </xs:element>
                                                        <xs:element name="Description" minOccurs="0" maxOccurs="unbounded">
                                                        <xs:complexType>
                                                          <xs:simpleContent>
                                                            <xs:extension base="def_nonempty_string">
                                                              <xs:attribute name="TextFormat" use="required">
                                                                <xs:simpleType>
                                                                  <xs:restriction base="xs:string">
                                                                    <xs:enumeration value="PlainText"/>
                                                                    <xs:enumeration value="HTML"/>
                                                                  </xs:restriction>
                                                                </xs:simpleType>
                                                              </xs:attribute>
                                                              <xs:attribute name="Language" use="required">
                                                                <xs:simpleType>
                                                                  <xs:restriction base="xs:language">
                                                                    <xs:pattern value="[a-z][a-z]"/>
                                                                  </xs:restriction>
                                                                </xs:simpleType>
                                                              </xs:attribute>
                                                            </xs:extension>
                                                          </xs:simpleContent>
                                                        </xs:complexType>
                                                      </xs:element>
                                                    </xs:sequence>
                                                    <xs:attribute name="Category" use="required">
                                                      <xs:simpleType>
                                                        <xs:restriction base="def_int_gt0">
                                                          <xs:enumeration value="1"/>
                                                          <xs:enumeration value="2"/>
                                                          <xs:enumeration value="4"/>
                                                          <xs:enumeration value="12"/>
                                                          <xs:enumeration value="15"/>
                                                          <xs:enumeration value="22"/>
                                                        </xs:restriction>
                                                      </xs:simpleType>
                                                    </xs:attribute>
                                                  </xs:complexType>
                                                </xs:element>
                                              </xs:sequence>
                                            </xs:complexType>
                                          </xs:element>
                                          <xs:element name="VideoItems" minOccurs="0">
                                            <xs:complexType>
                                              <xs:sequence>
                                                <xs:element name="VideoItem" maxOccurs="unbounded">
                                                  <xs:complexType>
                                                    <xs:sequence>
                                                      <xs:element name="VideoFormat">
                                                        <xs:complexType>
                                                          <xs:sequence>
                                                            <xs:element name="URL" type="def_url_string"/>
                                                          </xs:sequence>
                                                          <xs:attribute name="CopyrightNotice" type="StringLength1to64" />
                                                          <xs:attribute name="SourceID" type="StringLength1to32"/>
                                                          <xs:attribute name="Title" type="StringLength1to64"/>
                                                          <xs:attribute name="ApplicableStart">
                                                            <xs:simpleType>
                                                              <xs:restriction base="xs:string">
                                                                <xs:pattern value="[0-1][0-9]-[0-3][0-9]"/>
                                                              </xs:restriction>
                                                            </xs:simpleType>
                                                          </xs:attribute>
                                                        </xs:complexType>
                                                      </xs:element>
                                                        <xs:element name="Description" minOccurs="0" maxOccurs="unbounded">
                                                        <xs:complexType>
                                                          <xs:simpleContent>
                                                            <xs:extension base="def_nonempty_string">
                                                              <xs:attribute name="TextFormat" use="required">
                                                                <xs:simpleType>
                                                                  <xs:restriction base="xs:string">
                                                                    <xs:enumeration value="PlainText"/>
                                                                    <xs:enumeration value="HTML"/>
                                                                  </xs:restriction>
                                                                </xs:simpleType>
                                                              </xs:attribute>
                                                              <xs:attribute name="Language" use="required">
                                                                <xs:simpleType>
                                                                  <xs:restriction base="xs:language">
                                                                    <xs:pattern value="[a-z][a-z]"/>
                                                                  </xs:restriction>
                                                                </xs:simpleType>
                                                              </xs:attribute>
                                                            </xs:extension>
                                                          </xs:simpleContent>
                                                        </xs:complexType>
                                                      </xs:element>
                                                    </xs:sequence>
                                                    <xs:attribute name="Category" use="required">
                                                      <xs:simpleType>
                                                        <xs:restriction base="def_int_gt0">
                                                          <xs:enumeration value="1"/>
                                                          <xs:enumeration value="2"/>
                                                          <xs:enumeration value="4"/>
                                                          <xs:enumeration value="12"/>
                                                          <xs:enumeration value="20"/>
                                                          <xs:enumeration value="22"/>
                                                        </xs:restriction>
                                                      </xs:simpleType>
                                                    </xs:attribute>
                                                  </xs:complexType>
                                                </xs:element>
                                              </xs:sequence>
                                            </xs:complexType>
                                          </xs:element>
                                        </xs:choice>
                                        <xs:attribute name="InfoCode">
                                          <xs:simpleType>
                                            <xs:restriction base="def_int_gt0">
                                              <xs:enumeration value="1"/>
                                              <xs:enumeration value="17"/>
                                              <xs:enumeration value="23"/>
                                              <xs:enumeration value="24"/>
                                            </xs:restriction>
                                          </xs:simpleType>
                                        </xs:attribute>
                                      </xs:complexType>
                                    </xs:element>
                                  </xs:sequence>
                                </xs:complexType>
                              </xs:element>
                            </xs:sequence>
                          </xs:complexType>
                        </xs:element>

                        <!-- HotelInfo > Position -->
                        <xs:element name="Position" minOccurs="0">
                          <xs:complexType>
                            <xs:attribute name="Altitude" type="xs:decimal"/>
                            <xs:attribute name="AltitudeUnitOfMeasureCode">
                              <xs:simpleType>
                                <xs:restriction base="xs:string">
                                  <xs:enumeration value="3"/>
                                </xs:restriction>
                              </xs:simpleType>
                            </xs:attribute>
                            <xs:attribute name="Latitude" type="xs:decimal"/>
                            <xs:attribute name="Longitude" type="xs:decimal"/>
                          </xs:complexType>
                        </xs:element>

                        <!-- HotelInfo > Services -->
                        <xs:element name="Services" minOccurs="0">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="Service" minOccurs="0" maxOccurs="unbounded">
                                <xs:complexType>
                                  <xs:sequence>
                                    <xs:element name="Features" minOccurs="0">
                                      <xs:complexType>
                                        <xs:sequence>
                                          <xs:element name="Feature" minOccurs="0" maxOccurs="unbounded">
                                            <xs:complexType>
                                              <xs:attribute name="AccessibleCode" use="required" type="def_int_gt0"/>
                                            </xs:complexType>
                                          </xs:element>
                                        </xs:sequence>
                                      </xs:complexType>
                                    </xs:element>
                                  </xs:sequence>
                                  <xs:attribute name="Code" use="required" type="def_alpinebits_code"/>
                                  <xs:attribute name="MealPlanCode">
                                    <xs:simpleType>
                                      <xs:restriction base="xs:string">
                                        <xs:enumeration value="12"/>
                                      </xs:restriction>
                                    </xs:simpleType>
                                  </xs:attribute>
                                  <xs:attribute name="ProximityCode" type="def_int_gt0"/>
                                  <xs:attribute name="Included" type="def_bool"/>
                                </xs:complexType>
                              </xs:element>
                            </xs:sequence>
                          </xs:complexType>
                        </xs:element>

                      </xs:sequence>
                      <xs:attribute name="HotelStatusCode" type="def_int_gt0"/>
                    </xs:complexType>
                  </xs:element>

                  <!-- FacilityInfo (Inventory/Basic (push))  -->
                  <xs:element name="FacilityInfo" minOccurs="0">
                    <xs:complexType>
                      <xs:sequence>

                        <xs:element name="GuestRooms">
                          <xs:complexType>
                            <xs:sequence>

                              <xs:element name="GuestRoom" minOccurs="0" maxOccurs="unbounded">
                                <xs:complexType>
                                  <xs:sequence>

                                    <xs:element name="TypeRoom">
                                      <xs:complexType>
                                        <xs:attribute name="StandardOccupancy" type="def_int_gt0"/>
                                        <xs:attribute name="RoomClassificationCode" type="def_int_ge0"/>
                                        <xs:attribute name="RoomID" type="StringLength1to16"/>
                                        <xs:attribute name="Size" type="def_int_ge0"/>
                                        <xs:attribute name="RoomType">
                                          <xs:simpleType>
                                            <xs:restriction base="xs:string">
                                              <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:enumeration value="8"/>
                                              <xs:enumeration value="9"/>
                                            </xs:restriction>
                                          </xs:simpleType>
                                        </xs:attribute>
                                      </xs:complexType>
                                    </xs:element>

                                    <xs:element name="Amenities" minOccurs="0">
                                      <xs:complexType>
                                        <xs:sequence>

                                          <xs:element name="Amenity" maxOccurs="unbounded">
                                            <xs:complexType>
                                              <xs:attribute name="RoomAmenityCode" type="def_alpinebits_code"/>
                                            </xs:complexType>
                                          </xs:element>

                                        </xs:sequence>
                                      </xs:complexType>
                                    </xs:element>

                                    <xs:element name="MultimediaDescriptions" minOccurs="0">
                                      <xs:complexType>
                                        <xs:sequence>

                                          <xs:element name="MultimediaDescription" maxOccurs="unbounded" minOccurs="0">
                                            <xs:complexType>
                                              <xs:choice>

                                                <xs:element name="TextItems" minOccurs="0">
                                                  <xs:complexType>
                                                    <xs:sequence>

                                                      <xs:element name="TextItem">
                                                        <xs:complexType>
                                                          <xs:sequence>

                                                            <xs:element name="Description" maxOccurs="unbounded">
                                                              <xs:complexType>
                                                                <xs:simpleContent>
                                                                  <xs:extension base="def_nonempty_string">
                                                                    <xs:attribute name="TextFormat" use="required">
                                                                      <xs:simpleType>
                                                                        <xs:restriction base="xs:string">
                                                                          <xs:enumeration value="PlainText"/>
                                                                          <xs:enumeration value="HTML"/>
                                                                        </xs:restriction>
                                                                      </xs:simpleType>
                                                                    </xs:attribute>
                                                                    <xs:attribute name="Language" use="required">
                                                                      <xs:simpleType>
                                                                        <xs:restriction base="xs:language">
                                                                          <xs:pattern value="[a-z][a-z]"/>
                                                                        </xs:restriction>
                                                                      </xs:simpleType>
                                                                    </xs:attribute>
                                                                  </xs:extension>
                                                                </xs:simpleContent>
                                                              </xs:complexType>
                                                            </xs:element>

                                                          </xs:sequence>
                                                        </xs:complexType>
                                                      </xs:element>

                                                    </xs:sequence>
                                                  </xs:complexType>
                                                </xs:element>

                                                <xs:element name="ImageItems" minOccurs="0">
                                                  <xs:complexType>
                                                    <xs:sequence>

                                                      <xs:element name="ImageItem" maxOccurs="unbounded">
                                                        <xs:complexType>
                                                          <xs:sequence>

                                                            <xs:element name="ImageFormat">
                                                              <xs:complexType>
                                                                <xs:sequence>
                                                                  <xs:element name="URL" type="def_url_string"/>
                                                                </xs:sequence>
                                                                  <xs:attribute name="CopyrightNotice" type="StringLength1to64" />
                                                              </xs:complexType>
                                                            </xs:element>

                                                              <xs:element name="Description" minOccurs="0" maxOccurs="unbounded">
                                                              <xs:complexType>
                                                                <xs:simpleContent>
                                                                  <xs:extension base="def_nonempty_string">
                                                                    <xs:attribute name="TextFormat" use="required">
                                                                      <xs:simpleType>
                                                                        <xs:restriction base="xs:string">
                                                                          <xs:enumeration value="PlainText"/>
                                                                        </xs:restriction>
                                                                      </xs:simpleType>
                                                                    </xs:attribute>
                                                                    <xs:attribute name="Language" use="required">
                                                                      <xs:simpleType>
                                                                        <xs:restriction base="xs:language">
                                                                          <xs:pattern value="[a-z][a-z]"/>
                                                                        </xs:restriction>
                                                                      </xs:simpleType>
                                                                    </xs:attribute>
                                                                  </xs:extension>
                                                                </xs:simpleContent>
                                                              </xs:complexType>
                                                            </xs:element>

                                                          </xs:sequence>
                                                            <xs:attribute name="Category" use="required" type="def_int_gt0" />
                                                        </xs:complexType>
                                                      </xs:element>

                                                    </xs:sequence>
                                                  </xs:complexType>
                                                </xs:element>

                                              </xs:choice>
                                              <xs:attribute name="InfoCode">
                                                <xs:simpleType>
                                                  <xs:restriction base="def_int_gt0">
                                                    <xs:enumeration value="1"/>
                                                    <xs:enumeration value="23"/>
                                                    <xs:enumeration value="25"/>
                                                  </xs:restriction>
                                                </xs:simpleType>
                                              </xs:attribute>
                                            </xs:complexType>
                                          </xs:element>

                                        </xs:sequence>
                                      </xs:complexType>
                                    </xs:element>

                                  </xs:sequence>
                                  <xs:attribute name="Code" use="required" type="def_invTypeCode_string"/>
                                  <xs:attribute name="MaxOccupancy" type="def_int_gt0"/>
                                  <xs:attribute name="MinOccupancy" type="def_int_gt0"/>
                                  <xs:attribute name="MaxChildOccupancy" type="def_int_gt0"/>
                                  <xs:attribute name="ID" type="def_invTypeCode_string"/>
                                </xs:complexType>
                              </xs:element>

                            </xs:sequence>
                          </xs:complexType>
                        </xs:element>

                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>

                  <!-- Policies (Inventory/HotelInfo (push)) -->
                  <xs:element name="Policies" minOccurs="0">
                    <xs:complexType>
                      <xs:sequence>

                        <xs:element name="Policy" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>

                              <xs:element name="CancelPolicy" minOccurs="0">
                                <xs:complexType>
                                  <xs:sequence>
                                    <xs:element name="CancelPenalty">
                                      <xs:complexType>
                                        <xs:sequence>
                                          <xs:element name="PenaltyDescription">
                                            <xs:complexType>
                                              <xs:sequence>
                                                <xs:element name="Text" maxOccurs="unbounded">
                                                  <xs:complexType>
                                                    <xs:simpleContent>
                                                      <xs:extension base="def_nonempty_string">
                                                        <xs:attribute name="TextFormat" use="required">
                                                          <xs:simpleType>
                                                            <xs:restriction base="xs:string">
                                                              <xs:enumeration value="PlainText"/>
                                                              <xs:enumeration value="HTML"/>
                                                            </xs:restriction>
                                                          </xs:simpleType>
                                                        </xs:attribute>
                                                        <xs:attribute name="Language" use="required">
                                                          <xs:simpleType>
                                                            <xs:restriction base="xs:language">
                                                              <xs:pattern value="[a-z][a-z]"/>
                                                            </xs:restriction>
                                                          </xs:simpleType>
                                                        </xs:attribute>
                                                      </xs:extension>
                                                    </xs:simpleContent>
                                                  </xs:complexType>
                                                </xs:element>
                                              </xs:sequence>
                                            </xs:complexType>
                                          </xs:element>
                                        </xs:sequence>
                                      </xs:complexType>
                                    </xs:element>
                                  </xs:sequence>
                                </xs:complexType>
                              </xs:element>

                              <xs:element name="CheckoutCharges" minOccurs="0">
                                <xs:complexType>
                                  <xs:sequence>
                                    <xs:element name="CheckoutCharge">
                                      <xs:complexType>
                                        <xs:sequence>
                                          <xs:element name="Description">
                                            <xs:complexType>
                                              <xs:sequence>
                                                <xs:element name="Text" maxOccurs="unbounded">
                                                  <xs:complexType>
                                                    <xs:simpleContent>
                                                      <xs:extension base="def_nonempty_string">
                                                        <xs:attribute name="TextFormat" use="required">
                                                          <xs:simpleType>
                                                            <xs:restriction base="xs:string">
                                                              <xs:enumeration value="PlainText"/>
                                                              <xs:enumeration value="HTML"/>
                                                            </xs:restriction>
                                                          </xs:simpleType>
                                                        </xs:attribute>
                                                        <xs:attribute name="Language" use="required">
                                                          <xs:simpleType>
                                                            <xs:restriction base="xs:language">
                                                              <xs:pattern value="[a-z][a-z]"/>
                                                            </xs:restriction>
                                                          </xs:simpleType>
                                                        </xs:attribute>
                                                      </xs:extension>
                                                    </xs:simpleContent>
                                                  </xs:complexType>
                                                </xs:element>
                                              </xs:sequence>
                                            </xs:complexType>
                                          </xs:element>
                                        </xs:sequence>
                                        <xs:attribute name="Amount" type="def_decimal_ge0"/>
                                        <xs:attribute name="CurrencyCode" type="def_three_char_string"/>
                                        <xs:attribute name="DecimalPlaces" type="def_int_gt0"/>
                                      </xs:complexType>
                                    </xs:element>
                                  </xs:sequence>
                                </xs:complexType>
                              </xs:element>

                              <xs:element name="PetsPolicies" minOccurs="0">
                                <xs:complexType>
                                  <xs:sequence>
                                    <xs:element name="PetsPolicy">
                                      <xs:complexType>
                                        <xs:sequence>
                                          <xs:element name="Description">
                                            <xs:complexType>
                                              <xs:sequence>
                                                <xs:element name="Text" maxOccurs="unbounded">
                                                  <xs:complexType>
                                                    <xs:simpleContent>
                                                      <xs:extension base="def_nonempty_string">
                                                        <xs:attribute name="TextFormat" use="required">
                                                          <xs:simpleType>
                                                            <xs:restriction base="xs:string">
                                                              <xs:enumeration value="PlainText"/>
                                                              <xs:enumeration value="HTML"/>
                                                            </xs:restriction>
                                                          </xs:simpleType>
                                                        </xs:attribute>
                                                        <xs:attribute name="Language" use="required">
                                                          <xs:simpleType>
                                                            <xs:restriction base="xs:language">
                                                              <xs:pattern value="[a-z][a-z]"/>
                                                            </xs:restriction>
                                                          </xs:simpleType>
                                                        </xs:attribute>
                                                      </xs:extension>
                                                    </xs:simpleContent>
                                                  </xs:complexType>
                                                </xs:element>
                                              </xs:sequence>
                                            </xs:complexType>
                                          </xs:element>
                                        </xs:sequence>
                                        <xs:attribute name="MaxPetQuantity" type="def_int_ge0"/>
                                        <xs:attribute name="NonRefundableFee" type="def_decimal_ge0"/>
                                        <xs:attribute name="ChargeCode" type="def_int_gt0"/>
                                        <xs:attribute name="CurrencyCode" type="def_three_char_string"/>
                                        <xs:attribute name="DecimalPlaces" type="def_int_gt0"/>
                                      </xs:complexType>
                                    </xs:element>
                                  </xs:sequence>
                                </xs:complexType>
                              </xs:element>

                              <xs:element name="TaxPolicies" minOccurs="0">
                                <xs:complexType>
                                  <xs:sequence>
                                    <xs:element name="TaxPolicy">
                                      <xs:complexType>
                                        <xs:sequence>
                                          <xs:element name="TaxDescription">
                                            <xs:complexType>
                                              <xs:sequence>
                                                <xs:element name="Text" maxOccurs="unbounded">
                                                  <xs:complexType>
                                                    <xs:simpleContent>
                                                      <xs:extension base="def_nonempty_string">
                                                        <xs:attribute name="TextFormat" use="required">
                                                          <xs:simpleType>
                                                            <xs:restriction base="xs:string">
                                                              <xs:enumeration value="PlainText"/>
                                                              <xs:enumeration value="HTML"/>
                                                            </xs:restriction>
                                                          </xs:simpleType>
                                                        </xs:attribute>
                                                        <xs:attribute name="Language" use="required">
                                                          <xs:simpleType>
                                                            <xs:restriction base="xs:language">
                                                              <xs:pattern value="[a-z][a-z]"/>
                                                            </xs:restriction>
                                                          </xs:simpleType>
                                                        </xs:attribute>
                                                      </xs:extension>
                                                    </xs:simpleContent>
                                                  </xs:complexType>
                                                </xs:element>
                                              </xs:sequence>
                                            </xs:complexType>
                                          </xs:element>
                                        </xs:sequence>
                                        <xs:attribute name="Amount" type="def_decimal_ge0"/>
                                        <xs:attribute name="CurrencyCode" type="def_three_char_string"/>
                                        <xs:attribute name="DecimalPlaces" type="def_int_gt0"/>
                                        <xs:attribute name="Code">
                                          <xs:simpleType>
                                            <xs:restriction base="xs:string">
                                              <xs:enumeration value="3"/>
                                            </xs:restriction>
                                          </xs:simpleType>
                                        </xs:attribute>
                                        <xs:attribute name="ChargeFrequency">
                                          <xs:simpleType>
                                            <xs:restriction base="xs:string">
                                              <xs:enumeration value="1"/>
                                            </xs:restriction>
                                          </xs:simpleType>
                                        </xs:attribute>
                                        <xs:attribute name="ChargeUnit">
                                          <xs:simpleType>
                                            <xs:restriction base="xs:string">
                                              <xs:enumeration value="21"/>
                                            </xs:restriction>
                                          </xs:simpleType>
                                        </xs:attribute>
                                      </xs:complexType>
                                    </xs:element>
                                  </xs:sequence>
                                </xs:complexType>
                              </xs:element>

                              <xs:element name="GuaranteePaymentPolicy" minOccurs="0">
                                <xs:complexType>
                                  <xs:sequence>
                                    <xs:element name="GuaranteePayment">
                                      <xs:complexType>
                                        <xs:sequence>
                                          <xs:element name="AcceptedPayments">
                                            <xs:complexType>
                                              <xs:sequence>
                                                <xs:element name="AcceptedPayment" maxOccurs="unbounded">
                                                  <xs:complexType>
                                                    <xs:sequence>
                                                      <xs:element name="BankAcct" minOccurs="0">
                                                        <xs:complexType>
                                                          <xs:sequence>
                                                            <xs:element name="BankAcctName">
                                                              <xs:complexType>
                                                                <xs:simpleContent>
                                                                  <xs:extension base="StringLength1to64"/>
                                                                </xs:simpleContent>
                                                              </xs:complexType>
                                                            </xs:element>
                                                            <xs:element name="BankAcctNumber">
                                                              <xs:complexType>
                                                                <xs:sequence>
                                                                  <xs:element name="PlainText">
                                                                    <xs:complexType>
                                                                      <xs:simpleContent>
                                                                        <xs:extension base="NumericStringLength1to19"/>
                                                                      </xs:simpleContent>
                                                                    </xs:complexType>
                                                                  </xs:element>
                                                                </xs:sequence>
                                                              </xs:complexType>
                                                            </xs:element>
                                                            <xs:element name="BankID">
                                                              <xs:complexType>
                                                                <xs:sequence>
                                                                  <xs:element name="PlainText">
                                                                    <xs:complexType>
                                                                      <xs:simpleContent>
                                                                        <xs:extension base="NumericStringLength1to19"/>
                                                                      </xs:simpleContent>
                                                                    </xs:complexType>
                                                                  </xs:element>
                                                                </xs:sequence>
                                                              </xs:complexType>
                                                            </xs:element>
                                                          </xs:sequence>
                                                        </xs:complexType>
                                                      </xs:element>
                                                      <xs:element name="Cash" minOccurs="0">
                                                        <xs:complexType>
                                                            <xs:attribute name="CashIndicator" use="required" type="def_bool"/>
                                                        </xs:complexType>
                                                      </xs:element>
                                                      <xs:element name="PaymentCard" minOccurs="0">
                                                        <xs:complexType>
                                                          <xs:sequence>
                                                            <xs:element name="CardType" minOccurs="0">
                                                              <xs:complexType>
                                                                <xs:simpleContent>
                                                                  <xs:extension base="def_nonempty_string"/>
                                                                </xs:simpleContent>
                                                              </xs:complexType>
                                                            </xs:element>
                                                          </xs:sequence>
                                                          <xs:attribute name="CardCode" type="def_nonempty_string"/>
                                                        </xs:complexType>
                                                      </xs:element>
                                                    </xs:sequence>
                                                  </xs:complexType>
                                                </xs:element>
                                              </xs:sequence>
                                            </xs:complexType>
                                          </xs:element>
                                          <xs:element name="AmountPercent" minOccurs="0">
                                            <xs:complexType>
                                              <xs:attribute name="Percent" use="required" type="def_decimal_gt0"/>
                                            </xs:complexType>
                                          </xs:element>
                                          <xs:element name="Deadline" minOccurs="0">
                                            <xs:complexType>
                                                <xs:attribute name="OffsetDropTime"       use="required" type="def_nonempty_string"/>
                                                <xs:attribute name="OffsetTimeUnit"       use="required" type="TimeUnitType"/>
                                                <xs:attribute name="OffsetUnitMultiplier" use="required" type="def_int_ge0"/>
                                            </xs:complexType>
                                          </xs:element>
                                        </xs:sequence>
                                      </xs:complexType>
                                    </xs:element>
                                  </xs:sequence>
                                </xs:complexType>
                              </xs:element>

                              <xs:element name="PolicyInfo" minOccurs="0">
                                <xs:complexType>
                                  <xs:attribute name="MinGuestAge" type="def_int_ge0"/>
                                </xs:complexType>
                              </xs:element>

                              <xs:element name="StayRequirements" minOccurs="0">
                                <xs:complexType>
                                  <xs:sequence>
                                    <xs:element name="StayRequirement" maxOccurs="2">
                                      <xs:complexType>
                                        <xs:attribute name="StayContext">
                                          <xs:simpleType>
                                            <xs:restriction base="xs:string">
                                              <xs:enumeration value="Checkin"/>
                                              <xs:enumeration value="Checkout"/>
                                            </xs:restriction>
                                          </xs:simpleType>
                                        </xs:attribute>
                                        <xs:attribute name="Start">
                                          <xs:simpleType>
                                            <xs:restriction base="xs:string">
                                              <xs:pattern value="[0-2][0-9]:[0-5][0-9]:[0-5][0-9]"/>
                                            </xs:restriction>
                                          </xs:simpleType>
                                        </xs:attribute>
                                        <xs:attribute name="End">
                                          <xs:simpleType>
                                            <xs:restriction base="xs:string">
                                              <xs:pattern value="[0-2][0-9]:[0-5][0-9]:[0-5][0-9]"/>
                                            </xs:restriction>
                                          </xs:simpleType>
                                        </xs:attribute>
                                      </xs:complexType>
                                    </xs:element>
                                  </xs:sequence>
                                </xs:complexType>
                              </xs:element>

                            </xs:sequence>
                          </xs:complexType>
                        </xs:element>

                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>

                  <!-- AffiliationInfo (Inventory/HotelInfo (push)) -->
                  <xs:element name="AffiliationInfo" minOccurs="0">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="Awards">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="Award" maxOccurs="unbounded">
                                <xs:complexType>
                                  <xs:attribute name="Rating" use="required" type="def_decimal_ge0"/>
                                  <xs:attribute name="Provider" use="required" type="def_nonempty_string"/>
                                  <xs:attribute name="RatingSymbol" type="def_nonempty_string"/>
                                  <xs:attribute name="OfficialAppointmentInd" type="def_bool"/>
                                </xs:complexType>
                              </xs:element>
                            </xs:sequence>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>

                  <!-- ContactInfos (Inventory/HotelInfo (push)) -->
                  <xs:element name="ContactInfos" minOccurs="0">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="ContactInfo">
                          <xs:complexType>
                            <xs:sequence>

                              <xs:element name="Addresses" minOccurs="0">
                                <xs:complexType>
                                  <xs:sequence>
                                    <xs:element name="Address" maxOccurs="unbounded">
                                      <xs:complexType>
                                        <xs:sequence>
                                          <xs:element name="AddressLine" type="StringLength1to255"/>
                                          <xs:element name="CityName" type="StringLength1to64"/>
                                          <xs:element name="PostalCode" type="StringLength1to16"/>
                                          <xs:element name="StateProv" minOccurs="0">
                                            <xs:complexType>
                                              <xs:attribute name="StateCode" use="required" type="def_nonempty_string"/>
                                            </xs:complexType>
                                          </xs:element>
                                          <xs:element name="CountryName" minOccurs="0">
                                            <xs:complexType>
                                              <xs:attribute name="Code" use="required">
                                                <xs:simpleType>
                                                  <xs:restriction base="xs:string">
                                                    <xs:pattern value="[A-Z][A-Z]"/>
                                                  </xs:restriction>
                                                </xs:simpleType>
                                              </xs:attribute>
                                            </xs:complexType>
                                          </xs:element>
                                        </xs:sequence>
                                        <xs:attribute name="Language">
                                          <xs:simpleType>
                                            <xs:restriction base="xs:language">
                                              <xs:pattern value="[a-z][a-z]"/>
                                            </xs:restriction>
                                          </xs:simpleType>
                                        </xs:attribute>
                                      </xs:complexType>
                                    </xs:element>
                                  </xs:sequence>
                                </xs:complexType>
                              </xs:element>

                              <xs:element name="Phones" minOccurs="0">
                                <xs:complexType>
                                  <xs:sequence>
                                    <xs:element name="Phone" maxOccurs="unbounded">
                                      <xs:complexType>
                                        <xs:attribute name="PhoneTechType" use="required" type="def_nonempty_string"/>
                                        <xs:attribute name="PhoneNumber" use="required">
                                          <xs:simpleType>
                                            <xs:restriction base="xs:string">
                                              <xs:pattern value="\+?[0-9]+"/>
                                            </xs:restriction>
                                          </xs:simpleType>
                                        </xs:attribute>
                                      </xs:complexType>
                                    </xs:element>
                                  </xs:sequence>
                                </xs:complexType>
                              </xs:element>

                              <xs:element name="Emails" minOccurs="0">
                                <xs:complexType>
                                  <xs:sequence>
                                    <xs:element name="Email" maxOccurs="unbounded">
                                      <xs:complexType>
                                        <xs:simpleContent>
                                          <xs:extension base="def_nonempty_string">
                                            <xs:attribute name="EmailType" use="required" type="def_nonempty_string"/>
                                          </xs:extension>
                                        </xs:simpleContent>
                                      </xs:complexType>
                                    </xs:element>
                                  </xs:sequence>
                                </xs:complexType>
                              </xs:element>

                              <xs:element name="URLs" minOccurs="0">
                                <xs:complexType>
                                  <xs:sequence>
                                    <xs:element name="URL" maxOccurs="unbounded">
                                      <xs:complexType>
                                        <xs:simpleContent>
                                          <xs:extension base="xs:anyURI">
                                            <xs:attribute name="ID" type="def_uppercase_string"/>
                                          </xs:extension>
                                        </xs:simpleContent>
                                      </xs:complexType>
                                    </xs:element>
                                  </xs:sequence>
                                </xs:complexType>
                              </xs:element>

                              <xs:element name="CompanyName" minOccurs="0">
                                <xs:complexType>
                                  <xs:simpleContent>
                                    <xs:extension base="def_any_string"/>
                                  </xs:simpleContent>
                                </xs:complexType>
                              </xs:element>

                            </xs:sequence>

                            <xs:attribute name="Location">
                              <xs:simpleType>
                                <xs:restriction base="xs:string">
                                  <xs:enumeration value="6"/>
                                </xs:restriction>
                              </xs:simpleType>
                            </xs:attribute>

                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>

                </xs:sequence>
                <xs:attribute name="HotelCityCode" type="StringLength1to8"/>
                  <xs:attribute name="HotelCode"     use="required" type="StringLength1to16" />
                <xs:attribute name="HotelName" type="StringLength1to128"/>
                <xs:attribute name="AreaID" type="NumericStringLength1to8"/>
              </xs:complexType>
            </xs:element>

          </xs:sequence>
        </xs:complexType>
      </xs:element>

    </xs:sequence>
  </xs:group>


  <!-- ******************************************************************************* -->
  <!-- * common definition for RatePlans element as used                               -->
  <!-- * in RatePlans and BaseRates                                                    -->
  <!-- ******************************************************************************* -->

  <xs:group name="def_rateplans">

    <xs:sequence>
      <xs:element name="RatePlans">
        <xs:complexType>
          <xs:sequence>

            <!-- RatePlans > RatePlan {1,} -->

            <xs:element name="RatePlan" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>

                  <!-- RatePlans > RatePlan > BookingRules {0,1} -->

                  <xs:element name="BookingRules" minOccurs="0">
                    <xs:complexType>
                      <xs:sequence>

                        <xs:element name="BookingRule" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>

                              <xs:element name="LengthsOfStay" minOccurs="0">
                                <xs:complexType>
                                  <xs:sequence>

                                    <xs:element name="LengthOfStay" maxOccurs="unbounded">
                                      <xs:complexType>
                                        <xs:attribute name="Time" use="required" type="def_decimal_ge0"/>
                                        <xs:attribute name="TimeUnit" use="required">
                                          <xs:simpleType>
                                            <xs:restriction base="xs:string">
                                              <xs:enumeration value="Day"/>
                                            </xs:restriction>
                                          </xs:simpleType>
                                        </xs:attribute>
                                        <xs:attribute name="MinMaxMessageType" use="required">
                                          <xs:simpleType>
                                            <xs:restriction base="xs:string">
                                              <xs:enumeration value="SetMinLOS"/>
                                              <xs:enumeration value="SetForwardMinStay"/>
                                              <xs:enumeration value="SetMaxLOS"/>
                                              <xs:enumeration value="SetForwardMaxStay"/>
                                            </xs:restriction>
                                          </xs:simpleType>
                                        </xs:attribute>
                                      </xs:complexType>
                                    </xs:element>

                                  </xs:sequence>
                                </xs:complexType>
                              </xs:element>

                              <xs:element name="DOW_Restrictions" minOccurs="0">
                                <xs:complexType>
                                  <xs:sequence>
                                    <xs:element name="ArrivalDaysOfWeek" minOccurs="0">
                                      <xs:complexType>
                                        <xs:attribute name="Mon" type="def_bool"/>
                                        <xs:attribute name="Tue" type="def_bool"/>
                                        <xs:attribute name="Weds" type="def_bool"/>
                                        <xs:attribute name="Thur" type="def_bool"/>
                                        <xs:attribute name="Fri" type="def_bool"/>
                                        <xs:attribute name="Sat" type="def_bool"/>
                                        <xs:attribute name="Sun" type="def_bool"/>
                                      </xs:complexType>
                                    </xs:element>
                                    <xs:element name="DepartureDaysOfWeek" minOccurs="0">
                                      <xs:complexType>
                                        <xs:attribute name="Mon" type="def_bool"/>
                                        <xs:attribute name="Tue" type="def_bool"/>
                                        <xs:attribute name="Weds" type="def_bool"/>
                                        <xs:attribute name="Thur" type="def_bool"/>
                                        <xs:attribute name="Fri" type="def_bool"/>
                                        <xs:attribute name="Sat" type="def_bool"/>
                                        <xs:attribute name="Sun" type="def_bool"/>
                                      </xs:complexType>
                                    </xs:element>
                                  </xs:sequence>
                                </xs:complexType>
                              </xs:element>

                              <xs:element name="RestrictionStatus" minOccurs="0">
                                <xs:complexType>
                                  <xs:attribute name="Restriction">
                                    <xs:simpleType>
                                      <xs:restriction base="xs:string">
                                        <xs:enumeration value="Master"/>
                                      </xs:restriction>
                                    </xs:simpleType>
                                  </xs:attribute>
                                  <xs:attribute name="Status">
                                    <xs:simpleType>
                                      <xs:restriction base="xs:string">
                                        <xs:enumeration value="Open"/>
                                        <xs:enumeration value="Close"/>
                                      </xs:restriction>
                                    </xs:simpleType>
                                  </xs:attribute>
                                </xs:complexType>
                              </xs:element>

                            </xs:sequence>
                            <xs:attribute name="CodeContext">
                              <xs:simpleType>
                                <xs:restriction base="xs:string">
                                  <xs:enumeration value="ROOMTYPE"/>
                                </xs:restriction>
                              </xs:simpleType>
                            </xs:attribute>
                            <xs:attribute name="Code" type="def_invTypeCode_string"/>
                            <xs:attribute name="Start" type="def_date"/>
                            <xs:attribute name="End" type="def_date"/>
                          </xs:complexType>
                        </xs:element>

                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>

                  <!-- RatePlans > RatePlan > Rates {0,1} -->

                  <xs:element name="Rates" minOccurs="0">
                    <xs:complexType>
                      <xs:sequence>

                        <xs:element name="Rate" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>

                              <xs:element name="BaseByGuestAmts" minOccurs="0">
                                <xs:complexType>
                                  <xs:sequence>

                                    <xs:element name="BaseByGuestAmt" maxOccurs="unbounded">
                                      <xs:complexType>
                                        <xs:attribute name="NumberOfGuests" type="def_int_gt0"/>
                                        <xs:attribute name="AmountAfterTax" type="def_decimal_gt0"/>
                                        <xs:attribute name="CurrencyCode" type="def_three_char_string"/>
                                        <xs:attribute name="Type">
                                          <xs:simpleType>
                                            <xs:restriction base="xs:string">
                                              <xs:enumeration value="7"/>
                                              <xs:enumeration value="25"/>
                                            </xs:restriction>
                                          </xs:simpleType>
                                        </xs:attribute>
                                        <xs:attribute name="AgeQualifyingCode" type="def_int_gt0"/>
                                      </xs:complexType>
                                    </xs:element>

                                  </xs:sequence>
                                </xs:complexType>
                              </xs:element>

                              <xs:element name="AdditionalGuestAmounts" minOccurs="0">
                                <xs:complexType>
                                  <xs:sequence>

                                    <xs:element name="AdditionalGuestAmount" maxOccurs="unbounded">
                                      <xs:complexType>
                                        <xs:attribute name="Amount" type="def_decimal_ge0"/>
                                        <xs:attribute name="AgeQualifyingCode" type="def_int_gt0"/>
                                        <xs:attribute name="MinAge" type="def_int_gt0"/>
                                        <xs:attribute name="MaxAge" type="def_int_gt0"/>
                                      </xs:complexType>
                                    </xs:element>

                                  </xs:sequence>
                                </xs:complexType>
                              </xs:element>

                              <xs:element name="RateDescription" minOccurs="0">
                                <xs:complexType>
                                  <xs:sequence>

                                    <xs:element name="ListItem" maxOccurs="unbounded">
                                      <xs:complexType>
                                        <xs:simpleContent>
                                          <xs:extension base="def_nonempty_string">
                                            <xs:attribute name="ListItem" use="required" type="def_int_ge0"/>
                                            <xs:attribute name="Language" use="required">
                                              <xs:simpleType>
                                                <xs:restriction base="xs:language">
                                                  <xs:pattern value="[a-z][a-z]"/>
                                                </xs:restriction>
                                              </xs:simpleType>
                                            </xs:attribute>
                                          </xs:extension>
                                        </xs:simpleContent>
                                      </xs:complexType>
                                    </xs:element>

                                  </xs:sequence>
                                  <xs:attribute name="Name" use="required">
                                    <xs:simpleType>
                                      <xs:restriction base="xs:string">
                                        <xs:enumeration value="included services"/>
                                      </xs:restriction>
                                    </xs:simpleType>
                                  </xs:attribute>
                                </xs:complexType>
                              </xs:element>

                              <xs:element name="MealsIncluded" minOccurs="0">
                                <xs:complexType>
                                  <xs:attribute name="Breakfast" type="def_bool"/>
                                  <xs:attribute name="Lunch" type="def_bool"/>
                                  <xs:attribute name="Dinner" type="def_bool"/>
                                  <xs:attribute name="MealPlanCodes">
                                    <xs:simpleType>
                                      <xs:restriction base="xs:string">
                                        <xs:enumeration value="1"/>
                                        <xs:enumeration value="3"/>
                                        <xs:enumeration value="10"/>
                                        <xs:enumeration value="12"/>
                                        <xs:enumeration value="14"/>
                                      </xs:restriction>
                                    </xs:simpleType>
                                  </xs:attribute>
                                  <xs:attribute name="MealPlanIndicator">
                                    <xs:simpleType>
                                      <xs:restriction base="xs:string">
                                        <xs:enumeration value="1"/>
                                        <xs:enumeration value="true"/>
                                      </xs:restriction>
                                    </xs:simpleType>
                                  </xs:attribute>
                                </xs:complexType>
                              </xs:element>

                            </xs:sequence>
                            <xs:attribute name="MinGuestApplicable" type="def_int_gt0"/>
                            <xs:attribute name="Start" type="def_date"/>
                            <xs:attribute name="End" type="def_date"/>
                            <xs:attribute name="RateTimeUnit">
                              <xs:simpleType>
                                <xs:restriction base="xs:string">
                                  <xs:enumeration value="Day"/>
                                </xs:restriction>
                              </xs:simpleType>
                            </xs:attribute>
                            <xs:attribute name="UnitMultiplier" type="def_int_gt0"/>
                            <xs:attribute name="Mon" type="def_bool"/>
                            <xs:attribute name="Tue" type="def_bool"/>
                            <xs:attribute name="Weds" type="def_bool"/>
                            <xs:attribute name="Thur" type="def_bool"/>
                            <xs:attribute name="Fri" type="def_bool"/>
                            <xs:attribute name="Sat" type="def_bool"/>
                            <xs:attribute name="Sun" type="def_bool"/>
                            <xs:attribute name="Duration">
                              <xs:simpleType>
                                <xs:restriction base="xs:string">
                                  <xs:pattern value="P[0-9]+N"/>
                                </xs:restriction>
                              </xs:simpleType>
                            </xs:attribute>
                            <xs:attribute name="InvTypeCode" type="def_invTypeCode_string"/>

                          </xs:complexType>
                        </xs:element>

                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>

                  <!-- RatePlans > RatePlan > Supplements {0,1} -->

                  <xs:element name="Supplements" minOccurs="0">
                    <xs:complexType>
                      <xs:sequence>

                        <xs:element name="Supplement" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:choice>
                                <xs:element name="PrerequisiteInventory" minOccurs="0">
                                  <xs:complexType>
                                    <xs:attribute name="InvCode" use="required" type="StringLength1to16"/>
                                    <xs:attribute name="InvType" use="required">
                                      <xs:simpleType>
                                        <xs:restriction base="xs:string">
                                          <xs:enumeration value="ALPINEBITSDOW"/>
                                          <xs:enumeration value="ROOMTYPE"/>
                                        </xs:restriction>
                                      </xs:simpleType>
                                    </xs:attribute>
                                  </xs:complexType>
                                </xs:element>
                              </xs:choice>
                              <!-- RatePlans > RatePlan > Supplements > Supplement > Description {0,5} -->

                              <xs:element name="Description" minOccurs="0" maxOccurs="5">
                                <xs:complexType>
                                  <xs:sequence>

                                    <xs:choice maxOccurs="unbounded">

                                      <xs:element name="ListItem" type="def_nonempty_string"/>

                                      <xs:element name="Image" type="def_url_string"/>

                                      <xs:element name="Text">
                                        <xs:complexType>
                                          <xs:simpleContent>
                                            <xs:extension base="def_nonempty_string">
                                              <xs:attribute name="TextFormat" use="required">
                                                <xs:simpleType>
                                                  <xs:restriction base="xs:string">
                                                    <xs:enumeration value="PlainText"/>
                                                    <xs:enumeration value="HTML"/>
                                                  </xs:restriction>
                                                </xs:simpleType>
                                              </xs:attribute>
                                              <xs:attribute name="Language">
                                                <xs:simpleType>
                                                  <xs:restriction base="xs:language">
                                                    <xs:pattern value="[a-z][a-z]"/>
                                                  </xs:restriction>
                                                </xs:simpleType>
                                              </xs:attribute>
                                            </xs:extension>
                                          </xs:simpleContent>
                                        </xs:complexType>
                                      </xs:element>

                                      <xs:element name="URL" type="def_url_string"/>

                                    </xs:choice>

                                  </xs:sequence>

                                  <xs:attribute name="Name" use="required">
                                    <xs:simpleType>
                                      <xs:restriction base="xs:string">
                                        <xs:enumeration value="title"/>
                                        <xs:enumeration value="intro"/>
                                        <xs:enumeration value="description"/>
                                        <xs:enumeration value="gallery"/>
                                        <xs:enumeration value="codelist"/>
                                      </xs:restriction>
                                    </xs:simpleType>
                                  </xs:attribute>
                                </xs:complexType>
                              </xs:element>

                            </xs:sequence>

                            <xs:attribute name="AddToBasicRateIndicator">
                              <xs:simpleType>
                                <xs:restriction base="xs:string">
                                  <xs:enumeration value="1"/>
                                  <xs:enumeration value="true"/>
                                </xs:restriction>
                              </xs:simpleType>
                            </xs:attribute>

                            <xs:attribute name="ChargeTypeCode">
                              <xs:simpleType>
                                <xs:restriction base="xs:string">
                                  <xs:enumeration value="1"/>
                                  <xs:enumeration value="12"/>
                                  <xs:enumeration value="18"/>
                                  <xs:enumeration value="19"/>
                                  <xs:enumeration value="20"/>
                                  <xs:enumeration value="21"/>
                                  <xs:enumeration value="24"/>
                                </xs:restriction>
                              </xs:simpleType>
                            </xs:attribute>

                            <xs:attribute name="Amount" type="def_decimal_ge0"/>

                            <xs:attribute name="InvType" use="required">
                              <xs:simpleType>
                                <xs:restriction base="xs:string">
                                  <xs:enumeration value="EXTRA"/>
                                  <xs:enumeration value="ALPINEBITSEXTRA"/>
                                </xs:restriction>
                              </xs:simpleType>
                            </xs:attribute>

                            <xs:attribute name="InvCode" type="StringLength1to16" use="required"/>

                            <xs:attribute name="MandatoryIndicator" type="def_bool"/>

                            <xs:attribute name="Start" type="def_date"/>
                            <xs:attribute name="End" type="def_date"/>

                          </xs:complexType>
                        </xs:element>

                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>

                  <!-- RatePlans > RatePlan > Offers {0,1} -->

                  <xs:element name="Offers" minOccurs="0">
                    <xs:complexType>
                      <xs:sequence>

                        <xs:element name="Offer" maxOccurs="3">
                          <xs:complexType>
                            <xs:sequence>

                              <xs:element name="OfferRules" minOccurs="0">
                                <xs:complexType>
                                  <xs:sequence>

                                    <xs:element name="OfferRule" minOccurs="0">
                                      <xs:complexType>
                                        <xs:sequence>

                                          <xs:element name="LengthsOfStay" minOccurs="0">
                                            <xs:complexType>
                                              <xs:sequence>

                                                <xs:element name="LengthOfStay" maxOccurs="unbounded">
                                                  <xs:complexType>
                                                    <xs:attribute name="Time" use="required" type="def_decimal_ge0"/>
                                                    <xs:attribute name="TimeUnit" use="required">
                                                      <xs:simpleType>
                                                        <xs:restriction base="xs:string">
                                                          <xs:enumeration value="Day"/>
                                                        </xs:restriction>
                                                      </xs:simpleType>
                                                    </xs:attribute>
                                                    <xs:attribute name="MinMaxMessageType" use="required">
                                                      <xs:simpleType>
                                                        <xs:restriction base="xs:string">
                                                          <xs:enumeration value="SetMinLOS"/>
                                                          <xs:enumeration value="SetMaxLOS"/>
                                                          <xs:enumeration value=""/>
                                                        </xs:restriction>
                                                      </xs:simpleType>
                                                    </xs:attribute>
                                                  </xs:complexType>
                                                </xs:element>

                                              </xs:sequence>
                                            </xs:complexType>
                                          </xs:element>

                                          <xs:element name="DOW_Restrictions" minOccurs="0">
                                            <xs:complexType>
                                              <xs:sequence>
                                                <xs:element name="ArrivalDaysOfWeek" minOccurs="0">
                                                  <xs:complexType>
                                                    <xs:attribute name="Mon" type="def_bool"/>
                                                    <xs:attribute name="Tue" type="def_bool"/>
                                                    <xs:attribute name="Weds" type="def_bool"/>
                                                    <xs:attribute name="Thur" type="def_bool"/>
                                                    <xs:attribute name="Fri" type="def_bool"/>
                                                    <xs:attribute name="Sat" type="def_bool"/>
                                                    <xs:attribute name="Sun" type="def_bool"/>
                                                  </xs:complexType>
                                                </xs:element>
                                                <xs:element name="DepartureDaysOfWeek" minOccurs="0">
                                                  <xs:complexType>
                                                    <xs:attribute name="Mon" type="def_bool"/>
                                                    <xs:attribute name="Tue" type="def_bool"/>
                                                    <xs:attribute name="Weds" type="def_bool"/>
                                                    <xs:attribute name="Thur" type="def_bool"/>
                                                    <xs:attribute name="Fri" type="def_bool"/>
                                                    <xs:attribute name="Sat" type="def_bool"/>
                                                    <xs:attribute name="Sun" type="def_bool"/>
                                                  </xs:complexType>
                                                </xs:element>
                                              </xs:sequence>
                                            </xs:complexType>
                                          </xs:element>

                                          <xs:element name="Occupancy" maxOccurs="unbounded">
                                            <xs:complexType>
                                              <xs:attribute name="AgeQualifyingCode" use="required">
                                                <xs:simpleType>
                                                  <xs:restriction base="xs:string">
                                                    <xs:enumeration value="8"/>
                                                    <xs:enumeration value="10"/>
                                                  </xs:restriction>
                                                </xs:simpleType>
                                              </xs:attribute>
                                              <xs:attribute name="MinAge" type="def_int_gt0"/>
                                              <xs:attribute name="MaxAge" type="def_int_gt0"/>
                                              <xs:attribute name="MinOccupancy" type="def_int_ge0"/>
                                              <xs:attribute name="MaxOccupancy" type="def_int_gt0"/>
                                            </xs:complexType>
                                          </xs:element>

                                        </xs:sequence>

                                        <xs:attribute name="MinAdvancedBookingOffset">
                                          <xs:simpleType>
                                            <xs:restriction base="xs:string">
                                              <xs:pattern value="P[0-9]+D"/>
                                            </xs:restriction>
                                          </xs:simpleType>
                                        </xs:attribute>
                                        <xs:attribute name="MaxAdvancedBookingOffset">
                                          <xs:simpleType>
                                            <xs:restriction base="xs:string">
                                              <xs:pattern value="P[0-9]+D"/>
                                            </xs:restriction>
                                          </xs:simpleType>
                                        </xs:attribute>

                                      </xs:complexType>
                                    </xs:element>

                                  </xs:sequence>
                                </xs:complexType>
                              </xs:element>

                              <xs:element name="Discount" minOccurs="0">
                                <xs:complexType>
                                  <xs:attribute name="Percent" use="required">
                                    <xs:simpleType>
                                      <xs:restriction base="xs:string">
                                        <xs:enumeration value="100"/>
                                      </xs:restriction>
                                    </xs:simpleType>
                                  </xs:attribute>
                                  <xs:attribute name="NightsRequired" type="def_int_gt0"/>
                                  <xs:attribute name="NightsDiscounted" type="def_int_gt0"/>
                                  <xs:attribute name="DiscountPattern">
                                    <xs:simpleType>
                                      <xs:restriction base="xs:string">
                                        <xs:pattern value="0*1*"/>
                                      </xs:restriction>
                                    </xs:simpleType>
                                  </xs:attribute>
                                </xs:complexType>
                              </xs:element>

                              <xs:element name="Guests" minOccurs="0">
                                <xs:complexType>
                                  <xs:sequence>

                                    <xs:element name="Guest">
                                      <xs:complexType>
                                        <xs:attribute name="AgeQualifyingCode" use="required" type="def_int_gt0"/>
                                        <xs:attribute name="MaxAge" use="required" type="def_int_gt0"/>
                                        <xs:attribute name="MinCount" use="required" type="def_int_ge0"/>
                                        <xs:attribute name="FirstQualifyingPosition" use="required">
                                          <xs:simpleType>
                                            <xs:restriction base="xs:string">
                                              <xs:enumeration value="1"/>
                                            </xs:restriction>
                                          </xs:simpleType>
                                        </xs:attribute>
                                        <xs:attribute name="LastQualifyingPosition" use="required" type="def_int_gt0"/>
                                      </xs:complexType>
                                    </xs:element>

                                  </xs:sequence>
                                </xs:complexType>
                              </xs:element>

                            </xs:sequence>
                          </xs:complexType>
                        </xs:element>

                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>

                  <!-- RatePlans > RatePlan > Description {0,5} -->

                  <xs:element name="Description" minOccurs="0" maxOccurs="5">
                    <xs:complexType>
                      <xs:sequence>

                        <xs:choice maxOccurs="unbounded">

                          <xs:element name="ListItem" type="def_nonempty_string"/>

                          <xs:element name="Image" type="def_url_string"/>

                          <xs:element name="Text">
                            <xs:complexType>
                              <xs:simpleContent>
                                <xs:extension base="def_nonempty_string">
                                  <xs:attribute name="TextFormat" use="required">
                                    <xs:simpleType>
                                      <xs:restriction base="xs:string">
                                        <xs:enumeration value="PlainText"/>
                                        <xs:enumeration value="HTML"/>
                                      </xs:restriction>
                                    </xs:simpleType>
                                  </xs:attribute>
                                  <xs:attribute name="Language">
                                    <xs:simpleType>
                                      <xs:restriction base="xs:language">
                                        <xs:pattern value="[a-z][a-z]"/>
                                      </xs:restriction>
                                    </xs:simpleType>
                                  </xs:attribute>
                                </xs:extension>
                              </xs:simpleContent>
                            </xs:complexType>
                          </xs:element>

                          <xs:element name="URL" type="def_url_string"/>

                        </xs:choice>

                      </xs:sequence>

                      <xs:attribute name="Name" use="required">
                        <xs:simpleType>
                          <xs:restriction base="xs:string">
                            <xs:enumeration value="title"/>
                            <xs:enumeration value="intro"/>
                            <xs:enumeration value="description"/>
                            <xs:enumeration value="gallery"/>
                            <xs:enumeration value="codelist"/>
                          </xs:restriction>
                        </xs:simpleType>
                      </xs:attribute>
                    </xs:complexType>
                  </xs:element>

                </xs:sequence>
                <xs:attribute name="Start" type="def_date"/>
                <xs:attribute name="End" type="def_date"/>
                <xs:attribute name="RatePlanNotifType">
                  <xs:simpleType>
                    <xs:restriction base="xs:string">
                      <xs:enumeration value="Overlay"/>
                      <xs:enumeration value="New"/>
                      <xs:enumeration value="Full"/>
                      <xs:enumeration value="Remove"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
                <xs:attribute name="CurrencyCode" type="def_three_char_string"/>
                <xs:attribute name="RatePlanCode" type="StringLength1to64"/>
                <xs:attribute name="RatePlanType">
                  <xs:simpleType>
                    <xs:restriction base="xs:string">
                      <xs:enumeration value="12"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
                <xs:attribute name="RatePlanCategory" type="StringLength1to64"/>
                <xs:attribute name="RatePlanID" type="StringLength1to64"/>
                <xs:attribute name="RatePlanQualifier" type="def_bool"/>
              </xs:complexType>
            </xs:element> <!-- close RatePlan -->

          </xs:sequence>
          <xs:attribute name="HotelCode" use="required" type="StringLength1to16"/>
          <xs:attribute name="HotelName" type="StringLength1to128"/>
        </xs:complexType>

      </xs:element>

    </xs:sequence>

  </xs:group>


  <!-- ******************************************************************************* -->
  <!-- * common definition for success/advisory/warning/error responses                -->
  <!-- ******************************************************************************* -->

  <xs:group name="def_generic_response">
    <xs:choice>

      <!-- choice: Errors {1} -->

      <xs:element name="Errors">
        <xs:complexType>
          <xs:sequence>

            <!-- Errors > Error {1,} -->

            <xs:element name="Error" maxOccurs="unbounded">
              <xs:complexType mixed="true">
                <xs:attribute name="Type" use="required">
                  <xs:simpleType>
                    <xs:restriction base="xs:string">
                      <xs:enumeration value="11"/>
                      <xs:enumeration value="13"/>
                    </xs:restriction>
                  </xs:simpleType>
                </xs:attribute>
                <xs:attribute name="Code" type="def_int_gt0"/>
                <xs:attribute name="Status" type="def_send_complete"/>
              </xs:complexType>
            </xs:element>

          </xs:sequence>
        </xs:complexType>
      </xs:element>

      <!-- choice: Success {1} + Warnings {0,1} -->

      <xs:sequence>

        <xs:element name="Success"/>

        <xs:element name="Warnings" minOccurs="0">
          <xs:complexType>
            <xs:sequence>

              <!-- Warnings > Warning {1,} -->

              <xs:element name="Warning" maxOccurs="unbounded">
                <xs:complexType mixed="true">
                  <xs:attribute name="Type" use="required" type="def_int_gt0"/>
                  <xs:attribute name="RecordID" type="StringLength1to64"/>
                  <xs:attribute name="Status" type="def_send_complete"/>
                </xs:complexType>
              </xs:element>

            </xs:sequence>
          </xs:complexType>
        </xs:element>

      </xs:sequence>

    </xs:choice>
  </xs:group>


  <!-- ******************************************************************************* -->
  <!-- * common definition for recurring, simple types                                 -->
  <!-- ******************************************************************************* -->

  <!-- The keywords to request complete set responses. -->

  <xs:simpleType name="def_send_complete">
    <xs:restriction base="xs:string">
      <xs:enumeration value="ALPINEBITS_SEND_HANDSHAKE"/>
      <xs:enumeration value="ALPINEBITS_SEND_FREEROOMS"/>
      <xs:enumeration value="ALPINEBITS_SEND_RATEPLANS"/>
      <xs:enumeration value="ALPINEBITS_SEND_INVENTORY"/>
    </xs:restriction>
  </xs:simpleType>

  <!-- A generic non-empty string type. -->

  <xs:simpleType name="def_nonempty_string">
    <xs:restriction base="xs:string">
      <xs:minLength value="1"/>
    </xs:restriction>
  </xs:simpleType>

  <!-- A generic string type. -->

  <xs:simpleType name="def_any_string">
    <xs:restriction base="xs:string">
      <xs:minLength value="0"/>
    </xs:restriction>
  </xs:simpleType>

  <!-- A generic non-empty uppercase string type. -->

  <xs:simpleType name="def_uppercase_string">
    <xs:restriction base="xs:string">
      <xs:pattern value="[A-Z]+"/>
    </xs:restriction>
  </xs:simpleType>

  <!-- A generic string type containing an @ char, like an email address -->

  <xs:simpleType name="def_email_string">
    <xs:restriction base="xs:string">
      <xs:pattern value="\S+@\S+"/>
    </xs:restriction>
  </xs:simpleType>

  <!-- String type defining room category codes (like InvTypeCode)  -->

  <xs:simpleType name="def_invTypeCode_string">
    <xs:restriction base="xs:string">
      <xs:minLength value="1"/>
      <xs:maxLength value="8"/>
    </xs:restriction>
  </xs:simpleType>

  <!-- A generic string type starting with http:// or https:// -->

  <xs:simpleType name="def_url_string">
    <xs:restriction base="xs:anyURI">
      <xs:pattern value="https?://.+"/>
    </xs:restriction>
  </xs:simpleType>

  <!-- A generic string type with 3 characters. -->

  <xs:simpleType name="def_three_char_string">
    <xs:restriction base="xs:string">
      <xs:minLength value="3"/>
      <xs:maxLength value="3"/>
    </xs:restriction>
  </xs:simpleType>

  <!-- A generic string type with 1 to 16 characters (defintion taken from OTA2015A). -->

  <xs:simpleType name="def_one_to_sixteen_chars_string">
    <xs:restriction base="xs:string">
      <xs:minLength value="1"/>
      <xs:maxLength value="16"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="def_one_to_thirty_two_chars_string">
    <xs:restriction base="xs:string">
      <xs:minLength value="1"/>
      <xs:maxLength value="32"/>
    </xs:restriction>
  </xs:simpleType>

  <!-- A generic integer > 0 type. -->

  <xs:simpleType name="def_int_gt0">
    <xs:restriction base="xs:positiveInteger">
      <xs:pattern value="[0-9]+"/>
    </xs:restriction>
  </xs:simpleType>

  <!-- A generic integer >= 0 type. -->

  <xs:simpleType name="def_int_ge0">
    <xs:restriction base="xs:nonNegativeInteger">
      <xs:pattern value="[0-9]+"/>
    </xs:restriction>
  </xs:simpleType>

  <!-- A generic decimal >= 0 type. -->

  <xs:simpleType name="def_decimal_ge0">
    <xs:restriction base="xs:decimal">
      <xs:minInclusive value="0.0"/>
      <xs:pattern value="[0-9]*\.?[0-9]*"/>
    </xs:restriction>
  </xs:simpleType>

  <!-- A generic decimal > 0 type. -->

  <xs:simpleType name="def_decimal_gt0">
    <xs:restriction base="xs:decimal">
      <xs:minExclusive value="0.0"/>
      <xs:pattern value="[0-9]*\.?[0-9]*"/>
    </xs:restriction>
  </xs:simpleType>

  <!-- A generic date type. -->

  <xs:simpleType name="def_date">
    <xs:restriction base="xs:date">
      <xs:pattern value="\S+"/>
    </xs:restriction>
  </xs:simpleType>

  <!-- A generic datetime type. -->

  <xs:simpleType name="def_datetime">
    <xs:restriction base="xs:dateTime">
      <xs:pattern value="\S+"/>
    </xs:restriction>
  </xs:simpleType>

  <!-- A generic boolean type (1,true,0,false). -->

  <xs:simpleType name="def_bool">
    <xs:restriction base="xs:boolean">
      <xs:pattern value="\S+"/>
    </xs:restriction>
  </xs:simpleType>

  <!-- A code defined in the OpenTravel or AlpineBits Code tables (1,101,101.ABR). -->

  <xs:simpleType name="def_alpinebits_code">
    <xs:restriction base="xs:string">
      <xs:pattern value="[0-9]{1,3}(\.[A-Z]{3}){0,1}"/>
    </xs:restriction>
  </xs:simpleType>

  <!-- OTA2015A legacy restrictions -->

  <xs:simpleType name="TimeUnitType">
		<xs:annotation>
			<xs:documentation xml:lang="en">Defines the unit in which the time is expressed (e.g. year, day, hour).</xs:documentation>
		</xs:annotation>
		<xs:restriction base="StringLength1to16">
			<xs:enumeration value="Year"/>
			<xs:enumeration value="Month"/>
			<xs:enumeration value="Week"/>
			<xs:enumeration value="Day"/>
			<xs:enumeration value="Hour"/>
			<xs:enumeration value="Second"/>
			<xs:enumeration value="FullDuration"/>
			<xs:enumeration value="Minute"/>
		</xs:restriction>
	</xs:simpleType>

  <xs:simpleType name="DateOrTimeOrDateTimeType">
		<xs:annotation>
			<xs:documentation xml:lang="en">A construct to validate either a date or a time or a dateTime value.</xs:documentation>
		</xs:annotation>
		<xs:union memberTypes="xs:date xs:dateTime xs:time"/>
	</xs:simpleType>

  <xs:simpleType name="DateOrDateTimeType">
		<xs:annotation>
			<xs:documentation xml:lang="en">A construct to validate either a date or a dateTime value.</xs:documentation>
		</xs:annotation>
		<xs:union memberTypes="xs:date xs:dateTime"/>
	</xs:simpleType>

  <xs:simpleType name="StringLength0to8">
		<xs:annotation>
			<xs:documentation xml:lang="en">Used for Character Strings, length 0 to 8.</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:minLength value="0"/>
			<xs:maxLength value="8"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="StringLength0to32">
		<xs:annotation>
			<xs:documentation xml:lang="en">Used for Character Strings, length 0 to 32.</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:minLength value="0"/>
			<xs:maxLength value="32"/>
		</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="StringLength0to128">
		<xs:annotation>
			<xs:documentation xml:lang="en">Used for Character Strings, length 0 to 128.</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:minLength value="0"/>
			<xs:maxLength value="128"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="StringLength1to180">
		<xs:annotation>
			<xs:documentation xml:lang="en">Used for Character Strings, length 1 to 180.</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:minLength value="1"/>
			<xs:maxLength value="180"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="StringLength0to255">
		<xs:annotation>
			<xs:documentation xml:lang="en">Used for Character Strings, length 0 to 255.</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:minLength value="0"/>
			<xs:maxLength value="255"/>
		</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="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="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="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="StringLength1to128">
		<xs:annotation>
			<xs:documentation xml:lang="en">Used for Character Strings, length 1 to 128.</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:minLength value="1"/>
			<xs:maxLength value="128"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="StringLength1to255">
		<xs:annotation>
			<xs:documentation xml:lang="en">Used for Character Strings, length 1 to 255.</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:minLength value="1"/>
			<xs:maxLength value="255"/>
		</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="Numeric0to4">
		<xs:annotation>
			<xs:documentation xml:lang="en">Used for Numeric values, from 0 to 4 inclusive.</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:integer">
			<xs:minInclusive value="0"/>
			<xs:maxInclusive value="4"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="Numeric0to10">
		<xs:annotation>
			<xs:documentation xml:lang="en">Used for Numeric values, from 0 to 10 inclusive.</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:integer">
			<xs:minInclusive value="0"/>
			<xs:maxInclusive value="10"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="Numeric0to99">
		<xs:annotation>
			<xs:documentation xml:lang="en">Used for Numeric values, from 0 to 99 inclusive.</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:integer">
			<xs:minInclusive value="0"/>
			<xs:maxInclusive value="99"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="Numeric0to999">
		<xs:annotation>
			<xs:documentation xml:lang="en">Used for Numeric values, from 0 to 999 inclusive.</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:integer">
			<xs:minInclusive value="0"/>
			<xs:maxInclusive value="999"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="Numeric0to9999">
		<xs:annotation>
			<xs:documentation xml:lang="en">Used for Numeric values, from 0 to 9999 inclusive.</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:integer">
			<xs:minInclusive value="0"/>
			<xs:maxInclusive value="9999"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="Numeric1to3">
		<xs:annotation>
			<xs:documentation xml:lang="en">Used for Numeric values, from 1 to 3 inclusive.</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:integer">
			<xs:minInclusive value="1"/>
			<xs:maxInclusive value="3"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="Numeric1to4">
		<xs:annotation>
			<xs:documentation xml:lang="en">Used for Numeric values, from 1 to 4 inclusive.</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:integer">
			<xs:minInclusive value="1"/>
			<xs:maxInclusive value="4"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="Numeric1to99">
		<xs:annotation>
			<xs:documentation xml:lang="en">Used for Numeric values, from 1 to 99 inclusive.</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:integer">
			<xs:minInclusive value="1"/>
			<xs:maxInclusive value="99"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="Numeric1to999">
		<xs:annotation>
			<xs:documentation xml:lang="en">Used for Numeric values, from 1 to 999 inclusive.</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:integer">
			<xs:minInclusive value="1"/>
			<xs:maxInclusive value="999"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="Numeric1to9999">
		<xs:annotation>
			<xs:documentation xml:lang="en">Used for Numeric values, from 1 to 9999 inclusive.</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:integer">
			<xs:minInclusive value="1"/>
			<xs:maxInclusive value="9999"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="NumericStringLength1to16">
		<xs:annotation>
			<xs:documentation xml:lang="en">Used for Numeric Strings, length 1 to 16.</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:pattern value="[0-9]{1,16}"/>
		</xs:restriction>
	</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="NumericStringLength2">
		<xs:annotation>
			<xs:documentation>Used for Numeric Strings, length exactly 2.</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:pattern value="[0-9]{2}"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="NumericStringLength4">
		<xs:annotation>
			<xs:documentation xml:lang="en">Used for Numeric Strings, length exactly 4.</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:pattern value="[0-9]{4}"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="NumericStringLength1to3">
		<xs:annotation>
			<xs:documentation xml:lang="en">Used for Numeric Strings length 1 to 3.</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:pattern value="[0-9]{1,3}"/>
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="NumericStringLength1to5">
		<xs:annotation>
			<xs:documentation xml:lang="en">Used for Numeric Strings, length 1 to 5.</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:pattern value="[0-9]{1,5}"/>
		</xs:restriction>
	</xs:simpleType>

	<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:simpleType name="NumericStringLength15to50">
		<xs:annotation>
			<xs:documentation>Used for Numeric Strings, length 15 to 50.</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:pattern value="[0-9]{15,50}"/>
		</xs:restriction>
	</xs:simpleType>

</xs:schema>
