I've attached both the bindings.xml file and the schema file.

Thanks in Advance.

        Sincrely,
        Zeb



On Tue, 11 Mar 2003, Keith Visco wrote:

:
:Zeb,
:
:Can you attach the full schema, so we can see what the groups that are
:being referenced look like.
:
:Thanks,
:
:--Keith
:
:"Aurangzeb M. Agha" wrote:
:>
:> I asked this before but fear that my message was too long.
:>
:> I'm using castor 0.9.4.3-xml.jar.
:>
:> Here's a summary of my problem:
:>
:> I have a valid XML which, when unmarshalled, is getting validated against
:> the wrong definition.
:>
:> When unmarshalling NexRes/response/viewReservationResponse, I get the
:> following error:
:>
:> ValidationException: bookingStatus is a required field.;
:>    - location of error: XPATH: NexRes/response/bookReservationResponse
:>
:> My XSD contains:
:>
:> <...NexRes...>
:> ...
:> <xsd:element name="response">
:>     <xsd:complexType>
:>         <xsd:sequence>
:>             ...
:>             <xsd:group ref="bookReservationResponse" minOccurs="0"/>
:>             <xsd:group ref="viewReservationResponse" minOccurs="0"/>
:>             ...
:>         </xsd:sequence>
:>     </xsd:complexType>
:> </xsd:element>
:>
:> I've made sure that these two elements appear in the XSD in the same order
:> as they are shown above.  If I switch them (in the XSD shown above), then
:> the problem flips, and though I can unmarshall
:> NexRes/response/viewReservationResponse without any problem, I get a
:> similiar exception when trying to unmarshall bookReservationResponse:
:>
:> ValidationException: bookingStatus is a required field.;
:>    - location of error: XPATH: NexRes/response/viewReservationResponse
:>
:> I've tried to use xsd:all instead of xsd:sequence, but that makes no
:> difference either.
:>
:> I'd very much appreciate  some help.
:>
:>         Sincerely,
:>         Zeb
:>
:> PS -- The original message is below.
:>
:> ---------- Forwarded message ----------
:> Date: Tue, 11 Mar 2003 05:41:28 -0800 (PST)
:> From: Aurangzeb M. Agha <[EMAIL PROTECTED]>
:> Reply-To: [EMAIL PROTECTED]
:> To: [EMAIL PROTECTED]
:> Subject: [castor-dev] Problem with order of ref elements in sequence
:>
:> I'm having a big problem with a large schema where the order of reference
:> elements in a sequence seem to conflict when I try to unmarshall an
:> object.
:>
:> I have two elements which seem to be at the root of the problem:
:>
:> <xsd:element name="request">
:>     <xsd:complexType>
:>         <xsd:sequence>
:>             <xsd:group ref="propertySearch" minOccurs="0"/>
:>             <xsd:group ref="propertyInformationRequest" minOccurs="0"/>
:>             <xsd:group ref="propertyAvailabilityRequest" minOccurs="0"/>
:>             <xsd:group ref="bookReservation" minOccurs="0"/>
:>             <xsd:group ref="cancelReservation" minOccurs="0"/>
:>             <xsd:group ref="viewReservation" minOccurs="0"/>
:>             <xsd:group ref="rateRulesRequest" minOccurs="0"/>
:>         </xsd:sequence>
:>     </xsd:complexType>
:> </xsd:element>
:>
:> <xsd:element name="response">
:>     <xsd:complexType>
:>         <xsd:sequence>
:>             <xsd:group ref="propertyInformationResponse" minOccurs="0"/>
:>             <xsd:group ref="propertyAvailabilityResponse" minOccurs="0"/>
:>             <xsd:group ref="bookReservationResponse" minOccurs="0"/>
:>             <xsd:group ref="cancelReservationResponse" minOccurs="0" />
:>             <xsd:group ref="viewReservationResponse" minOccurs="0"/>
:>             <xsd:group ref="rateRulesResponse" minOccurs="0"/>
:>         </xsd:sequence>
:>     </xsd:complexType>
:> </xsd:element>
:>
:> The order of the elements in the "request" element is causing a problem
:> for me no matter how I move the elements around in the XSD.  Using what I
:> have above,  if I try to unmarshall a ViewReservation object (which looks
:> like this):
:>
:> <NexRes product="Hotel">
:>         <response status="failure" type="ViewReservation"
:> timestamp="20030311081435">
:>         <errors>
:>                 <error number="0">
:>                         <message>We could not find reservation in our
:> records.  Please
:>                         adjust your information and try again.</message>
:>                         <code>H105</code>
:>                 </error>
:>         </errors>
:>         </response>
:>         <session>
:>                 <language>ENG</language>
:>                 <id></id>
:>                 <affiliate>
:>                         <overrides></overrides>
:>                         <id>##########</id>
:>                         <subAffiliateId></subAffiliateId>
:>                 </affiliate>
:>                 <timestamp>20030311081435</timestamp>
:>         </session>
:>         <request type="ViewReservation">
:>         <customer>
:>                 <lastName>######</lastName>
:>                 <firstName>######</firstName>
:>                 <clientId></clientId>
:>         </customer>
:>         <confirmationNumber>######</confirmationNumber>
:>         </request>
:> </NexRes>
:>
:> I get the following error:
:>
:> ValidationException: bookingStatus is a required field.;
:>    - location of error: XPATH: NexRes/response/bookReservationResponse
:>
:> The problem is that 'bookingStatus' is not an element in
:> ViewReservationResponse;
:> but it is in BookReservationResponse.
:>
:> If I either comment out bookReservation:
:>
:> <xsd:element name="request">
:>     <xsd:complexType>
:>         <xsd:sequence>
:>             <xsd:group ref="propertySearch" minOccurs="0"/>
:>             <xsd:group ref="propertyInformationRequest" minOccurs="0"/>
:>             <xsd:group ref="propertyAvailabilityRequest" minOccurs="0"/>
:>             <!--xsd:group ref="bookReservation" minOccurs="0"/-->
:>             <xsd:group ref="cancelReservation" minOccurs="0"/>
:>             <xsd:group ref="viewReservation" minOccurs="0"/>
:>             <xsd:group ref="rateRulesRequest" minOccurs="0"/>
:>         </xsd:sequence>
:>     </xsd:complexType>
:> </xsd:element>
:>
:> or change the order of the elements:
:>
:> <xsd:element name="request">
:>     <xsd:complexType>
:>         <xsd:sequence>
:>             <xsd:group ref="cancelReservation" minOccurs="0"/>
:>             <xsd:group ref="propertySearch" minOccurs="0"/>
:>             <xsd:group ref="propertyInformationRequest" minOccurs="0"/>
:>             <xsd:group ref="propertyAvailabilityRequest" minOccurs="0"/>
:>             <xsd:group ref="bookReservation" minOccurs="0"/>
:>             <xsd:group ref="viewReservation" minOccurs="0"/>
:>             <xsd:group ref="rateRulesRequest" minOccurs="0"/>
:>         </xsd:sequence>
:>     </xsd:complexType>
:> </xsd:element>
:>
:> This problem goes away, but then I have a problem when I try to unmarshall
:> the BookReservation element.
:>
:> There seems to be some mix up in the order of elements and the sequence
:> in which they appear in the XSD file, but I can't figure out what it is,
:> or
:> how to define it.  Is there some sort of schema validator out there that
:> I can use that will validate the sequence of elements in my XSD?
:>
:> I'd really appreciate some help, and can send the entire XSD file if you
:> can help.
:>
:>         Sincerely,
:>         Zeb
:>
:> -----------------------------------------------------------
:> If you wish to unsubscribe from this mailing, send mail to
:> [EMAIL PROTECTED] with a subject of:
:>         unsubscribe castor-dev
:>
:> -----------------------------------------------------------
:> If you wish to unsubscribe from this mailing, send mail to
:> [EMAIL PROTECTED] with a subject of:
:>         unsubscribe castor-dev
:
:-----------------------------------------------------------
:If you wish to unsubscribe from this mailing, send mail to
:[EMAIL PROTECTED] with a subject of:
:        unsubscribe castor-dev
:

-- 
Aurangzeb M. Agha    | Email : [EMAIL PROTECTED]
                     | Home  : +3 210 8959.558
34 Nafsika St.       | Direct: +3 210 8995.875
Voula 16673          | Mobile: TBD
Greece               | e-Fax : 978 246.0770
                     | PGP id: <coming soon>

"Those who would give up essential liberty to purchase a little
 temporary safety deserve neither liberty nor safety."

                                        - Benjamin Franklin
<?xml version="1.0"?>



<cbf:binding xmlns:cbf="http://www.castor.org/SourceGenerator/Binding";

             defaultBindingType='element'>



    <!-- start Amenities -->

        <!-- Binding the generalInfo amenities element to the AmenitiesGeneralInfo class -->

     <cbf:elementBinding name="/generalInfo/amenities">

        <cbf:java-class name="AmenitiesGeneralInfo"/>

     </cbf:elementBinding>

     

        <!-- Binding the overview amenities element to the AmenitiesOverview class -->     

     <cbf:elementBinding name="/overview/amenities">

        <cbf:java-class name="AmenitiesOverview"/>

     </cbf:elementBinding>

        

        <!-- Binding the propertySearch amenities element to the AmenitiesPropertySearch class -->     

     <cbf:elementBinding name="group:propertySearch/amenities">

        <cbf:java-class name="AmenitiesPropertySearch"/>

     </cbf:elementBinding>

     <!-- end Amenities -->



    <!-- start general info -->

        <!-- Binding the overview generalInfo element to the GeneralInfoOverview class -->     

     <cbf:elementBinding name="/overview/generalInfo">

        <cbf:java-class name="GeneralInfoOverview"/>

     </cbf:elementBinding>

     <!-- end general info -->

    

     <!-- start location -->

        <!-- Binding the overview generalInfo element to the GeneralInfoOverview class -->     

     <cbf:elementBinding name="/drivingDirections/location">

        <cbf:java-class name="LocationDrivingDirections"/>

     </cbf:elementBinding>

     <!-- end location -->



     <!-- start credit card -->

        <!-- Binding the credit card element to the CreditCardRateRulesResponse class -->     

     <cbf:elementBinding name="/acceptedCreditCards/creditCard">

        <cbf:java-class name="CreditCardRateRules"/>

     </cbf:elementBinding>



        <!-- Binding the other credit card element to the CreditCardBookReservation class -->     

     <cbf:elementBinding name="group:bookReservation/creditCard">

        <cbf:java-class name="CreditCardBookReservation"/>

     </cbf:elementBinding>

     <!-- end credit card -->



     <!-- start serviceFees -->

        <!-- Binding the serviceFees element to the ServiceFeesRateRules class -->     

     <cbf:elementBinding name="group:rateRulesResponse/serviceFees">

        <cbf:java-class name="ServiceFeesRateRules"/>

     </cbf:elementBinding>



        <!-- start serviceFee -->

            <!-- Binding the serviceFee element to the ServiceFeeRateRules class -->     

        <cbf:elementBinding name="group:rateRulesResponse/serviceFees/serviceFee">

            <cbf:java-class name="ServiceFeeRateRules"/>

        </cbf:elementBinding>

        <!-- end serviceFee -->

     <!-- end serviceFees -->



     <!-- start rate -->

        <!-- Binding one of the rate elements (the small one) to the ReateBookReservation class -->     

     <cbf:elementBinding name="group:bookReservation/rate">

        <cbf:java-class name="RateBookReservation"/>

     </cbf:elementBinding>

     <!-- end rate -->



     <!-- start customer -->

        <!-- Binding one of the customer elements (the small one) to the CustomerCancelReservation class -->     

     <cbf:elementBinding name="group:cancelReservation/customer">

        <cbf:java-class name="CustomerCancelReservation"/>

     </cbf:elementBinding>



        <!-- Binding one of the customer elements (the small one) to the CustomerViewReservation class -->     

     <cbf:elementBinding name="group:viewReservation/customer">

        <cbf:java-class name="CustomerViewReservation"/>

     </cbf:elementBinding>

     <!-- end customer -->



</cbf:binding>

<?xml version="1.0"?>

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"; 
elementFormDefault="qualified" targetNamespace="http://castor.exolab.org/"; 
version="0.9.4">

        <xsd:annotation>

                <xsd:documentation>

                        This is the NexRes element that is common among all request 
elements

                </xsd:documentation>

        </xsd:annotation>

        

    <xsd:element name="NexRes">

                <xsd:complexType>

                        <xsd:sequence>

                                <xsd:element ref="response" minOccurs="0" 
maxOccurs="1"/>

                                <xsd:element ref="session" minOccurs="0" 
maxOccurs="1"/>

                                <xsd:element ref="request" minOccurs="0" 
maxOccurs="1"/>

                        </xsd:sequence>

                        <xsd:attribute name="product" type="xsd:string" 
use="required"/>

                </xsd:complexType>

        </xsd:element>



        <!--Description for response-->

        <xsd:element name="response">

                <xsd:complexType>

            <xsd:sequence>

                                <!--used for property search-->

                                <xsd:element ref="searchResults" minOccurs="0" 
maxOccurs="1"/>

                                <xsd:element ref="errors" minOccurs="0" maxOccurs="1"/>

                                <xsd:group ref="propertyInformationResponse" 
minOccurs="0"/>

                                <xsd:group ref="propertyAvailabilityResponse" 
minOccurs="0"/>

                                <xsd:group ref="rateRulesResponse" minOccurs="0"/>

                                <xsd:group ref="cancelReservationResponse" 
minOccurs="0" />

                                <xsd:group ref="bookReservationResponse" minOccurs="0" 
/>

                                <xsd:group ref="viewReservationResponse" minOccurs="0" 
/>

            </xsd:sequence>

                        <xsd:attribute name="type" type="xsd:string" use="required"/>

                        <xsd:attribute name="status" type="xsd:string" use="required"/>

                        <xsd:attribute name="timestamp" type="xsd:string" 
use="required"/>

                </xsd:complexType>

        </xsd:element>

        

        <!-- Description for session -->

        <xsd:element name="session">

                <xsd:complexType>

                        <xsd:sequence>

                                <xsd:element name="id" type="xsd:string" minOccurs="0" 
maxOccurs="1"/>

                                <xsd:element name="timestamp" type="xsd:string" 
minOccurs="0" maxOccurs="1"/>

                                <xsd:element name="language" type="xsd:string" 
minOccurs="0" maxOccurs="1"/>

                                <xsd:element ref="affiliate"/>

                        </xsd:sequence>

                </xsd:complexType>

        </xsd:element>



        <!-- Description for request -->

        <xsd:element name="request">

                <xsd:complexType>

                        <xsd:sequence>

                                <xsd:group ref="propertySearch" minOccurs="0"/>

                                <xsd:group ref="propertyInformationRequest" 
minOccurs="0"/>

                                <xsd:group ref="propertyAvailabilityRequest" 
minOccurs="0"/>

                                <xsd:group ref="rateRulesRequest" minOccurs="0"/>

                                <xsd:group ref="cancelReservation" minOccurs="0"/>

                                <xsd:group ref="viewReservation" minOccurs="0"/>

                                <xsd:group ref="bookReservation" minOccurs="0"/>

                        </xsd:sequence>

                        <xsd:attribute name="type" type="xsd:string" use="required"/>

                </xsd:complexType>

        </xsd:element>



        <!--Description for searcResults-->

        <xsd:element name="searchResults">

                <xsd:complexType>

                        <xsd:sequence>

                                <xsd:element name="matchesFound" type="xsd:integer" 
minOccurs="0" maxOccurs="1"/>

                                <xsd:element name="startingMatchNumber" 
type="xsd:integer" minOccurs="0" maxOccurs="1"/>

                                <xsd:element name="endingMatchNumber" 
type="xsd:integer" minOccurs="0" maxOccurs="1"/>

                                <xsd:element name="sortedBy" type="xsd:string" 
minOccurs="0" maxOccurs="1"/>

                                <xsd:element name="orderedBy" type="xsd:string" 
minOccurs="0" maxOccurs="1"/>

                                <xsd:element ref="hotelMatches" minOccurs="0"/>

                        </xsd:sequence>

                </xsd:complexType>

        </xsd:element>



        <!--Description for hotelMatches-->

        <xsd:element name="hotelMatches">

                <xsd:complexType>

                        <xsd:sequence>

                                <xsd:element ref="match" maxOccurs="unbounded"/>

                        </xsd:sequence>

                </xsd:complexType>

        </xsd:element>



        <!--Description match-->

        <xsd:element name="match">

                <xsd:complexType>

                        <xsd:sequence>

                <xsd:element name="exchangedHighestRate" type="xsd:string" 
minOccurs="0" />

                <xsd:element name="exchangedLowestRate" type="xsd:string" 
minOccurs="0" />

                <xsd:element name="highestRate" type="xsd:string" minOccurs="0"/>

                                <xsd:element name="hotelId" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="name" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="streetAddress1" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="streetAddress2" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="city" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="postalCode" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="stateCode" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="countryCode" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="phone" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="latitude" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="longitude" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="numberStars" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="isAvailable" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="hasHotRates" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="lowestRate" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="hasVideo" type="xsd:string" 
minOccurs="0"/>

                <xsd:element name="exchangeRate" type="xsd:double"  minOccurs="0"/>

                <xsd:element name="hasMap" type="xsd:string" minOccurs="0"/>

                <xsd:element name="availabilityError" type="xsd:string" minOccurs="0" 
/>

                <xsd:element name="hasOverview" type="xsd:string" minOccurs="1"/>

                <xsd:element name="hasBrochure" type="xsd:string" minOccurs="1"/>

                                <xsd:element name="currency" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="additionalCurrency" 
type="xsd:string" minOccurs="0"/>

                <xsd:element name="shortDescription" type="xsd:string" minOccurs="0"/>

                                <xsd:element name="thumbnailImage" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="chain" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="chainCode" type="xsd:string" 
minOccurs="0"/>

                        </xsd:sequence>

                        <xsd:attribute name="number" type="xsd:integer" 
use="required"/>

                </xsd:complexType>

        </xsd:element>



        <!--Description for errors-->

        <xsd:element name="errors">

                <xsd:complexType>

                        <xsd:sequence>

                                <xsd:element ref="error" minOccurs="1" 
maxOccurs="unbounded"/>

                        </xsd:sequence>

                </xsd:complexType>

        </xsd:element>



        <!--Description an error-->

        <xsd:element name="error">

                <xsd:complexType>

                        <xsd:sequence>

                                <xsd:element name="message" type="xsd:string"/>

                                <xsd:element name="code" type="xsd:string"/>

                        </xsd:sequence>

                        <xsd:attribute name="number" type="xsd:integer" 
use="required"/>

                </xsd:complexType>

        </xsd:element>



        <!--Description for affiliate-->

        <xsd:element name="affiliate">

                <xsd:complexType>

                        <xsd:sequence>

                                <xsd:element name="id" type="xsd:integer"/>

                                <xsd:element name="subAffiliateId" type="xsd:string" 
minOccurs="0" maxOccurs="1"/>

                                <xsd:element name="subAffiliate" type="xsd:string" 
minOccurs="0" maxOccurs="1"/>

                                <xsd:element name="overrides" minOccurs="0" 
maxOccurs="1">



                                        <xsd:complexType>

                                                <xsd:sequence>

                                                        <xsd:element name="customerID" 
type="xsd:string" minOccurs="0" maxOccurs="1"/>

                                                </xsd:sequence>

                                        </xsd:complexType>



                                </xsd:element>

                        </xsd:sequence>

                </xsd:complexType>

        </xsd:element> 



        <!-- used for response type="propertyInformation Responses" -->

        <xsd:group name="propertyInformationResponse">

                <xsd:sequence>

            <xsd:element name="brochure" type="xsd:string" minOccurs="0" 
maxOccurs="1"/>

                        <xsd:element ref="generalInfo" minOccurs="1" maxOccurs="1"/>

                        <xsd:element ref="overview" minOccurs="0" maxOccurs="1"/>

                        <xsd:element ref="videos" minOccurs="0" maxOccurs="1"/>

                        <xsd:element ref="maps" minOccurs="0" maxOccurs="1"/>

                </xsd:sequence>

        </xsd:group>



        <!--general information for property-->

        <xsd:element name="generalInfo">

                <xsd:complexType>

                        <xsd:sequence>

                                <xsd:element name="hotelId" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="name" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="chainCode" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="streetAddress1" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="streetAddress2" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="city" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="postalCode" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="stateCode" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="countryCode" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="directPhone" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="latitude" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="longitude" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="numberStars" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="hasOverview" type="xsd:boolean" 
minOccurs="0"/>

                                <xsd:element name="hasBrochure" type="xsd:boolean" 
minOccurs="0"/>

                                <xsd:element name="hasMap" type="xsd:boolean" 
minOccurs="0"/>

                                <xsd:element name="hasVideo" type="xsd:boolean" 
minOccurs="0"/>

                                <xsd:element name="shortDescription" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="thumbnailImage" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="currency" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="rating" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="numberRooms" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="floors" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="timeZone" type="xsd:string" 
minOccurs="0"/>

        

                <xsd:element name="amenities" minOccurs="0">

                    <xsd:complexType>

                        <xsd:sequence>

                            <xsd:element ref="amenity" maxOccurs="unbounded"/>

                        </xsd:sequence>

                    </xsd:complexType>

                </xsd:element>



                        </xsd:sequence>

                </xsd:complexType>

        </xsd:element>

        

        <!-- overview for property -->

        <xsd:element name="overview">

                <xsd:complexType>

                        <xsd:sequence>

                <xsd:element name="servicesDescription" type="xsd:string" 
minOccurs="0" maxOccurs="1"/>

                                <xsd:element name="recreationInfo" type="xsd:string" 
minOccurs="0" maxOccurs="1"/>

                                <xsd:element name="attractionInfo" type="xsd:string" 
minOccurs="0" maxOccurs="1"/>

                                <xsd:element name="transportationInfo" 
type="xsd:string" minOccurs="0" maxOccurs="1"/>

                                <xsd:element name="roomtypeDescription" 
type="xsd:string" minOccurs="0" maxOccurs="1"/>

                                <xsd:element name="diningInfo" type="xsd:string" 
minOccurs="0" maxOccurs="1"/>

                                <xsd:element ref="locationInfo" minOccurs="0"/>

                                <xsd:element ref="policies" minOccurs="0"/>

                                <xsd:element ref="basicInfo" minOccurs="0"/>

                                <xsd:element ref="nearbyLocations" minOccurs="0"/>

                                <xsd:element ref="rateInfo" minOccurs="0"/>

                                <xsd:element ref="roomTypes" minOccurs="0"/>

                                <xsd:element ref="servicesInfo" minOccurs="0"/>

                                <xsd:element ref="images" minOccurs="0"/>

                        

                <xsd:element name="amenities" minOccurs="0">

                    <xsd:complexType>

                        <xsd:sequence>

                            <xsd:element name="amenity" type="xsd:string" 
maxOccurs="unbounded"/>

                        </xsd:sequence>

                    </xsd:complexType>

                </xsd:element>



                <xsd:element name="generalInfo" minOccurs="0">

                    <xsd:complexType>

                        <xsd:sequence>

                            <xsd:element name="currency" type="xsd:string" 
minOccurs="0" maxOccurs="1"/>

                            <xsd:element name="rating" type="xsd:string" minOccurs="0" 
maxOccurs="1"/>

                            <xsd:element name="numberRooms" type="xsd:string" 
minOccurs="0" maxOccurs="1"/>

                            <xsd:element name="floors" type="xsd:string" minOccurs="0" 
maxOccurs="1"/>

                            <xsd:element name="timeZone" type="xsd:string" 
minOccurs="0" maxOccurs="1"/>

                        </xsd:sequence>

                    </xsd:complexType>

                </xsd:element>



                </xsd:sequence>

                </xsd:complexType>

        </xsd:element>

        

        <!--overview for property-->

        <xsd:element name="videos">

                <xsd:complexType>

                        <xsd:sequence>

                                <xsd:element ref="video" minOccurs="1"/>

                        </xsd:sequence>

                </xsd:complexType>

        </xsd:element>



        <!--overview for property-->

        <xsd:element name="video">

                <xsd:complexType>

                        <xsd:sequence>

                <xsd:element name="url" type="xsd:string" minOccurs="0" maxOccurs="1"/>

                <xsd:element name="speed" type="xsd:string" minOccurs="0" 
maxOccurs="1"/>

                <xsd:element name="provider" type="xsd:string" minOccurs="0" 
maxOccurs="1"/>

                        </xsd:sequence>

                </xsd:complexType>

        </xsd:element>

        

        <!--overview for property-->

        <xsd:element name="maps">

                <xsd:complexType>

                        <xsd:sequence>

                                <xsd:element ref="map" minOccurs="1"/>

                        </xsd:sequence>

                </xsd:complexType>

        </xsd:element>



        <!--overview for property-->

        <xsd:element name="map">

                <xsd:complexType>

                        <xsd:sequence>

                <xsd:element name="url" type="xsd:string" minOccurs="0" maxOccurs="1"/>

                <xsd:element name="zoomLevel" type="xsd:string" minOccurs="0" 
maxOccurs="1"/>

                        </xsd:sequence>

                </xsd:complexType>

        </xsd:element>



        <!-- used for the response of propertyAvailabilityResponse -->

        <xsd:group name="propertyAvailabilityResponse">

                <xsd:sequence>

            <xsd:element name="additionalCurrency" type="xsd:string" minOccurs="0" 
maxOccurs="0"/>

                        <xsd:element name="hasHotRates" type="xsd:string" 
minOccurs="0" maxOccurs="1"/>

                        <xsd:element name="isAvailable" type="xsd:string" 
minOccurs="0" maxOccurs="1"/>

                        <xsd:element name="availabilityError" type="xsd:string" 
minOccurs="0" />

                        <xsd:element name="exchangedLowestRate" type="xsd:double" 
minOccurs="0" />

                        <xsd:element name="exchangedHighestRate" type="xsd:double" 
minOccurs="0" />

                        <xsd:element name="lowestRate" type="xsd:double" minOccurs="0" 
maxOccurs="1" />

                        <xsd:element name="highestRate" type="xsd:double" 
minOccurs="0" maxOccurs="1" />

                        <xsd:element name="exchangeRate" type="xsd:double" 
minOccurs="0" maxOccurs="1" />

                        <xsd:element name="currency" type="xsd:string" minOccurs="0" 
maxOccurs="1" />

                        <xsd:element ref="ratesFound" minOccurs="0" />

                </xsd:sequence>

        </xsd:group>



        <xsd:group name="rateRulesResponse">

                <xsd:sequence>

                        <xsd:element name="hotelId" type="xsd:string" minOccurs="1"/>

                        <xsd:element name="bookableRate" type="xsd:string" 
minOccurs="0"/>

                        <xsd:element name="totalAmount" type="xsd:string" 
minOccurs="0"/>

                        <xsd:element name="rateType" type="xsd:string" minOccurs="0"/>

                        <xsd:element name="guaranteeRequired" type="xsd:string" 
minOccurs="0"/>

                        <xsd:element name="ratePlan" type="xsd:string" minOccurs="0"/>

                        <xsd:element name="maximumPersonsPerRoom" type="xsd:string" 
minOccurs="0"/>

                        <xsd:element name="roomDescription" type="xsd:string" 
minOccurs="0"/>

                        <xsd:element name="rateFrequency" type="xsd:string" 
minOccurs="0"/>

                        <xsd:element name="rateChangeIndicator" type="xsd:string" 
minOccurs="0"/>

                        <xsd:element name="depositRequired" type="xsd:string" 
minOccurs="0"/>

                        <xsd:element name="cancelPolicy" type="xsd:string" 
minOccurs="1"/>

                        <xsd:element name="otherInfo" type="xsd:string" minOccurs="0"/>

                        <xsd:element name="currency" type="xsd:string" minOccurs="1"/>

                        <xsd:element name="addionalCurrency" type="xsd:string" 
minOccurs="0"/>

                        <xsd:element name="exchangeRate" type="xsd:string" 
minOccurs="0"/>

                        <xsd:element name="roomTypeCode" type="xsd:string" 
minOccurs="0"/>

                        <xsd:element name="ratePlanCode" type="xsd:string" 
minOccurs="0"/>

                        <xsd:element name="invSource" type="xsd:string" minOccurs="1"/>

                        <xsd:element name="depositPolicy" type="xsd:string" 
minOccurs="0"/>

                        <xsd:element name="serviceInfo" type="xsd:string" 
minOccurs="0"/>

                        <xsd:element name="taxes" type="xsd:string" minOccurs="0"/>

                        <xsd:element name="minimumStay" type="xsd:string" 
minOccurs="0"/>

                        <xsd:element name="maximumStay" type="xsd:string" 
minOccurs="0"/>

                        <xsd:element name="minimumStayRequired" type="xsd:string" 
minOccurs="0"/>

                        <xsd:element name="corporateNumberRequired" type="xsd:string" 
minOccurs="0"/>

                        <xsd:element name="totalExtraPersonsAmount" type="xsd:string" 
minOccurs="0"/>

                        <xsd:element name="exchangetotalExtraPersonsAmount" 
type="xsd:string" minOccurs="0"/>

                        <xsd:element name="totalIncludingTaxes" type="xsd:string" 
minOccurs="0"/>

                        <xsd:element name="exchangetotalIncludingTaxes" 
type="xsd:string" minOccurs="0"/>

                        <xsd:element name="savingDescription" type="xsd:string" 
minOccurs="0"/>

                        <xsd:element name="advancedBookingPolicy" type="xsd:string" 
minOccurs="0"/>

                        <xsd:element name="amenityText" type="xsd:string" 
minOccurs="0"/>

                        <xsd:element name="voucherInfo" type="xsd:string" 
minOccurs="0"/>

                        <xsd:element name="cancelPolicyCode" type="xsd:string" 
minOccurs="0"/>

                        <xsd:element name="highestRate" type="xsd:string" 
minOccurs="0"/>

                        <xsd:element name="maximumRooms" type="xsd:string" 
minOccurs="0"/>

                        <xsd:element name="instantConfirmationAvailable" 
type="xsd:string" minOccurs="1"/>

                        <xsd:element name="surcharges" type="xsd:string" 
minOccurs="0"/>

                        <xsd:element name="depositAmount" type="xsd:string" 
minOccurs="0"/>

            <xsd:element name="netRate" type="xsd:string" minOccurs="0"/>  <!-- 
temp?-->

                        <xsd:element name="exchangedBookableRate" type="xsd:string" 
minOccurs="0"/>

                        <xsd:element name="exchangedTotalAmount" type="xsd:string" 
minOccurs="0"/>              

            <xsd:element name="validStartDate" type="xsd:string" minOccurs="0" 
maxOccurs="1"/>

            <xsd:element name="validEndDate" type="xsd:string" minOccurs="0" 
maxOccurs="1"/>

            <xsd:element name="validArrivalDate" type="xsd:string" minOccurs="0" 
maxOccurs="1"/>

            <xsd:element name="validWeekDays" type="xsd:string" minOccurs="0" 
maxOccurs="1"/>

            <xsd:element name="guaranteeMethods" type="xsd:string" minOccurs="0" 
maxOccurs="1"/>

            <xsd:element name="advancedBookingRequired" type="xsd:string" 
minOccurs="0" maxOccurs="1"/>

            <xsd:element name="standardPersonsPerRoom" type="xsd:string" minOccurs="0" 
maxOccurs="1"/>     <!-- temp -->

                        <xsd:element ref="acceptedCreditCards" minOccurs="0"/>

                        <xsd:element ref="extraPersonCharges" minOccurs="0"/>

                        <xsd:element ref="rateBreakdown" minOccurs="0"/>



                <!--used for serviceFees node-->

            <xsd:element name="serviceFees" minOccurs="0">

                <xsd:complexType>

                    <xsd:sequence>

                        

                        <!--use for servicefee-->

                        <xsd:element name="serviceFee" minOccurs="0" maxOccurs="1">

                            <xsd:complexType>

                                <xsd:sequence>

                                    <xsd:element name="amount" type="xsd:string" 
minOccurs="1"/>

                                    <xsd:element name="totalAmount" type="xsd:string" 
minOccurs="1"/>

                                    <xsd:element name="frequency" type="xsd:string" 
minOccurs="1"/>

                                    <xsd:element name="description" type="xsd:string" 
minOccurs="1"/>

                                    <xsd:element name="maxAmount" type="xsd:string" 
minOccurs="1"/>

                                    <xsd:element name="currency" type="xsd:string" 
minOccurs="1"/>

                                    <xsd:element ref="localCurrency" minOccurs="1"/>

                                </xsd:sequence>

                            </xsd:complexType>

                        </xsd:element>                        

                        

                    </xsd:sequence>

                </xsd:complexType>

            </xsd:element>

                

        </xsd:sequence>

        </xsd:group>



        <xsd:element name="ratesFound">

                <xsd:complexType>

                        <xsd:sequence>

                                <xsd:element ref="rate" maxOccurs="unbounded"/>

                        </xsd:sequence>

                </xsd:complexType>

        </xsd:element>



        <xsd:element name="rate">

                <xsd:complexType>

                        <xsd:sequence>

                                <xsd:element name="depositRequired" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="rateType" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="rateFrequency" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="ratePlanCode" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="currency" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="prepaymentRequired" 
type="xsd:string" minOccurs="0"/>

                                <xsd:element name="invSource" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="roomTypeCode" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="exchangeRate" type="xsd:double" 
minOccurs="0"/>

                                <xsd:element name="amount" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="totalAmount" type="xsd:double" 
minOccurs="0"/>

                                <xsd:element name="rateChangeIndicator" 
type="xsd:string" minOccurs="0"/>

                                <xsd:element name="cancelPolicy" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="roomDescription" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="exchangedBookableRate" 
type="xsd:string" minOccurs="0"/>

                                <xsd:element name="exchangedAmount" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="netRate" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="ratePlan" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="additionalCurrency" 
type="xsd:string" minOccurs="0"/>

                                <xsd:element name="bookableRate" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element ref="date" minOccurs="0"/>

                                <xsd:element name="advancedBookingPolicy" 
type="xsd:string" minOccurs="0" maxOccurs="1"/>

                                <xsd:element name="higestRate" type="xsd:string" 
minOccurs="0" maxOccurs="1"/>

                                <xsd:element name="savingsDescription" 
type="xsd:string" minOccurs="0" maxOccurs="1"/>

                                <xsd:element name="maximumRooms" type="xsd:string" 
minOccurs="0" maxOccurs="1"/>

                                <xsd:element name="totalExtraPersonsAmount" 
type="xsd:string" minOccurs="0" maxOccurs="1"/>

                                <xsd:element name="surcharges" type="xsd:string" 
minOccurs="0" maxOccurs="1"/>

                                <xsd:element name="depositAmount" type="xsd:string" 
minOccurs="0" maxOccurs="1"/>

                                <xsd:element name="totalIncludingTaxes" 
type="xsd:string" minOccurs="0" maxOccurs="1"/>

                                <xsd:element name="validArrivalDate" type="xsd:string" 
minOccurs="0" maxOccurs="1"/>

                                <xsd:element name="exchangedTotalAmount" 
type="xsd:string" minOccurs="0" maxOccurs="1"/>

                                <xsd:element name="cancelPolicyCode" type="xsd:string" 
minOccurs="0" maxOccurs="1"/>

                                <xsd:element name="packageOptions" type="xsd:string" 
minOccurs="0" maxOccurs="1"/>

                                <xsd:element name="corporateNumberRequired" 
type="xsd:string" minOccurs="0" maxOccurs="1"/>

                                <xsd:element name="voucherInfo" type="xsd:string" 
minOccurs="0" maxOccurs="1"/>

                                <xsd:element name="otherInfo" type="xsd:string" 
minOccurs="0" maxOccurs="1"/>

                                <xsd:element name="validWeekDays" type="xsd:string" 
minOccurs="0" maxOccurs="1"/>

                                <xsd:element name="guaranteeMethods" type="xsd:string" 
minOccurs="0" maxOccurs="1"/>

                                <xsd:element name="guaranteeRequired" 
type="xsd:string" minOccurs="0" maxOccurs="1"/>

                                <xsd:element name="amenityText" type="xsd:string" 
minOccurs="0" maxOccurs="1"/>

                                <xsd:element name="instantConfirmationAvailable" 
type="xsd:string" minOccurs="0" maxOccurs="1"/>

                                <xsd:element name="validStartDate" type="xsd:string" 
minOccurs="0" maxOccurs="1"/>

                                <xsd:element name="validEndDate" type="xsd:string" 
minOccurs="0" maxOccurs="1"/>

                                <xsd:element name="minimumStayRequired" 
type="xsd:string" minOccurs="0" maxOccurs="1"/>

                                <xsd:element name="advancedBookingRequired" 
type="xsd:string" minOccurs="0" maxOccurs="1"/>

                                <xsd:element name="standardPersonsPerRoom" 
type="xsd:string" minOccurs="0" maxOccurs="1"/>     <!-- temp -->

                        </xsd:sequence>

                </xsd:complexType>

        </xsd:element>



        <xsd:element name="propertyInfo">

                <xsd:complexType>

                        <xsd:sequence>

                                <xsd:element name="hotelId" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="chainCode" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="name" type="xsd:string" 
minOccurs="1"/>

                                <xsd:element name="streetAddress1" type="xsd:string" 
minOccurs="1"/>

                                <xsd:element name="streetAddress2" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="city" type="xsd:string" 
minOccurs="1"/>

                                <xsd:element name="stateCode" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="countryCode" type="xsd:string" 
minOccurs="1"/>

                                <xsd:element name="postalCode" type="xsd:string" 
minOccurs="1"/>

                                <xsd:element name="directPhone" type="xsd:string" 
minOccurs="0"/>

                        </xsd:sequence>

                </xsd:complexType>

        </xsd:element>



        <!-- used by the response element to cancel a reservation-->

        <xsd:group name="cancelReservationResponse">

                <xsd:sequence>

                        <xsd:element name="cancelNumber" type="xsd:string" 
minOccurs="1" maxOccurs="1"/>

                        <xsd:element name="cancelStatus" type="xsd:string" 
minOccurs="1" maxOccurs="1"/>

                        <xsd:element name="cancelMessage" type="xsd:string" 
minOccurs="0"/>

                        <xsd:element name="depositLostAmount" type="xsd:string" 
minOccurs="0" />

                        <xsd:element name="refundAmount" type="xsd:string" 
minOccurs="0" />

                        <xsd:element name="cancelFee" type="xsd:string" minOccurs="0" 
/>

                </xsd:sequence>

        </xsd:group>



            <!-- booking reservation response -->

        <xsd:group name="bookReservationResponse">

                <xsd:sequence>

                        <xsd:element name="bookingStatus" type="xsd:string" 
minOccurs="1"/>

                        <xsd:element name="bookingMessage" type="xsd:string" 
minOccurs="0"/>

                        <xsd:element name="confirmationNumber" type="xsd:string" 
minOccurs="1"/>

                        <xsd:element name="estimatedAffiliateCommission" 
type="xsd:string" minOccurs="0"/>

                        <xsd:element name="numberNights" type="xsd:integer" 
minOccurs="1"/>

                        <xsd:element name="numberAdults" type="xsd:integer" 
minOccurs="0"/>

                        <xsd:element name="numberChildren" type="xsd:integer" 
minOccurs="0"/>

                        <xsd:element name="smokingPreference" type="xsd:string" 
minOccurs="0"/>

                        <xsd:element name="numberRooms" type="xsd:integer" 
minOccurs="0"/>

                        <xsd:element name="bedType" type="xsd:string" minOccurs="0"/>

                        <xsd:element name="numberBeds" type="xsd:integer" 
minOccurs="0"/>

                        <xsd:element name="guestRemarks" type="xsd:string" 
minOccurs="0"/>

                        <xsd:element name="roomDescription" type="xsd:string" 
minOccurs="0"/>

                        <xsd:element name="guaranteeInfo" type="xsd:string" 
minOccurs="0"/>

                        <xsd:element name="cancelPolicy" type="xsd:string" 
minOccurs="0"/>

                        <xsd:element name="hotelRemarks" type="xsd:string" 
minOccurs="0"/>   

                        <xsd:element ref="serviceFees" minOccurs="0"/>

                        <xsd:element ref="rateInfo" minOccurs="0"/>

                        <xsd:element ref="customer" minOccurs="1"/>

                        <xsd:element ref="propertyInfo" minOccurs="1"/>

                        <xsd:element ref="arrivalDate" minOccurs="1"/>

                        <xsd:element ref="departureDate" minOccurs="1"/>

                        <xsd:element ref="depositInfo" minOccurs="0"/>

                </xsd:sequence>

        </xsd:group>



            <!-- used by the response element to view a reservation -->

        <xsd:group name="viewReservationResponse">

                <xsd:sequence>

                        <xsd:element name="reservationModifiable" type="xsd:string" 
minOccurs="1" maxOccurs="1"/>

                        <xsd:element name="confirmationNumber" type="xsd:string" 
minOccurs="1" maxOccurs="1"/>

                        <xsd:element name="numberNights" type="xsd:integer" 
minOccurs="0"/>

                        <xsd:element name="numberAdults" type="xsd:integer" 
minOccurs="0"/>

                        <xsd:element name="numberChildren" type="xsd:integer" 
minOccurs="0"/>                   

            <xsd:element name="smokingPreference" type="xsd:string" minOccurs="0"/>

            <xsd:element name="numberRooms" type="xsd:integer" minOccurs="0"/>

                        <xsd:element name="bedType" type="xsd:string" minOccurs="0"/>

            <xsd:element name="numberBeds" type="xsd:string" minOccurs="0"/>

            <xsd:element name="guestRemarks" type="xsd:string" minOccurs="0"/>

                        <xsd:element name="roomDescription" type="xsd:string" 
minOccurs="0"/>

                        <xsd:element name="guaranteeInfo" type="xsd:string" 
minOccurs="0"/>

                        <xsd:element name="cancelNumber" type="xsd:string" 
minOccurs="0"/>

                        <xsd:element name="cancelPolicy" type="xsd:string" 
minOccurs="0"/>

                        <xsd:element name="hotelRemarks" type="xsd:string" 
minOccurs="0"/>

                        <xsd:element name="estimatedAffiliateCommission" 
type="xsd:string" minOccurs="0"/>

                        <xsd:element ref="serviceFees" minOccurs="0"/>

                        <xsd:element ref="rateInfo" minOccurs="0"/>

                        <xsd:element ref="customer" minOccurs="1"/>

            <xsd:element ref="propertyInfo" minOccurs="1"/>

                        <xsd:element ref="arrivalDate" minOccurs="0" />

                        <xsd:element ref="departureDate" minOccurs="0" />

            <xsd:element ref="depositInfo" minOccurs="0"/>

        </xsd:sequence>

        </xsd:group>



        <!-- used for serviceFees node -->

    <xsd:element name="serviceFees">

        <xsd:complexType>

            <xsd:sequence>

                <xsd:element ref="serviceFee" minOccurs="0" maxOccurs="1"/>            
                                   

            </xsd:sequence>

        </xsd:complexType>

    </xsd:element>



        <!-- use for servicefee -->

    <xsd:element name="serviceFee">

        <xsd:complexType>

            <xsd:sequence>

                <xsd:element name="id" type="xsd:string" minOccurs="1" maxOccurs="1"/>

                <xsd:element name="amount" type="xsd:string" minOccurs="1" 
maxOccurs="1"/>

                <xsd:element name="description" type="xsd:string" minOccurs="1" 
maxOccurs="1"/>

                <xsd:element name="status" type="xsd:string" minOccurs="1" 
maxOccurs="1"/>

                <xsd:element name="affiliateCommission" type="xsd:string" 
minOccurs="0" maxOccurs="1"/>

            </xsd:sequence>

        </xsd:complexType>

    </xsd:element>                        



        <!-- rate info for property overview -->

        <xsd:element name="rateInfo">

                <xsd:complexType>

                        <xsd:sequence>

                                <xsd:element name="hiRate" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="loRate" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="rateDisclaimer" type="xsd:string" 
minOccurs="0"/>

                <xsd:element name="totalRate" type="xsd:string" minOccurs="0"/>

                <xsd:element name="confirmedRate" type="xsd:string" minOccurs="0"/>

                                <xsd:element name="rateDescription" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="rateFrequency" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="taxInfo" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="currency" type="xsd:string" 
minOccurs="0"/>

                <xsd:element ref="rateRanges" minOccurs="0"/>

                        </xsd:sequence>

                </xsd:complexType>

        </xsd:element>

        

        <!-- used for deposit info -->

        <xsd:element name="depositInfo">

                <xsd:complexType>

                        <xsd:sequence>

                                <xsd:element name="amount" type="xsd:double" 
minOccurs="0"/>

                                <xsd:element name="details" type="xsd:string" 
minOccurs="0"/>

                        </xsd:sequence>

                </xsd:complexType>

        </xsd:element>



        <!-- nearby locations for property-->

        <xsd:element name="rateRanges">

                <xsd:complexType>

                        <xsd:sequence>

                                <xsd:element ref="range" minOccurs="0" 
maxOccurs="unbounded"/>

                        </xsd:sequence>

                </xsd:complexType>

        </xsd:element>



        <!-- nearby locations for property-->

        <xsd:element name="range">

                <xsd:complexType>

                        <xsd:sequence>

                                <xsd:element name="name" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="description" type="xsd:string" 
minOccurs="0"/>

                        </xsd:sequence>

                </xsd:complexType>

        </xsd:element>



        <!--accepted credit cards-->

        <xsd:element name="acceptedCreditCards">

                <xsd:complexType>

                        <xsd:sequence>

                        <!-- Used for creditCard for RateRulesResponse-->

                <xsd:element name="creditCard" maxOccurs="unbounded">

                    <xsd:complexType>

                        <xsd:sequence>

                            <xsd:element name="name" type="xsd:string" minOccurs="1" 
maxOccurs="1"/>

                            <xsd:element name="code" type="xsd:string" minOccurs="1" 
maxOccurs="1"/>

                        </xsd:sequence>

                    </xsd:complexType>

                </xsd:element>                  

    </xsd:sequence>

                </xsd:complexType>

        </xsd:element>



        <!--element for extraPersonCharges-->

        <xsd:element name="extraPersonCharges">

                <xsd:complexType>

                        <xsd:sequence>

                                <xsd:element ref="person" minOccurs="1"/>

                        </xsd:sequence>

                </xsd:complexType>

        </xsd:element>

        

        <!--element for person-->

        <xsd:element name="person">

                <xsd:complexType>

                        <xsd:sequence>

                                <xsd:element name="type" type="xsd:string" 
minOccurs="1"/>

                                <xsd:element name="rate" type="xsd:string" 
minOccurs="1"/>

                                <xsd:element name="exchangedRate" type="xsd:string" 
minOccurs="1"/>

                        </xsd:sequence>

                </xsd:complexType>

        </xsd:element> 



        <!--rateBreakdown element-->

        <xsd:element name="rateBreakdown">

                <xsd:complexType>

                        <xsd:sequence>

                                <xsd:element ref="rate" minOccurs="0" 
maxOccurs="unbounded"/>

                        </xsd:sequence>

                </xsd:complexType>

        </xsd:element>



        <!--Used for request type="PropertySearch"-->

        <xsd:group name="propertySearch">

                <xsd:sequence>

            <xsd:element name="chain" type="xsd:string" minOccurs="0"/>

            <xsd:element name="maxHotelsToReturn" type="xsd:integer" minOccurs="0" 
maxOccurs="1"/>

                        <xsd:element name="startingMatchNumber" type="xsd:integer" 
minOccurs="0" maxOccurs="1"/>

            <xsd:element name="city" type="xsd:string" minOccurs="0" maxOccurs="1"/>

            <xsd:element name="countryCode" type="xsd:string" minOccurs="0" 
maxOccurs="1"/>            

            <xsd:element name="stateCode" type="xsd:string" minOccurs="0" 
maxOccurs="1"/>

                        <xsd:element name="postalCode" type="xsd:string" minOccurs="0" 
maxOccurs="1"/>

                        <xsd:element name="hotelName" type="xsd:string" minOccurs="0" 
maxOccurs="1"/>

                        <xsd:element name="chainName" type="xsd:string" minOccurs="0" 
maxOccurs="1"/>

                        <xsd:element name="priceBand" type="xsd:string" minOccurs="0" 
maxOccurs="1"/>

                        <xsd:element name="checkAvailability" type="xsd:string" 
minOccurs="0" maxOccurs="1"/>

                        <xsd:element name="numberNights" type="xsd:integer" 
minOccurs="0" maxOccurs="1"/>                       

                        <xsd:element name="numberRooms" type="xsd:string" 
minOccurs="0" maxOccurs="1"/>

                        <xsd:element name="numberAdults" type="xsd:string" 
minOccurs="0" maxOccurs="1"/>

                        <xsd:element name="numberChildren" type="xsd:string" 
minOccurs="0" maxOccurs="1"/>

                        <xsd:element name="numberBeds" type="xsd:string" minOccurs="0" 
maxOccurs="1"/>                  

            <xsd:element name="maximumDistance" type="xsd:string" minOccurs="0" 
maxOccurs="1"/> <!-- temp? -->

            <xsd:element name="bedType" type="xsd:string" minOccurs="0" maxOccurs="1"/>

                        <xsd:element name="smokingPreference" type="xsd:string" 
minOccurs="0" maxOccurs="1"/>

                        <xsd:element name="additionalCurrency" type="xsd:string" 
minOccurs="0" maxOccurs="1"/>

                        <xsd:element name="sortBy" type="xsd:string" minOccurs="0" 
maxOccurs="1"/>

                        <xsd:element name="sortOrder" type="xsd:string" minOccurs="0" 
maxOccurs="1"/>

                        <xsd:element name="orderBy" type="xsd:string" minOccurs="0" 
maxOccurs="1"/>

            <xsd:element name="returnOnlyHotRateHotels" type="xsd:string" 
minOccurs="0" maxOccurs="1"/>

            <xsd:element name="returnOnlyAvailableHotels" type="xsd:string" 
minOccurs="0" maxOccurs="1"/>

            <xsd:element name="hotRateNightlyBreakdown" type="xsd:string" 
minOccurs="0" maxOccurs="1"/> 

                        

            <xsd:element name="amenities" minOccurs="0">

                <xsd:complexType>

                    <xsd:sequence>

                        <xsd:element name="amenity" type="xsd:string" 
maxOccurs="unbounded"/>

                    </xsd:sequence>

                </xsd:complexType>

            </xsd:element>



                <xsd:element ref="arrivalDate" minOccurs="0" maxOccurs="1"/>

                <xsd:element ref="departureDate" minOccurs="0" maxOccurs="1"/>

                <xsd:element ref="coordinates" minOccurs="0" maxOccurs="1"/>

                </xsd:sequence>

        </xsd:group>



        <!--Used for coordinates -->

        <xsd:element name="coordinates">

                <xsd:complexType>

                        <xsd:sequence>

                                <xsd:element name="latitude" type="xsd:string" 
minOccurs="0" maxOccurs="1" />

                                <xsd:element name="longitude" type="xsd:string" 
minOccurs="0" maxOccurs="1"/>

                        </xsd:sequence>

                </xsd:complexType>

        </xsd:element>



        <!--used for request type="propertyInformation -->

        <xsd:group name="propertyInformationRequest">

                <xsd:sequence>

                        <xsd:element name="hotelId" type="xsd:string" minOccurs="1" 
maxOccurs="1"/>

                        <xsd:element name="include" type="xsd:string" minOccurs="0"/>

                </xsd:sequence>

        </xsd:group>



        <!--used for to find out propertyAvailabilityRequest -->

        <xsd:group name="propertyAvailabilityRequest">

                <xsd:sequence>

                        <xsd:element name="hotelId" type="xsd:string" minOccurs="1" 
maxOccurs="1"/>

                        <xsd:element name="numberOfNights" type="xsd:integer" 
minOccurs="0" maxOccurs="1"/>

                        <xsd:element name="numberRooms" type="xsd:integer" 
minOccurs="0" maxOccurs="1"/>

                        <xsd:element name="numberAdults" type="xsd:integer" 
minOccurs="0" maxOccurs="1"/>

                        <xsd:element name="numberChildren" type="xsd:integer" 
minOccurs="0" maxOccurs="1"/>

                        <xsd:element name="numberBeds" type="xsd:integer" 
minOccurs="0" maxOccurs="1"/>

                        <xsd:element name="bedType" type="xsd:string" minOccurs="0" 
maxOccurs="1"/>

                        <xsd:element name="smokingPreference" type="xsd:string" 
minOccurs="0" maxOccurs="1"/>

                        <xsd:element name="sortBy" type="xsd:string" minOccurs="0" 
maxOccurs="1"/>

            <xsd:element name="additionalCurrency" type="xsd:string" minOccurs="0" 
maxOccurs="1"/>

                        <xsd:element name="sortOrder" type="xsd:string" minOccurs="0" 
maxOccurs="1"/>

                        <xsd:element ref="arrivalDate" minOccurs="1" maxOccurs="1"/>

                        <xsd:element ref="departureDate" minOccurs="1" maxOccurs="1"/>

                </xsd:sequence>

        </xsd:group>



        <!-- used for rate rules -->

        <xsd:group name="rateRulesRequest">

                <xsd:sequence>

                        <xsd:element name="hotelId" type="xsd:string" minOccurs="0" 
maxOccurs="1"/>

                        <xsd:element ref="arrivalDate" minOccurs="1" maxOccurs="1"/>

                        <xsd:element ref="departureDate" minOccurs="0"/>

                        <xsd:element name="numberNights" type="xsd:integer" 
minOccurs="0"/>

                        <xsd:element name="numberRooms" type="xsd:integer" 
minOccurs="0"/>

                        <xsd:element name="numberAdults" type="xsd:integer" 
minOccurs="0"/>

                        <xsd:element name="numberChildren" type="xsd:integer" 
minOccurs="0"/>

                        <xsd:element name="numberBeds" type="xsd:integer" 
minOccurs="0"/>

                        <xsd:element name="bedType" type="xsd:string" minOccurs="0"/>

                        <xsd:element name="smokingPreference" type="xsd:string" 
minOccurs="0"/>

                        <xsd:element name="additionalCurrency" type="xsd:string" 
minOccurs="0"/>

                        <xsd:element name="roomTypeCode" type="xsd:string" 
minOccurs="0"/>

                        <xsd:element name="ratePlanCode" type="xsd:string" 
minOccurs="0"/>

                        <xsd:element name="invSource" type="xsd:string" minOccurs="0"/>

                </xsd:sequence>

        </xsd:group>



        <!-- Used for creditCard -->

    <xsd:element name="discountCodes">

        <xsd:complexType>

            <xsd:sequence>

                <xsd:element name="corporateAccountNumber" type="xsd:string" 
minOccurs="0" maxOccurs="1"/>

                <xsd:element name="frequentGuestNumber" type="xsd:string" 
minOccurs="0" maxOccurs="1"/>

            </xsd:sequence>

        </xsd:complexType>

    </xsd:element>



            <!-- used by a request to cancel a reservation -->

        <xsd:group name="cancelReservation">

                <xsd:sequence>

                        <xsd:element name="confirmationNumber" type="xsd:string" 
minOccurs="1" maxOccurs="1"/>



                <!-- represents the customer element-->

            <xsd:element name="customer" minOccurs="1" maxOccurs="1">

                <xsd:complexType>

                    <xsd:sequence>

                        <xsd:element name="clientId" type="xsd:string" minOccurs="0"/>

                        <xsd:element name="firstName" type="xsd:string" minOccurs="0"/>

                        <xsd:element name="lastName" type="xsd:string" minOccurs="0"/>

                    </xsd:sequence>

                </xsd:complexType>

            </xsd:element>

                

            </xsd:sequence>

        </xsd:group>



        <!-- used by a request to view a reservation -->

        <xsd:group name="viewReservation">

                <xsd:sequence>

                        <xsd:element name="confirmationNumber" type="xsd:string" 
minOccurs="1" maxOccurs="1"/>

                        

                            <!-- represents the customer element-->

            <xsd:element name="customer" minOccurs="1" maxOccurs="1">

                <xsd:complexType>

                    <xsd:sequence>

                        <xsd:element name="clientId" type="xsd:string" minOccurs="0"/>

                        <xsd:element name="firstName" type="xsd:string" minOccurs="0"/>

                        <xsd:element name="lastName" type="xsd:string" minOccurs="0"/>

                    </xsd:sequence>

                </xsd:complexType>

            </xsd:element>



                </xsd:sequence>

        </xsd:group>



        <!--used to book reservation-->

        <xsd:group name="bookReservation">

                <xsd:sequence>

                        <xsd:element name="hotelId" type="xsd:string" minOccurs="1" 
maxOccurs="1"/>

                        <xsd:element name="numberNights" type="xsd:integer" 
minOccurs="0"/>

                        <xsd:element name="numberAdults" type="xsd:integer" 
minOccurs="0"/>

                        <xsd:element name="numberChildren" type="xsd:integer" 
minOccurs="0"/>

                        <xsd:element name="smokingPreference" type="xsd:string" 
minOccurs="0"/>

                        <xsd:element name="numberRooms" type="xsd:integer" 
minOccurs="0"/>

                        <xsd:element name="bedType" type="xsd:string" minOccurs="0"/>

                        <xsd:element name="numberBeds" type="xsd:integer" 
minOccurs="0"/>

                        <xsd:element name="guestRemarks" type="xsd:string" 
minOccurs="0"/>

                        <xsd:element name="willWait" type="xsd:string" minOccurs="0"/>

                        <xsd:element name="additionalCurrency" type="xsd:string" 
minOccurs="0"/>

                        <xsd:element ref="customer" minOccurs="1" maxOccurs="1"/>

                        <xsd:element ref="arrivalDate" minOccurs="0" maxOccurs="1" />

                        <xsd:element ref="departureDate" minOccurs="0" maxOccurs="1" />

                        <xsd:element ref="discountCodes" minOccurs="0" maxOccurs="1" />



                <!-- Used for creditCard -->

            <xsd:element name="creditCard" minOccurs="1" maxOccurs="1">

                <xsd:complexType>

                    <xsd:sequence>

                        <xsd:element name="brand" type="xsd:string" minOccurs="1" 
maxOccurs="1"/>

                        <xsd:element name="number" type="xsd:string" minOccurs="1" 
maxOccurs="1"/>

                        <xsd:element name="expirationMonth" type="xsd:string" 
minOccurs="1" maxOccurs="1"/>

                        <xsd:element name="expirationYear" type="xsd:string" 
minOccurs="1" maxOccurs="1"/>

                    </xsd:sequence>

                </xsd:complexType>

            </xsd:element>



                <!-- Used for rate -->

            <xsd:element name="rate" minOccurs="0" maxOccurs="1">

                <xsd:complexType>

                    <xsd:sequence>

                        <xsd:element name="invSource" type="xsd:string" minOccurs="1" 
maxOccurs="1"/>

                        <xsd:element name="ratePlanCode" type="xsd:string" 
minOccurs="0" maxOccurs="1"/>

                        <xsd:element name="roomTypeCode" type="xsd:string" 
minOccurs="0" maxOccurs="1"/>

                    </xsd:sequence>

                </xsd:complexType>

            </xsd:element>



                </xsd:sequence>

        </xsd:group>



        <!--used for local currency-->

        <xsd:element name="localCurrency">

                <xsd:complexType>

                        <xsd:sequence>

                                <xsd:element name="currency" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="amount" type="xsd:double" 
minOccurs="0"/>

                                <xsd:element name="totalAmount" type="xsd:double" 
minOccurs="0"/>

                                <xsd:element name="maxAmount" type="xsd:double" 
minOccurs="0"/>

                        </xsd:sequence>

                </xsd:complexType>

        </xsd:element>



    <xsd:element name="amenity">

        <xsd:complexType>

            <xsd:sequence>

                <xsd:element name="code" type="xsd:string" minOccurs="0" 
maxOccurs="1"/>

                <xsd:element name="name" type="xsd:string" minOccurs="0" 
maxOccurs="1"/>

            </xsd:sequence>

        </xsd:complexType>

    </xsd:element>



        <!-- nearby locations for proprty overview -->

        <xsd:element name="nearbyLocations">

                <xsd:complexType>

                        <xsd:sequence>

                                <xsd:element ref="pointsOfInterest" minOccurs="0"/>

                                <xsd:element ref="restaurants" minOccurs="0"/>

                                <xsd:element ref="businesses" minOccurs="0"/>

                                <xsd:element ref="attractions" minOccurs="0"/>

                                <xsd:element ref="areaHighlights" minOccurs="0"/>

                        </xsd:sequence>

                </xsd:complexType>

        </xsd:element>

        

    <!-- images for proprty overview -->

        <xsd:element name="images">

                <xsd:complexType>

                        <xsd:sequence>

                                <xsd:element ref="image" minOccurs="0" 
maxOccurs="unbounded"/>

                        </xsd:sequence>

                </xsd:complexType>

        </xsd:element>



    <!-- images for proprty overview -->

        <xsd:element name="image">

                <xsd:complexType>

                        <xsd:sequence>

                                <xsd:element name="url" type="xsd:string" 
minOccurs="1"/>

                                <xsd:element name="height" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="width" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="name" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="caption" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="primary" type="xsd:string" 
minOccurs="1"/>

                        </xsd:sequence>

                </xsd:complexType>

        </xsd:element>



        <!-- services info info proprty overview -->

        <xsd:element name="servicesInfo">

                <xsd:complexType>

                        <xsd:sequence>

                                <xsd:element name="service" type="xsd:string" 
minOccurs="1"/>

                        </xsd:sequence>

                </xsd:complexType>

        </xsd:element>



        <!-- room types for property -->

        <xsd:element name="roomTypes">

                <xsd:complexType>

                        <xsd:sequence>

                <xsd:element ref="room" minOccurs="0" maxOccurs="unbounded"/>

                        </xsd:sequence>

                </xsd:complexType>

        </xsd:element>



        <!-- room info proprty -->

        <xsd:element name="room">

                <xsd:complexType>

                        <xsd:sequence>

                                <xsd:element name="type" type="xsd:string" 
minOccurs="0" maxOccurs="1"/>

                                <xsd:element name="description" type="xsd:string" 
minOccurs="0" maxOccurs="1"/>

                        </xsd:sequence>

                </xsd:complexType>

        </xsd:element>



        <!--points of interest for property-->

        <xsd:element name="pointsOfInterest">

                <xsd:complexType>

                        <xsd:sequence>

                                <xsd:element ref="location" minOccurs="0" 
maxOccurs="unbounded"/>

                        </xsd:sequence>

                </xsd:complexType>

        </xsd:element>



        <!-- restaurants for property-->

        <xsd:element name="restaurants">

                <xsd:complexType>

                        <xsd:sequence>

                                <xsd:element ref="location" minOccurs="0" 
maxOccurs="unbounded"/>

                        </xsd:sequence>

                </xsd:complexType>

        </xsd:element>



        <!-- businesses for property-->

        <xsd:element name="businesses">

                <xsd:complexType>

                        <xsd:sequence>

                                <xsd:element ref="location" minOccurs="0" 
maxOccurs="unbounded"/>

                        </xsd:sequence>

                </xsd:complexType>

        </xsd:element>



        <!-- attractions for property-->

        <xsd:element name="attractions">

                <xsd:complexType>

                        <xsd:sequence>

                                <xsd:element ref="location" minOccurs="0" 
maxOccurs="unbounded"/>

                        </xsd:sequence>

                </xsd:complexType>

        </xsd:element>



        <!-- area highlights for property-->

        <xsd:element name="areaHighlights">

                <xsd:complexType>

                        <xsd:sequence>

                                <xsd:element ref="location" minOccurs="0" 
maxOccurs="unbounded"/>

                        </xsd:sequence>

                </xsd:complexType>

        </xsd:element>



        <!-- basic info for property info -->

        <xsd:element name="basicInfo">

                <xsd:complexType>

                        <xsd:sequence>

                <xsd:element name="descriptionText" type="xsd:string" minOccurs="0" 
maxOccurs="1"/>

                <xsd:element name="overviewText" type="xsd:string" minOccurs="0" 
maxOccurs="1"/>

                        </xsd:sequence>

                </xsd:complexType>

        </xsd:element>



        <!-- policies for property info -->

        <xsd:element name="policies">

                <xsd:complexType>

                        <xsd:sequence>

                <xsd:element name="cancelPolicy" type="xsd:string" minOccurs="0" 
maxOccurs="1"/>

                <xsd:element name="guaranteePolicy" type="xsd:string" minOccurs="0" 
maxOccurs="1"/>

                <xsd:element name="checkInPolicy" type="xsd:string" minOccurs="0" 
maxOccurs="1"/>

                <xsd:element name="checkOutPolicy" type="xsd:string" minOccurs="0" 
maxOccurs="1"/>

                        </xsd:sequence>

                </xsd:complexType>

        </xsd:element>



        <!-- locationInfo for property-->

        <xsd:element name="locationInfo">

                <xsd:complexType>

                        <xsd:sequence>

                                <xsd:element name="areaAirports" type="xsd:string" 
minOccurs="0" maxOccurs="1"/>

                                <xsd:element name="areasServed" type="xsd:string" 
minOccurs="0" maxOccurs="1"/>

                                <xsd:element ref="drivingDirections" minOccurs="0"/>

                        </xsd:sequence>

                </xsd:complexType>

        </xsd:element>



        <!-- drivingDirections for property-->

        <xsd:element name="drivingDirections">

                <xsd:complexType>

                        <xsd:sequence>

                

                <xsd:element name="location" minOccurs="0" maxOccurs="unbounded">

                    <xsd:complexType>

                        <xsd:sequence>

                            <xsd:element name="directions" type="xsd:string" 
minOccurs="0" maxOccurs="1"/>

                            <xsd:element name="name" type="xsd:string" minOccurs="0" 
maxOccurs="1"/>

                        </xsd:sequence>

                    </xsd:complexType>

                </xsd:element>



                        </xsd:sequence>

                </xsd:complexType>

        </xsd:element>



        <!-- location for property info -->

        <xsd:element name="location">

                <xsd:complexType>

                        <xsd:sequence>

                                <xsd:element name="distance" type="xsd:string" 
minOccurs="0" maxOccurs="1"/>

                                <xsd:element name="name" type="xsd:string" 
minOccurs="0" maxOccurs="1"/>

                        </xsd:sequence>

                </xsd:complexType>

        </xsd:element>



        <!--definition for Date -->

        <xsd:element name="date">

                <xsd:complexType>

                        <xsd:sequence>

                                <xsd:element name="year" type="xsd:string" 
minOccurs="1" maxOccurs="1"/>

                                <xsd:element name="month" type="xsd:string" 
minOccurs="1" maxOccurs="1"/>

                                <xsd:element name="day" type="xsd:string" 
minOccurs="1" maxOccurs="1"/>

                        </xsd:sequence>

                </xsd:complexType>

        </xsd:element>

        

        <!-- represents the customer element -->

        <xsd:element name="customer">

                <xsd:complexType>

                        <xsd:sequence>

                                <xsd:element name="clientId" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="firstName" type="xsd:string" 
minOccurs="1"/>

                                <xsd:element name="lastName" type="xsd:string" 
minOccurs="1"/>

                                <xsd:element name="phone" type="xsd:string" 
minOccurs="1"/>

                                <xsd:element name="streetAddress1" type="xsd:string" 
minOccurs="1"/>

                                <xsd:element name="streetAddress2" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="streetAddress3" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="streetAddress4" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="city" type="xsd:string" 
minOccurs="1"/>

                                <xsd:element name="stateCode" type="xsd:string" 
minOccurs="0"/>

                                <xsd:element name="countryCode" type="xsd:string" 
minOccurs="1"/>

                                <xsd:element name="postalCode" type="xsd:string" 
minOccurs="1"/>

                                <xsd:element name="email" type="xsd:string" 
minOccurs="1"/>

                                <xsd:element name="subscribeNewsletter" 
type="xsd:string" minOccurs="0"/>

                        </xsd:sequence>

                </xsd:complexType>

        </xsd:element>



        <!-- definition for arrivalDate -->

        <xsd:element name="arrivalDate">

                <xsd:complexType>

                        <xsd:sequence>

                                <xsd:element name="year" type="xsd:string" 
minOccurs="0" maxOccurs="1"/>

                                <xsd:element name="month" type="xsd:string" 
minOccurs="1" maxOccurs="1"/>

                                <xsd:element name="day" type="xsd:string" 
minOccurs="1" maxOccurs="1"/>

                        </xsd:sequence>

                </xsd:complexType>

        </xsd:element>

        

    <!-- definition for departureDate -->

        <xsd:element name="departureDate">

                <xsd:complexType>

                        <xsd:sequence>

                                <xsd:element name="year" type="xsd:string" 
minOccurs="0" maxOccurs="1"/>

                                <xsd:element name="month" type="xsd:string" 
minOccurs="1" maxOccurs="1"/>

                                <xsd:element name="day" type="xsd:string" 
minOccurs="1" maxOccurs="1"/>

                        </xsd:sequence>

                </xsd:complexType>

        </xsd:element>



</xsd:schema>

Reply via email to