<?xml version="1.0"?>
<!--

    DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.

    Copyright (c) 1997-2017 Oracle and/or its affiliates. All rights reserved.

    The contents of this file are subject to the terms of either the GNU
    General Public License Version 2 only ("GPL") or the Common Development
    and Distribution License("CDDL") (collectively, the "License").  You
    may not use this file except in compliance with the License.  You can
    obtain a copy of the License at
    https://oss.oracle.com/licenses/CDDL+GPL-1.1
    or LICENSE.txt.  See the License for the specific
    language governing permissions and limitations under the License.

    When distributing the software, include this License Header Notice in each
    file and include the License file at LICENSE.txt.

    GPL Classpath Exception:
    Oracle designates this particular file as subject to the "Classpath"
    exception as provided by Oracle in the GPL Version 2 section of the License
    file that accompanied this code.

    Modifications:
    If applicable, add the following below the License Header, with the fields
    enclosed by brackets [] replaced by your own identifying information:
    "Portions Copyright [year] [name of copyright owner]"

    Contributor(s):
    If you wish your version of this file to be governed by only the CDDL or
    only the GPL Version 2, indicate your decision by adding "[Contributor]
    elects to include this software in this distribution under the [CDDL or GPL
    Version 2] license."  If you don't indicate a single choice of license, a
    recipient has the option to distribute your version of this file under
    either the CDDL, the GPL Version 2 or to extend the choice of license to
    its licensees as provided above.  However, if you add GPL Version 2 code
    and therefore, elected the GPL Version 2 license, then the option applies
    only if the new code is made subject to such option by the copyright
    holder.

-->

<definitions name="AuctionTraq"
    targetNamespace="http://example.com/auctiontraq/wsdl/doclit"
    xmlns:tns="http://example.com/auctiontraq/wsdl/doclit"
    xmlns:data="http://example.com/auctiontraq/schemas/doclit"
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns="http://schemas.xmlsoap.org/wsdl/"
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">

    <types>
        <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            targetNamespace="http://example.com/auctiontraq/schemas/doclit"
            xmlns="http://example.com/auctiontraq/schemas/doclit"
            elementFormDefault="qualified"
            attributeFormDefault="unqualified">

            <!-- <xsd:import namespace="http://example.com/auctiontraq/schemas/doclit" schemaLocation="AuctionSchema.xsd"/> -->
            <xsd:include schemaLocation="AuctionSchema.xsd"/> 
				
            <xsd:element name="UserID" type="xsd:string"/>
            <xsd:element name="UserID1" type="xsd:string"/>
            <xsd:element name="UserID2" type="xsd:string"/>
            <xsd:element name="UserID3" type="xsd:string"/>
            <xsd:element name="UserID4" type="xsd:string"/>
            <xsd:element name="UserID5" type="xsd:string"/>
            <xsd:element name="Name" type="NameType"/>
            <xsd:element name="User" type="UserType"/>
            <xsd:element name="User3" type="UserType"/>
            <xsd:element name="User_nillable" type="UserType" nillable="true"/>
            <xsd:element name="User_nillable1" type="UserType" nillable="true"/>
            <xsd:element name="User_nillable3" type="UserType" nillable="true"/>
            <xsd:element name="AuctionID" type="xsd:int"/>
            <xsd:element name="EmptyElement">
                <xsd:complexType>
                    <xsd:sequence/>
                </xsd:complexType>
            </xsd:element>
            <xsd:element name="GetUserByID" type="xsd:string"/>
            <xsd:element name="GetAddressByUserID" type="xsd:string"/>
            <xsd:element name="Address" type="AddressType"/>
            <xsd:element name="GetUsersByAddress" type="AddressType"/>
            <xsd:element name="GetUsersByName" type="NameType"/>
            <xsd:element name="Users">
            <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="user" type="UserType" minOccurs="0" maxOccurs="unbounded"/>
            </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
            <xsd:element name="Person" type="PersonType"/>
            <xsd:element name="GetPersonByName" type="NameType"/>
            <xsd:element name="GetPersonByName1">
            <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="name"  type="NameType"/>
            </xsd:sequence>
                </xsd:complexType>
            </xsd:element>

            <xsd:element name="GetAuctionItemByID">
            <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="auctionId" type="xsd:int"/>
            </xsd:sequence>
                </xsd:complexType>
            </xsd:element>

            <xsd:element name="GetProductByID">
            <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="productId"  type="xsd:string"/>
            </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
            <xsd:element name="Product" type="ProductType"/>
            <xsd:element name="AuctionItem" type="AuctionItemType"/>
            <xsd:element name="GetUsers1">
            <xsd:complexType>
            <xsd:sequence>
                <!-- changed name "users" to java keyword "for", used customization --> 
                <xsd:element name="for" type="UserType" minOccurs="0" maxOccurs="unbounded"/>
            </xsd:sequence>
                </xsd:complexType>
            </xsd:element>

            <xsd:element name="GetUsers2">
            <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="users" type="UserType" minOccurs="0" maxOccurs="unbounded"/>
            </xsd:sequence>
                </xsd:complexType>
            </xsd:element>

            <xsd:element name="GetUsers3">
            <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="users" type="UserType" minOccurs="0" maxOccurs="unbounded"/>
            </xsd:sequence>
                </xsd:complexType>
            </xsd:element>


            <xsd:element name="SendEmptyEl">
                <xsd:complexType>
                    <xsd:sequence/>
                </xsd:complexType>
            </xsd:element>

            <xsd:element name="Calendar" type="xsd:dateTime"/>


            <xsd:element name="Fname_PO_GC" type="xsd:string"/>
            <xsd:element name="Lname_PO_GC" type="xsd:string"/>
            <xsd:element name="Mname_PO_GC" type="xsd:string"/>
            <xsd:element name="age_PO_GC" type="xsd:int"/>
            <xsd:element name="Fname_GC" type="xsd:string"/>
            <xsd:element name="Lname_GC" type="xsd:string"/>
            <xsd:element name="Mname_GC" type="xsd:string"/>
            <xsd:element name="age_GC" type="xsd:int"/>

            <xsd:element name="fname_po1" type="xsd:string"/>
            <xsd:element name="lname_po1" type="xsd:string"/>
            <xsd:element name="fname_po2" type="xsd:string"/>
            <xsd:element name="lname_po2" type="xsd:string"/>
            <xsd:element name="fname_po3" type="xsd:string"/>
            <xsd:element name="lname_po3" type="xsd:string"/>
            <xsd:element name="fname_po4" type="xsd:string"/>
            <xsd:element name="lname_po4" type="xsd:string"/>
            <xsd:element name="fname_po5" type="xsd:string"/>
            <xsd:element name="lname_po5" type="xsd:string"/>
            <xsd:element name="fname_po6" type="xsd:string"/>
            <xsd:element name="lname_po6" type="xsd:string"/>
            <xsd:element name="fname_po7" type="xsd:string"/>
            <xsd:element name="lname_po7" type="xsd:string"/>
            <xsd:element name="UserIDHeader" type="xsd:string"/>
            <xsd:element name="UserID_po1" type="xsd:string"/>
            <xsd:element name="UserID_po2" type="xsd:string"/>
            <xsd:element name="UserID_po3" type="xsd:string"/>
            <xsd:element name="UserID_po4" type="xsd:string"/>
            <xsd:element name="UserID_po5" type="xsd:string"/>
            <xsd:element name="UserID_po6" type="xsd:string"/>
            <xsd:element name="GetPersonByName_PO8" type="NameType"/>
            <xsd:element name="person_name_po" type="data:NameType"/>
            <xsd:element name="person_other_po">
            <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="dob" type="xsd:date"/>
                <xsd:element name="age" type="xsd:duration"/>
                <xsd:element name="ssn" type="xsd:unsignedByte" minOccurs="0" maxOccurs="3"/>
                <!--
                <xsd:element name="ssn">
                <xsd:simpleType>
                <xsd:list itemType="xsd:unsignedByte"/>
                </xsd:simpleType>
                </xsd:element>
                -->
            </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
            <xsd:element name="person_address_po" type="data:AddressType"/>
            <xsd:element name="GetAuctionItemByID_PO1">
            <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="auctionId" type="xsd:int"/>
            </xsd:sequence>
                </xsd:complexType>
            </xsd:element>


            <xsd:element name="PersonNotFoundException">
            <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="Name" type="NameType"/>
                <xsd:element name="ExMessage" minOccurs="0" maxOccurs="unbounded" type="xsd:string"/>
            </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
            <xsd:element name="IncorrectPerson" type="PersonType"/>
            <xsd:element name="SeverityException" type="xsd:short"/>
            <xsd:element name="ExReason" type="xsd:string"/>
            <xsd:element name="IncorrectLastNameException" type="xsd:string"/>
            <xsd:element name="Exception" type="xsd:string"/>
            <xsd:element name="UserNotFoundException" type="UserNotFoundExceptionType"/>
            <xsd:complexType name="UserNotFoundExceptionType">
                <xsd:sequence>
                    <xsd:element name="UserID" type="xsd:string"/>
                    <xsd:element name="ExMessage" minOccurs="1" maxOccurs="unbounded" type="xsd:string"/>
                </xsd:sequence>
            </xsd:complexType>
            <xsd:element name="AddressNotFoundException">
            <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="UserID" type="xsd:string"/>
                <xsd:element name="ExMessage" minOccurs="1" maxOccurs="unbounded" type="xsd:string"/>
            </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
            <xsd:element name="fname_f4" type="xsd:string"/>
            <xsd:element name="lname_f4" type="xsd:string"/>

            <xsd:element name="fname_eh1" type="xsd:string"/>
            <xsd:element name="lname_eh1" type="xsd:string"/>
            <xsd:element name="mname_eh" type="xsd:string"/>
            <xsd:element name="GetPersonByName_EH2" type="NameType"/>
        </xsd:schema>
    </types>

    <message name="EchoCalendarInput1">
        <part name="request" element="data:Calendar"/>
    </message>
    <message name="EchoCalendarOutput1">
        <part name="response" element="data:Calendar"/>
    </message>

    <message name="GetUserByIDInput1">
        <part name="body" element="data:UserID1"/>
    </message>
    <message name="GetUserByIDOutput1">
        <!-- test Body maps to body-->
        <!-- same name different type -->
        <part name="Body" element="data:User"/>
    </message>


    <message name="GetUserByIDInput2">
        <part name="request" element="data:UserID2"/>
        <part name="InHeader1" element="data:UserID2"/>
    </message>
    <message name="GetUserByIDOutput2">
        <part name="response" element="data:User"/>
        <part name="OutHeader1" element="data:User"/>
    </message>

    <message name="GetUserByIDInput3">
        <part name="body" element="data:UserID3"/>
        <part name="InHeader1" element="data:UserID3"/>
    </message>
    <message name="GetUserByIDOutput3">
        <part name="return" element="data:User"/>
        <part name="OutHeader1" element="data:User"/>
    </message>

    <message name="GetUserByIDInput4">
        <part name="request" element="data:UserID4"/>
        <part name="InOutHeader1" element="data:UserID4"/>
    </message>
    <message name="GetUserByIDOutput4">
        <part name="response" element="data:User"/>
        <part name="InOutHeader1" element="data:UserID4"/>
    </message>

    <message name="GetUserByIDInput5">
        <part name="body" element="data:UserID5"/>
    </message>
    <message name="GetUserByIDOutput5">
        <part name="body" element="data:UserID5"/>
        <!-- bind header to return type -->
        <part name="OutHeader1" element="data:User"/>
    </message>

    <message name="GetUserByIDInput6">
        <part name="GetUserByID" element="data:GetUserByID"/>
        <!-- bind header to return part -->
        <part name="return" element="data:UserID"/>
    </message>
    <message name="GetUserByIDOutput6">
        <part name="response" element="data:User"/>
        <!-- bind header to return part -->
        <part name="return" element="data:UserID"/>
    </message>

    <message name="GetUserByIDInput7">
        <part name="body" element="data:UserID"/>
    </message>
    <message name="GetUserByIDOutput7">
        <!-- only header -->
        <part name="OutHeader1" element="data:User"/>
    </message>

    <message name="GetUserInput1">
        <part name="body" element="data:User_nillable"/>
    </message>
    <message name="GetUserOutput1">
        <part name="body" element="data:User_nillable"/>
    </message>

    <message name="GetUserInput1_1">
        <part name="request" element="data:User_nillable1"/>
    </message>
    <message name="GetUserOutput1_1">
        <part name="response" element="data:User_nillable1"/>
    </message>

    <message name="GetUserInput2">
        <part name="UserHeader" element="data:User_nillable"/>
    </message>
    <message name="GetUserOutput2">
        <part name="UserHeader" element="data:User_nillable"/>
    </message>

    <message name="GetUserInput3">
        <!-- bind to body -->
        <part name="User" element="data:User_nillable3"/>
    </message>
    <message name="GetUserOutput3">
        <!-- bind to header -->
        <part name="User" element="data:User_nillable3"/>
    </message>

    <message name="GetUsersInput1_1">
        <part name="request" element="data:Users"/>
    </message>
    <message name="GetUsersOutput1_1">
        <part name="response" element="data:Users"/>
    </message>

    <message name="SendEmptyElInput">
        <part name="EmptyPartIn" element="data:EmptyElement"/>
    </message>
    <message name="SendEmptyElOutput">
        <part name="EmptyPartOut" element="data:EmptyElement"/>
    </message>








    <message name="GetAddressByUserIDInput">
        <part name="input" element="data:GetAddressByUserID"/>
    </message>
    <message name="GetAddressByUserIDOutput">
        <part name="output" element="data:Address"/>
    </message>

    <message name="GetUsersByAddressInput">
        <part name="input" element="data:GetUsersByAddress"/>
    </message>
    <message name="GetUsersByAddressOutput">
        <part name="output" element="data:Users"/>
    </message>

    <message name="GetUsersByNameInput">
        <part name="input" element="data:GetUsersByName"/>
    </message>
    <message name="GetUsersByNameOutput">
        <part name="output" element="data:Users"/>
    </message>

    <message name="SendEmptyElInput1_2">
        <part name="EmptyElInput" element="data:SendEmptyEl"/>
    </message>
    <message name="SendEmptyElOutput1_2">
        <part name="EmptyPartOut" element="data:EmptyElement"/>
    </message>

    <message name="GetUsersInput1_2">
        <part name="body" element="data:GetUsers1"/>
    </message>
    <message name="GetUsersOutput1_2">
        <part name="body" element="data:GetUsers1"/>
    </message>

    <message name="GetUsersInput2_2">
        <part name="UsersHeader" element="data:GetUsers2"/>
    </message>
    <message name="GetUsersOutput2_2">
        <part name="UsersHeader" element="data:GetUsers2"/>
    </message>

    <message name="GetUsersInput3_2">
        <!-- bind to body -->
        <part name="Users" element="data:GetUsers3"/>
    </message>
    <message name="GetUsersOutput3_2">
        <!-- bind to header -->
        <part name="Users" element="data:GetUsers3"/>
    </message>
    <message name="GetPersonByNameInput">
        <part name="Name" element="data:GetPersonByName"/>
    </message>
    <message name="GetPersonByNameOutput">
        <part name="Person" element="data:Person"/>
    </message>
    <message name="GetPersonByNameInput1">
        <part name="Name" element="data:GetPersonByName1"/>
    </message>
    <message name="GetPersonByNameOutput1">
        <part name="Person" element="data:Person"/>
    </message>

    <message name="GetAuctionItemByIDInput">
        <part name="auctionId" element="data:GetAuctionItemByID"/>
    </message>
    <message name="GetAuctionItemByIDOutput">
        <part name="AuctionItem" element="data:AuctionItem"/>
    </message>

    <message name="GetProductByIDInput">
        <part name="productId" element="data:GetProductByID"/>
    </message>
    <message name="GetProductByIDOutput">
        <part name="Product" element="data:Product"/>
    </message>



    <message name="GetPersonByName_GC_Input1">
        <part name="FirstName" element="data:Fname_GC"/>
        <part name="LastName" element="data:Lname_GC"/>
        <part name="MiddleName" element="data:Mname_GC"/>
        <part name="age" element="data:age_GC"/>
    </message>
    <message name="GetPersonByName_GC_Output1">
        <part name="Name" element="data:person_name_po"/>
        <part name="PersonalDetails" element="data:person_other_po"/>
        <part name="Address" element="data:person_address_po"/>
    </message>

    <message name="GetPersonByName_PO_GC_Input1">
        <part name="FirstName" element="data:Fname_PO_GC"/>
        <part name="LastName" element="data:Lname_PO_GC"/>
        <part name="MiddleName" element="data:Mname_PO_GC"/>
        <part name="age" element="data:age_PO_GC"/>
    </message>
    <message name="GetPersonByName_PO_GC_Output1">
        <part name="Name" element="data:person_name_po"/>
        <part name="PersonalDetails" element="data:person_other_po"/>
        <part name="Address" element="data:person_address_po"/>
    </message>

    <message name="GetPersonByName_PO_Input1">
        <part name="FirstName" element="data:fname_po1"/>
        <part name="LastName" element="data:lname_po1"/>
    </message>
    <message name="GetPersonByName_PO_Output1">
        <part name="name" element="data:person_name_po"/>
        <part name="PersonDetails" element="data:person_other_po"/>
        <part name="address" element="data:person_address_po"/>
    </message>

    <message name="GetPersonByName_PO_Input2">
        <part name="FirstName" element="data:fname_po2"/>
        <part name="LastName" element="data:lname_po2"/>
    </message>
    <message name="GetPersonByName_PO_Output2">
        <part name="name" element="data:person_name_po"/>
        <part name="PersonDetails" element="data:person_other_po"/>
        <part name="address" element="data:person_address_po"/>
    </message>
    <message name="GetPersonByName_PO_Input3">
        <part name="FirstName" element="data:fname_po3"/>
        <part name="LastName" element="data:lname_po3"/>
    </message>
    <message name="GetPersonByName_PO_Output3">
        <part name="name" element="data:person_name_po"/>
        <part name="PersonDetails" element="data:person_other_po"/>
        <part name="address" element="data:person_address_po"/>
    </message>
    <message name="GetPersonByName_PO_Input4">
        <part name="FirstName" element="data:fname_po4"/>
        <part name="LastName" element="data:lname_po4"/>
    </message>
    <message name="GetPersonByName_PO_Output4">
        <part name="name" element="data:person_name_po"/>
        <part name="PersonDetails" element="data:person_other_po"/>
        <part name="address" element="data:person_address_po"/>
    </message>
    <message name="GetPersonByName_PO_Input5">
        <part name="FirstName" element="data:fname_po5"/>
        <part name="LastName" element="data:lname_po5"/>
    </message>
    <message name="GetPersonByName_PO_Output5">
        <part name="name" element="data:person_name_po"/>
        <part name="PersonDetails" element="data:person_other_po"/>
        <part name="address" element="data:person_address_po"/>
    </message>
    <message name="GetPersonByName_PO_Input6">
        <part name="FirstName" element="data:fname_po6"/>
        <part name="LastName" element="data:lname_po6"/>
    </message>
    <message name="GetPersonByName_PO_Output6">
        <part name="name" element="data:person_name_po"/>
        <part name="PersonDetails" element="data:person_other_po"/>
        <part name="address" element="data:person_address_po"/>
    </message>
    <message name="GetPersonByName_PO_Input7">
        <part name="FirstName" element="data:fname_po7"/>
        <part name="LastName" element="data:lname_po7"/>
    </message>
    <message name="GetPersonByName_PO_Output7">
        <part name="name" element="data:person_name_po"/>
        <part name="PersonDetails" element="data:person_other_po"/>
        <part name="address" element="data:person_address_po"/>
    </message>

    <message name="GetPersonByName_PO_Input8">
        <part name="Name" element="data:GetPersonByName_PO8"/>
    </message>
    <message name="GetPersonByName_PO_Output8">
        <part name="Person" element="data:Person"/>
    </message>

    <message name="GetNameAddressByUserID_PO_Input1">
        <part name="UserId" element="data:UserID_po1"/>
        <part name="UserIdHeader" element="data:UserID_po1"/>
    </message>
    <message name="GetNameAddressByUserID_PO_Output1">
        <part name="UserId" element="data:UserID_po1"/>
        <part name="Name" element="data:person_name_po"/>
        <part name="Address" element="data:person_address_po"/>
    </message>

    <message name="GetNameAddressByUserID_PO_Input2">
        <part name="UserId" element="data:UserID_po2"/>
        <part name="UserIdHeader" element="data:UserID_po2"/>
    </message>
    <message name="GetNameAddressByUserID_PO_Output2">
        <part name="UserId" element="data:UserID_po2"/>
        <part name="Name" element="data:person_name_po"/>
        <part name="Address" element="data:person_address_po"/>
    </message>

    <message name="GetNameAddressByUserID_PO_Input3">
        <part name="UserId" element="data:UserID_po3"/>
        <part name="UserIdHeader" element="data:UserID_po3"/>
    </message>
    <message name="GetNameAddressByUserID_PO_Output3">
        <part name="UserId" element="data:UserID_po3"/>
        <part name="Name" element="data:person_name_po"/>
        <part name="Address" element="data:person_address_po"/>
    </message>
    <message name="GetNameAddressByUserID_PO_Input4">
        <part name="UserId" element="data:UserID_po4"/>
        <part name="UserIdHeader" element="data:UserID_po4"/>
    </message>
    <message name="GetNameAddressByUserID_PO_Output4">
        <part name="UserId" element="data:UserID_po4"/>
        <part name="Name" element="data:person_name_po"/>
        <part name="Address" element="data:person_address_po"/>
    </message>
    <message name="GetNameAddressByUserID_PO_Input5">
        <part name="UserId" element="data:UserID_po5"/>
        <part name="UserIdHeader" element="data:UserID_po5"/>
    </message>
    <message name="GetNameAddressByUserID_PO_Output5">
        <part name="UserId" element="data:UserID_po5"/>
        <part name="Name" element="data:person_name_po"/>
        <part name="Address" element="data:person_address_po"/>
    </message>
    <message name="GetNameAddressByUserID_PO_Input6">
        <part name="UserId" element="data:UserID_po6"/>
        <part name="UserIdHeader" element="data:UserID_po6"/>
    </message>
    <message name="GetNameAddressByUserID_PO_Output6">
        <part name="UserId" element="data:UserID_po6"/>
        <part name="Name" element="data:person_name_po"/>
        <part name="Address" element="data:person_address_po"/>
    </message>
    <message name="GetAuctionItemByID_PO_Input1">
        <part name="AuctionId" element="data:GetAuctionItemByID_PO1"/>
    </message>
    <message name="GetAuctionItemByID_PO_Output1">
        <part name="AuctionItem" element="data:AuctionItem"/>
    </message>


    <message name="PersonNotFoundFault">
        <part name="fault1" element="data:PersonNotFoundException"/>
    </message>
    <message name="PersonUnFoundFault">
        <part name="fault1" element="data:PersonNotFoundException"/>
    </message>
    <message name="IncorrectPersonFault">
        <part name="fault1" element="data:IncorrectPerson"/>
    </message>
    <message name="SeverityFault">
        <part name="fault2" element="data:SeverityException"/>
    </message>
    <message name="ReasonFault">
        <part name="fault3" element="data:ExReason"/>
    </message>
    <message name="UserNotFoundFault">
        <part name="fault4" element="data:UserNotFoundException"/>
    </message>

    <message name="Fault">
        <part name="fault5" element="data:Exception"/>
    </message>
    <message name="AddressNotFoundFault">
        <part name="fault6" element="data:AddressNotFoundException"/>
    </message>

    <message name="GetPersonByName_PO_Input_F4">
        <part name="FirstName" element="data:fname_f4"/>
        <part name="LastName" element="data:lname_f4"/>
    </message>
    <message name="GetPersonByName_PO_Output_F4">
        <part name="name" element="data:person_name_po"/>
        <part name="PersonDetails" element="data:person_other_po"/>
        <part name="address" element="data:person_address_po"/>
    </message>

    <message name="GetItemsSoldByPersonInput">
        <part name="Person" element="data:Person"/>

    </message>
    <message name="GetItemsSoldByPersonOutput">
        <part name="AuctionID" element="data:AuctionID"/>
    </message>
    <message name="GetPersonByName_PO_Input_EH1">
        <part name="FirstName" element="data:fname_eh1"/>
        <part name="LastName" element="data:lname_eh1"/>
    </message>
    <message name="GetPersonByName_PO_EH1">
        <part name="MiddleName" element="data:mname_eh"/>
    </message>
    <message name="GetPersonByName_PO_EH2">
        <part name="PersonalDetails" element="data:person_other_po"/>
    </message>
    <message name="GetPersonByName_PO_Output_EH1">
        <part name="Name" element="data:Name"/>
        <part name="Address" element="data:Address"/>
    </message>
    <message name="GetPersonByName_PO_Input_EH2">
        <part name="Name" element="data:GetPersonByName_EH2"/>
    </message>
    <message name="GetPersonByName_PO_Output_EH2">
        <part name="Person" element="data:Person"/>
    </message>

    <message name="HeaderFaults">
        <part name="HeaderFault1" element="data:IncorrectLastNameException"/>
        <part name="PersonNotFoundHeaderFault" element="data:PersonNotFoundException"/>
        <part name="HeaderReasonFault" element="data:ExReason"/>
        <part name="HeaderReasonFault1" element="data:ExReason"/>
    </message>

    <portType name="AuctionTraqPortType4">
		
        <operation name="GetUserByID1">
            <input message="tns:GetUserByIDInput1"/>
            <output message="tns:GetUserByIDOutput1"/>
            <fault name="Fault1" message="tns:SeverityFault"/>
            <fault name="Fault2" message="tns:UserNotFoundFault"/>
        </operation>
        <operation name="GetItemsSoldByPerson">
            <input message="tns:GetItemsSoldByPersonInput"/>
            <output message="tns:GetItemsSoldByPersonOutput"/>
            <fault name="Fault1" message="tns:IncorrectPersonFault"/>
        </operation>
        <operation name="GetPersonByName_PO1">
            <input message="tns:GetPersonByName_PO_Input1"/>
            <output message="tns:GetPersonByName_PO_Output1"/>
            <fault name="Fault1" message="tns:PersonNotFoundFault"/>
        </operation>
		
        <operation name="GetPersonByName_PO2">
            <input message="tns:GetPersonByName_PO_Input2"/>
            <output message="tns:GetPersonByName_PO_Output2"/>
            <fault name="Fault1" message="tns:PersonNotFoundFault"/>
            <fault name="Fault2" message="tns:PersonUnFoundFault"/>
        </operation>
		
        <operation name="GetPersonByName_PO3" parameterOrder="address PersonDetails LastName">
            <input message="tns:GetPersonByName_PO_Input3"/>
            <output message="tns:GetPersonByName_PO_Output3"/>
            <fault name="Fault1" message="tns:SeverityFault"/>
            <fault name="Fault2" message="tns:ReasonFault"/>
            <fault name="Fault3" message="tns:Fault"/>
        </operation>

        <operation name="GetPersonByName_PO4" parameterOrder="address PersonDetails LastName">
            <input message="tns:GetPersonByName_PO_Input_F4"/>
            <output message="tns:GetPersonByName_PO_Output_F4"/>
            <fault name="Fault1" message="tns:SeverityFault"/>
        </operation>

        <operation name="GetAddressByUserID">
            <input message="tns:GetAddressByUserIDInput"/>
            <output message="tns:GetAddressByUserIDOutput"/>
            <fault name="Fault1" message="tns:AddressNotFoundFault"/>
        </operation>

        <operation name="GetPersonByName_EH1" parameterOrder="FirstName LastName Address">
            <input message="tns:GetPersonByName_PO_Input_EH1"/>
            <output message="tns:GetPersonByName_PO_Output_EH1"/>
            <fault name="Fault1" message="tns:PersonNotFoundFault"/>
        </operation>
        
        <operation name="GetPersonByName_EH2" parameterOrder="GetPersonByName_EH2 Person ">
            <input message="tns:GetPersonByName_PO_Input_EH2"/>
            <output message="tns:GetPersonByName_PO_Output_EH2"/>
            <fault name="Fault1" message="tns:PersonNotFoundFault"/>
        </operation>
        
    </portType>
    <portType name="AuctionTraqPortType3">

        <operation name="GetPersonByName_GC1">
            <input message="tns:GetPersonByName_GC_Input1"/>
            <output message="tns:GetPersonByName_GC_Output1"/>
        </operation>

        <operation name="GetPersonByName_PO_GC1" parameterOrder="LastName Name Address">
            <input message="tns:GetPersonByName_PO_GC_Input1"/>
            <output message="tns:GetPersonByName_PO_GC_Output1"/>
        </operation>

        <operation name="GetPersonByName_PO1">
            <input message="tns:GetPersonByName_PO_Input1"/>
            <output message="tns:GetPersonByName_PO_Output1"/>
        </operation>

        <operation name="GetPersonByName_PO2" parameterOrder="LastName FirstName PersonDetails address">
            <input message="tns:GetPersonByName_PO_Input2"/>
            <output message="tns:GetPersonByName_PO_Output2"/>
        </operation>

        <operation name="GetPersonByName_PO3" parameterOrder="address PersonDetails LastName">
            <input message="tns:GetPersonByName_PO_Input3"/>
            <output message="tns:GetPersonByName_PO_Output3"/>
        </operation>

        <operation name="GetPersonByName_PO4" parameterOrder="PersonDetails LastName">
            <input message="tns:GetPersonByName_PO_Input4"/>
            <output message="tns:GetPersonByName_PO_Output4"/>
        </operation>
        <operation name="GetPersonByName_PO5" parameterOrder="name address">
            <input message="tns:GetPersonByName_PO_Input5"/>
            <output message="tns:GetPersonByName_PO_Output5"/>
        </operation>
        <operation name="GetPersonByName_PO6" parameterOrder="LastName FirstName">
            <input message="tns:GetPersonByName_PO_Input6"/>
            <output message="tns:GetPersonByName_PO_Output6"/>
        </operation>

        <operation name="GetPersonByName_PO7" parameterOrder="FirstName LastName address name PersonDetails">
            <input message="tns:GetPersonByName_PO_Input7"/>
            <output message="tns:GetPersonByName_PO_Output7"/>
        </operation>
        
        <operation name="GetPersonByName_PO8" parameterOrder="Person Name">
            <input message="tns:GetPersonByName_PO_Input8"/>
            <output message="tns:GetPersonByName_PO_Output8"/>
        </operation>
        
        <operation name="GetNameAddressByUserID_PO1">
            <input message="tns:GetNameAddressByUserID_PO_Input1"/>
            <output message="tns:GetNameAddressByUserID_PO_Output1"/>
        </operation>

        <operation name="GetNameAddressByUserID_PO2" parameterOrder="UserIdHeader Address UserId ">
            <input message="tns:GetNameAddressByUserID_PO_Input2"/>
            <output message="tns:GetNameAddressByUserID_PO_Output2"/>
        </operation>
        <operation name="GetNameAddressByUserID_PO3" parameterOrder="UserIdHeader UserId ">
            <input message="tns:GetNameAddressByUserID_PO_Input3"/>
            <output message="tns:GetNameAddressByUserID_PO_Output3"/>
        </operation>
        <operation name="GetNameAddressByUserID_PO4" parameterOrder="Address Name">
            <input message="tns:GetNameAddressByUserID_PO_Input4"/>
            <output message="tns:GetNameAddressByUserID_PO_Output4"/>
        </operation>
        <operation name="GetNameAddressByUserID_PO5" parameterOrder="UserId Name">
            <input message="tns:GetNameAddressByUserID_PO_Input5"/>
            <output message="tns:GetNameAddressByUserID_PO_Output5"/>
        </operation>
        <operation name="GetNameAddressByUserID_PO6" parameterOrder="Name UserIdHeader">
            <input message="tns:GetNameAddressByUserID_PO_Input6"/>
            <output message="tns:GetNameAddressByUserID_PO_Output6"/>
        </operation>
        <operation name="GetAuctionItemByID_PO1" paramterOrder="AuctionItem AuctionId">
            <input message="tns:GetAuctionItemByID_PO_Input1"/>
            <output message="tns:GetAuctionItemByID_PO_Output1"/>
        </operation>

    </portType>

    <portType name="AuctionTraqPortType1">

        <operation name="EchoCalendar">
            <input message="tns:EchoCalendarInput1"/>
            <output message="tns:EchoCalendarOutput1"/>
        </operation>

        <operation name="GetUserByID1">
            <input message="tns:GetUserByIDInput1"/>
            <output message="tns:GetUserByIDOutput1"/>
        </operation>

        <operation name="GetUserByID2">
            <input message="tns:GetUserByIDInput2"/>
            <output message="tns:GetUserByIDOutput2"/>
        </operation>

        <operation name="GetUserByID3">
            <input message="tns:GetUserByIDInput3"/>
            <output message="tns:GetUserByIDOutput3"/>
        </operation>

        <operation name="GetUserByID4">
            <input message="tns:GetUserByIDInput4"/>
            <output message="tns:GetUserByIDOutput4"/>
        </operation>
        
        <operation name="GetUserByID5">
            <input message="tns:GetUserByIDInput5"/>
            <output message="tns:GetUserByIDOutput5"/>
        </operation>
        
        <operation name="GetUserByID6">
            
            <input message="tns:GetUserByIDInput6"/>
            <output message="tns:GetUserByIDOutput6"/>
        </operation>
        
        <operation name="GetUserByID7">
            <input message="tns:GetUserByIDInput7"/>
            <output message="tns:GetUserByIDOutput7"/>
        </operation>
        
        <operation name="GetUser1">
            <input message="tns:GetUserInput1"/>
            <output message="tns:GetUserOutput1"/>
        </operation>


        <operation name="GetUser1_1">
            <input message="tns:GetUserInput1_1"/>
            <output message="tns:GetUserOutput1_1"/>
        </operation>


        <operation name="GetUser2">
            <input message="tns:GetUserInput2"/>
            <output message="tns:GetUserOutput2"/>
        </operation>

        <operation name="GetUser3">
            <input message="tns:GetUserInput3"/>
            <output message="tns:GetUserOutput3"/>

        </operation>

        <operation name="GetUsers1">
            <input message="tns:GetUsersInput1_1"/>
            <output message="tns:GetUsersOutput1_1"/>
        </operation>

        <operation name="SendEmptyEl">
            <input message="tns:SendEmptyElInput"/>
            <output message="tns:SendEmptyElOutput"/>
        </operation>

    </portType>

    <portType name="AuctionTraqPortType2">

        <operation name="GetAddressByUserID">
            <input message="tns:GetAddressByUserIDInput"/>
            <output message="tns:GetAddressByUserIDOutput"/>
        </operation>
        <operation name="GetUsersByName">
            <input message="tns:GetUsersByNameInput"/>
            <output message="tns:GetUsersByNameOutput"/>
        </operation>
        <operation name="GetUsersByAddress">
            <input message="tns:GetUsersByAddressInput"/>
            <output message="tns:GetUsersByAddressOutput"/>
        </operation>
        <operation name="GetUsers1">
            
            <input message="tns:GetUsersInput1_2"/>
            <output message="tns:GetUsersOutput1_2"/>
        </operation>
        <!-- Its not considered for wrapper style anymore as spec clarifies that if the part is bound to header -->
        <operation name="GetUsers2">
            <input message="tns:GetUsersInput2_2"/>
            <output message="tns:GetUsersOutput2_2"/>
        </operation>
        <!-- Its not considered for wrapper style anymore as spec clarifies that if the part is bound to header -->
        <operation name="GetUsers3">
            <input message="tns:GetUsersInput3_2"/>
            <output message="tns:GetUsersOutput3_2"/>
        </operation>
        <operation name="GetAuctionItemByID">
            <input message="tns:GetAuctionItemByIDInput"/>
            <output message="tns:GetAuctionItemByIDOutput"/>
        </operation>
        <operation name="GetProductByID">
            <input message="tns:GetProductByIDInput"/>
            <output message="tns:GetProductByIDOutput"/>
        </operation>


        <operation name="SendEmptyEl">
            <input message="tns:SendEmptyElInput1_2"/>
            <output message="tns:SendEmptyElOutput1_2"/>
        </operation>

        
        <operation name="GetPersonByName">
            <input message="tns:GetPersonByNameInput"/>
            <output message="tns:GetPersonByNameOutput"/>
        </operation>

        <operation name="GetPersonByName1">
            <input message="tns:GetPersonByNameInput1"/>
            <output message="tns:GetPersonByNameOutput1"/>
        </operation>
        

    </portType>

    <binding name="AuctionTraqSoapBinding1" type="tns:AuctionTraqPortType1">
        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

        <operation name="EchoCalendar">
            <soap:operation soapAction="http://example.com/auctiontraq/EchoCalendar"/>
            <input>
                <soap:body use="literal"/>
            </input>
            <output>
                <soap:body use="literal"/>
            </output>
        </operation>

        <operation name="GetUserByID1">
            <soap:operation soapAction="http://example.com/auctiontraq/GetUserByID1"/>
            <input>
                <soap:body use="literal"/>
            </input>
            <output>
                <soap:body use="literal"/>
            </output>
        </operation>

        <operation name="GetUserByID2">
            <input>
                <soap:body parts="request" use="literal"/>
                <soap:header message="tns:GetUserByIDInput2" part="InHeader1" use="literal"/>
            </input>
            <output>
                <soap:body parts="response" use="literal"/>
                <soap:header message="tns:GetUserByIDOutput2" part="OutHeader1" use="literal"/>
            </output>
        </operation>

        <operation name="GetUserByID3">
            <input>
                <soap:header message="tns:GetUserByIDInput3" part="InHeader1" use="literal"/>
                <soap:body parts="body" use="literal"/>
            </input>
            <output>
                <soap:header message="tns:GetUserByIDOutput3" part="OutHeader1" use="literal"/>
                <soap:body parts="return" use="literal"/>
            </output>
        </operation>

        <operation name="GetUserByID4">
            <input>
                <soap:body parts="request" use="literal"/>
                <soap:header message="tns:GetUserByIDInput4" part="InOutHeader1" use="literal"/>
            </input>
            <output>
                <soap:body parts="response" use="literal"/>
                <soap:header message="tns:GetUserByIDOutput4" part="InOutHeader1" use="literal"/>
            </output>
        </operation>
        
        <operation name="GetUserByID5">
            <input>
                <soap:body use="literal"/>
            </input>
            <output>
                <soap:body parts="body" use="literal"/>
                <soap:header message="tns:GetUserByIDOutput5" part="OutHeader1" use="literal"/>
            </output>
        </operation>
        
        <operation name="GetUserByID6">
            <input>
                <soap:body parts="GetUserByID" use="literal"/>
                <soap:header message="tns:GetUserByIDInput6" part="return" use="literal"/>
            </input>
            <output>
                <soap:body parts="response" use="literal"/>
                <soap:header message="tns:GetUserByIDOutput6" part="return" use="literal"/>
            </output>
        </operation>
        
        <operation name="GetUserByID7">
            <input>
                <soap:body use="literal"/>
            </input>
            <output>
                <soap:body parts="" use="literal"/>
                <soap:header message="tns:GetUserByIDOutput7" part="OutHeader1" use="literal"/>
            </output>
        </operation>
        
        <operation name="GetUser1">
            <input>
                <soap:body use="literal"/>
            </input>
            <output>
                <soap:body use="literal"/>
            </output>
        </operation>

        <operation name="GetUser1_1">
            <input>
                <soap:body use="literal"/>
            </input>
            <output>
                <soap:body use="literal"/>
            </output>
        </operation>

        <operation name="GetUsers1">
            <input>
                <soap:body use="literal"/>
            </input>
            <output>
                <soap:body use="literal"/>
            </output>
        </operation>


        <operation name="GetUser2">
            <input>
                <soap:body parts="" use="literal"/>
                <soap:header message="tns:GetUserInput2" part="UserHeader" use="literal"/>
            </input>
            <output>
                <soap:body parts="" use="literal"/>
                <soap:header message="tns:GetUserOutput2" part="UserHeader" use="literal"/>
            </output>
        </operation>

        <operation name="GetUser3">
            <input>
                <soap:body use="literal"/>
            </input>
            <output>
                <soap:body parts="" use="literal"/>
                <soap:header message="tns:GetUserOutput3" part="User" use="literal"/>
            </output>
        </operation>

        <operation name="SendEmptyEl">
            <input>
                <soap:body use="literal"/>
            </input>
            <output>
                <soap:body use="literal"/>
            </output>
        </operation>

    </binding>

    <binding name="AuctionTraqSoapBinding2" type="tns:AuctionTraqPortType2">
        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

        <operation name="GetAddressByUserID">
            <input>
                <soap:body use="literal"/>
            </input>
            <output>
                <soap:body use="literal"/>
            </output>
        </operation>

        <operation name="GetUsersByAddress">
            <input>
                <soap:body use="literal"/>
            </input>
            <output>
                <soap:body use="literal"/>
            </output>
        </operation>

        <operation name="GetUsersByName">
            <input>
                <soap:body use="literal"/>
            </input>
            <output>
                <soap:body use="literal"/>
            </output>
        </operation>

        <operation name="GetAuctionItemByID">
            <input>
                <soap:body use="literal"/>
            </input>
            <output>
                <soap:body use="literal"/>
            </output>
        </operation>

        <operation name="GetProductByID">
            <input>
                <soap:body use="literal"/>
            </input>
            <output>
                <soap:body use="literal"/>
            </output>
        </operation>


        <operation name="GetUsers1">
            <input>
                <soap:body use="literal"/>
            </input>
            <output>
                <soap:body use="literal"/>
            </output>
        </operation>

        <operation name="GetUsers2">
            <input>
                <soap:body parts="" use="literal"/>
                <soap:header message="tns:GetUsersInput2_2" part="UsersHeader" use="literal"/>
            </input>
            <output>
                <soap:body parts="" use="literal"/>
                <soap:header message="tns:GetUsersOutput2_2" part="UsersHeader" use="literal"/>
            </output>
        </operation>

        <operation name="GetUsers3">
            <input>
                <soap:body use="literal"/>
            </input>
            <output>
                <soap:body parts="" use="literal"/>
                <soap:header message="tns:GetUsersOutput3_2" part="Users" use="literal"/>
            </output>
        </operation>


        <operation name="SendEmptyEl">
            <input>
                <soap:body use="literal"/>
            </input>
            <output>
                <soap:body use="literal"/>
            </output>
        </operation>
        
        <operation name="GetPersonByName">
            <input>
                <soap:body use="literal"/>
            </input>
            <output>
                <soap:body use="literal"/>
            </output>
        </operation>

        <operation name="GetPersonByName1">
            <input>
                <soap:body use="literal"/>
            </input>
            <output>
                <soap:body use="literal"/>
            </output>
        </operation>
        
    </binding>
    <binding name="AuctionTraqSoapBinding3" type="tns:AuctionTraqPortType3">
        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
        <operation name="GetPersonByName_GC1">
            <soap:operation soapAction="http://example.com/auctiontraq/GetPersonByName_GC1"/>
            <input>
                <soap:body use="literal" parts="FirstName" />
                <soap:header message="tns:GetPersonByName_GC_Input1" part="LastName" use="literal"/>
            </input>
            <output>
                <soap:body use="literal" parts="Address"/>
                <soap:header message="tns:GetPersonByName_GC_Output1" part="Name" use="literal"/>
            </output>
        </operation>

        <operation name="GetPersonByName_PO_GC1">
            <soap:operation soapAction="http://example.com/auctiontraq/GetPersonByName_PO_GC1"/>
            <input>
                <soap:body use="literal" parts="FirstName" />
                <soap:header message="tns:GetPersonByName_PO_GC_Input1" part="LastName" use="literal"/>
            </input>
            <output>
                <soap:body use="literal" parts="Address"/>
                <soap:header message="tns:GetPersonByName_PO_GC_Output1" part="Name" use="literal"/>
            </output>
        </operation>

        <operation name="GetPersonByName_PO1">
            <soap:operation soapAction="http://example.com/auctiontraq/GetPersonByName_PO1"/>
            <input>
                <soap:body parts="FirstName" use="literal"/>
                <soap:header message="tns:GetPersonByName_PO_Input1" part="LastName" use="literal"/>
            </input>
            <output>
                <soap:body parts="PersonDetails" use="literal"/>
                <soap:header message="tns:GetPersonByName_PO_Output1" part="name" use="literal"/>
                <soap:header message="tns:GetPersonByName_PO_Output1" part="address" use="literal"/>
            </output>
        </operation>

        <operation name="GetPersonByName_PO2">
            <soap:operation soapAction="http://example.com/auctiontraq/GetPersonByName_PO2"/>
            <input>
                <soap:body parts="FirstName" use="literal"/>
                <soap:header message="tns:GetPersonByName_PO_Input2" part="LastName" use="literal"/>
            </input>
            <output>
                <soap:body parts="PersonDetails" use="literal"/>
                <soap:header message="tns:GetPersonByName_PO_Output2" part="name" use="literal"/>
                <soap:header message="tns:GetPersonByName_PO_Output2" part="address" use="literal"/>
            </output>
        </operation>

        <operation name="GetPersonByName_PO3">
            <soap:operation soapAction="http://example.com/auctiontraq/GetPersonByName_PO3"/>
            <input>
                <soap:body parts="FirstName" use="literal"/>
                <soap:header message="tns:GetPersonByName_PO_Input3" part="LastName" use="literal"/>
            </input>
            <output>
                <soap:body parts="PersonDetails" use="literal"/>
                <soap:header message="tns:GetPersonByName_PO_Output3" part="name" use="literal"/>
                <soap:header message="tns:GetPersonByName_PO_Output3" part="address" use="literal"/>
            </output>
        </operation>

        <operation name="GetPersonByName_PO4">
            <soap:operation soapAction="http://example.com/auctiontraq/GetPersonByName_PO4"/>
            <input>
                <soap:body parts="FirstName" use="literal"/>
                <soap:header message="tns:GetPersonByName_PO_Input4" part="LastName" use="literal"/>
            </input>
            <output>
                <soap:body parts="PersonDetails" use="literal"/>
                <soap:header message="tns:GetPersonByName_PO_Output4" part="name" use="literal"/>
                <soap:header message="tns:GetPersonByName_PO_Output4" part="address" use="literal"/>
            </output>
        </operation>
        <operation name="GetPersonByName_PO5">
            <soap:operation soapAction="http://example.com/auctiontraq/GetPersonByName_PO5"/>
            <input>
                <soap:body parts="FirstName" use="literal"/>
                <soap:header message="tns:GetPersonByName_PO_Input5" part="LastName" use="literal"/>
            </input>
            <output>
                <soap:body parts="PersonDetails" use="literal"/>
                <soap:header message="tns:GetPersonByName_PO_Output5" part="name" use="literal"/>
                <soap:header message="tns:GetPersonByName_PO_Output5" part="address" use="literal"/>
            </output>
        </operation>
        <operation name="GetPersonByName_PO6">
            <soap:operation soapAction="http://example.com/auctiontraq/GetPersonByName_PO6"/>
            <input>
                <soap:body parts="FirstName" use="literal"/>
                <soap:header message="tns:GetPersonByName_PO_Input6" part="LastName" use="literal"/>
            </input>
            <output>
                <soap:body parts="PersonDetails" use="literal"/>
                <soap:header message="tns:GetPersonByName_PO_Output6" part="name" use="literal"/>
                <soap:header message="tns:GetPersonByName_PO_Output6" part="address" use="literal"/>
            </output>
        </operation>

        <operation name="GetPersonByName_PO7">
            <soap:operation soapAction="http://example.com/auctiontraq/GetPersonByName_PO7"/>
            <input>
                <soap:body parts="FirstName" use="literal"/>
                <soap:header message="tns:GetPersonByName_PO_Input7" part="LastName" use="literal"/>
            </input>
            <output>
                <soap:body parts="PersonDetails" use="literal"/>
                <soap:header message="tns:GetPersonByName_PO_Output7" part="name" use="literal"/>
                <soap:header message="tns:GetPersonByName_PO_Output7" part="address" use="literal"/>
            </output>
        </operation>

        <operation name="GetPersonByName_PO8">
            <soap:operation soapAction="http://example.com/auctiontraq/GetPersonByName_PO8"/>
            <input>
                <soap:body use="literal"/>
            </input>
            <output>
                <soap:body use="literal"/>
            </output>
        </operation>


        <operation name="GetNameAddressByUserID_PO1">
            <soap:operation soapAction="GetNameAddressByUserID_PO1"/>
            <input>
                <soap:body parts="UserId" use="literal"/>
                <soap:header message="tns:GetNameAddressByUserID_PO_Input1" part="UserIdHeader" use="literal"/>
            </input>
            <output>
                <soap:body parts="Address" use="literal"/>
                <soap:header message="tns:GetNameAddressByUserID_PO_Output1" part="Name" use="literal"/>
                <soap:header message="tns:GetNameAddressByUserID_PO_Output1" part="UserId" use="literal"/>
            </output>
        </operation>

        <operation name="GetNameAddressByUserID_PO2">
            <soap:operation soapAction="GetNameAddressByUserID_PO2"/>
            <input>
                <soap:body parts="UserId" use="literal"/>
                <soap:header message="tns:GetNameAddressByUserID_PO_Input2" part="UserIdHeader" use="literal"/>
            </input>
            <output>
                <soap:body parts="Address" use="literal"/>
                <soap:header message="tns:GetNameAddressByUserID_PO_Output2" part="Name" use="literal"/>
                <soap:header message="tns:GetNameAddressByUserID_PO_Output2" part="UserId" use="literal"/>
            </output>
        </operation>
        <operation name="GetNameAddressByUserID_PO3">
            <soap:operation soapAction="GetNameAddressByUserID_PO3"/>
            <input>
                <soap:body parts="UserId" use="literal"/>
                <soap:header message="tns:GetNameAddressByUserID_PO_Input3" part="UserIdHeader" use="literal"/>
            </input>
            <output>
                <soap:body parts="Address" use="literal"/>
                <soap:header message="tns:GetNameAddressByUserID_PO_Output3" part="Name" use="literal"/>
                <soap:header message="tns:GetNameAddressByUserID_PO_Output3" part="UserId" use="literal"/>
            </output>
        </operation>
        <operation name="GetNameAddressByUserID_PO4">
            <soap:operation soapAction="GetNameAddressByUserID_PO4"/>
            <input>
                <soap:body parts="UserId" use="literal"/>
                <soap:header message="tns:GetNameAddressByUserID_PO_Input4" part="UserIdHeader" use="literal"/>
            </input>
            <output>
                <soap:body parts="Address" use="literal"/>
                <soap:header message="tns:GetNameAddressByUserID_PO_Output4" part="Name" use="literal"/>
                <soap:header message="tns:GetNameAddressByUserID_PO_Output4" part="UserId" use="literal"/>
            </output>
        </operation>
        <operation name="GetNameAddressByUserID_PO5">
            <soap:operation soapAction="GetNameAddressByUserID_PO5"/>
            <input>
                <soap:body parts="UserId" use="literal"/>
                <soap:header message="tns:GetNameAddressByUserID_PO_Input5" part="UserIdHeader" use="literal"/>
            </input>
            <output>
                <soap:body parts="Address" use="literal"/>
                <soap:header message="tns:GetNameAddressByUserID_PO_Output5" part="Name" use="literal"/>
                <soap:header message="tns:GetNameAddressByUserID_PO_Output5" part="UserId" use="literal"/>
            </output>
        </operation>
        <operation name="GetNameAddressByUserID_PO6">
            <soap:operation soapAction="GetNameAddressByUserID_PO6"/>
            <input>
                <soap:body parts="UserId" use="literal"/>
                <soap:header message="tns:GetNameAddressByUserID_PO_Input6" part="UserIdHeader" use="literal"/>
            </input>
            <output>
                <soap:body parts="Address" use="literal"/>
                <soap:header message="tns:GetNameAddressByUserID_PO_Output6" part="Name" use="literal"/>
                <soap:header message="tns:GetNameAddressByUserID_PO_Output6" part="UserId" use="literal"/>
            </output>
        </operation>
        <operation name="GetAuctionItemByID_PO1">
            <input>
                <soap:body use="literal"/>
            </input>
            <output>
                <soap:body use="literal"/>
            </output>
        </operation>

    </binding>
    <binding name="AuctionTraqSoapBinding4" type="tns:AuctionTraqPortType4">
        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
        
        <operation name="GetUserByID1">
            <soap:operation soapAction="http://example.com/auctiontraq/GetUserByID1"/>
            <input>
                <soap:body use="literal"/>
            </input>
            <output>
                <soap:body use="literal"/>
            </output>
            <fault name="Fault1">
                <soap:fault name="Fault1" use="literal"/>
            </fault>
            <fault name="Fault2">
                <soap:fault name="Fault2" use="literal"/>
            </fault>
        </operation>

        <operation name="GetItemsSoldByPerson">
            <input>
                <soap:body use="literal"/>
            </input>
            <output>
                <soap:body use="literal"/>
            </output>
            <fault name="Fault1">
                <soap:fault name="Fault1"/>
            </fault>
        </operation>

        <operation name="GetPersonByName_PO1">
            <soap:operation soapAction="http://example.com/auctiontraq/GetPersonByName_PO1"/>
            <input>
                <soap:body parts="FirstName" use="literal"/>
                <soap:header message="tns:GetPersonByName_PO_Input1" part="LastName" use="literal"/>
            </input>
            <output>
                <soap:body parts="PersonDetails" use="literal"/>
                <soap:header message="tns:GetPersonByName_PO_Output1" part="name" use="literal"/>
                <soap:header message="tns:GetPersonByName_PO_Output1" part="address" use="literal"/>
            </output>
            <fault name="Fault1">
                <soap:fault name="Fault1" use="literal"/>
            </fault>
        </operation>

        <operation name="GetPersonByName_PO2">
            <soap:operation soapAction="http://example.com/auctiontraq/GetPersonByName_PO2"/>
            <input>
                <soap:body parts="FirstName" use="literal"/>
                <soap:header message="tns:GetPersonByName_PO_Input2" part="LastName" use="literal"/>
            </input>
            <output>
                <soap:body parts="PersonDetails" use="literal"/>
                <soap:header message="tns:GetPersonByName_PO_Output2" part="name" use="literal"/>
                <soap:header message="tns:GetPersonByName_PO_Output2" part="address" use="literal"/>
            </output>
            <fault name="Fault1">
                <soap:fault name="Fault1" use="literal"/>
            </fault>
            <fault name="Fault2">
                <soap:fault name="Fault2" use="literal"/>
            </fault>
        </operation>

        <operation name="GetPersonByName_PO3">
            <soap:operation soapAction="http://example.com/auctiontraq/GetPersonByName_PO3"/>
            <input>
                <soap:body parts="FirstName" use="literal"/>
                <soap:header message="tns:GetPersonByName_PO_Input3" part="LastName" use="literal">

                </soap:header>
            </input>
            <output>
                <soap:body parts="PersonDetails" use="literal"/>
                <soap:header message="tns:GetPersonByName_PO_Output3" part="name" use="literal"/>
                <soap:header message="tns:GetPersonByName_PO_Output3" part="address" use="literal"/>
            </output>
            <fault name="Fault1">
                <soap:fault name="Fault1" use="literal"/>
            </fault>
            <fault name="Fault2">
                <soap:fault name="Fault2" use="literal"/>
            </fault>
            <fault name="Fault3">
                <soap:fault name="Fault3" use="literal"/>
            </fault>

        </operation>

        <operation name="GetPersonByName_PO4">
            <soap:operation soapAction="http://example.com/auctiontraq/GetPersonByName_PO4"/>
            <input>
                <soap:body parts="FirstName" use="literal"/>
                <soap:header message="tns:GetPersonByName_PO_Input_F4" part="LastName" use="literal">
                    <soap:headerfault message="tns:HeaderFaults" part="HeaderFault1" use="literal"/>

                </soap:header>
            </input>
            <output>
                <soap:body parts="PersonDetails" use="literal"/>
                <soap:header message="tns:GetPersonByName_PO_Output_F4" part="name" use="literal">
                    <soap:headerfault message="tns:HeaderFaults" part="HeaderReasonFault" use="literal"/>
                </soap:header>
                <!-- use="literal is optional and default for header -->
                <soap:header message="tns:GetPersonByName_PO_Output_F4" part="address">
                    <soap:headerfault message="tns:HeaderFaults" part="HeaderReasonFault" use="literal"/>
                    <!-- use="literal is optional and default for headerfault-->
                    <soap:headerfault message="tns:HeaderFaults" part="HeaderReasonFault1" />
                    <!-- <soap:headerfault message="tns:HeaderFaults" part="HeaderReasonFault1" use="literal"/> -->
                    <soap:headerfault message="tns:HeaderFaults" part="PersonNotFoundHeaderFault" use="literal"/>
                </soap:header>
            </output>
            <fault name="Fault1">
                <soap:fault name="Fault1" use="literal"/>
            </fault>
        </operation>

        <operation name="GetAddressByUserID">
            <input>
                <soap:body use="literal"/>
            </input>
            <output>
                <soap:body use="literal"/>
            </output>
            <fault name="Fault1">
                <soap:fault name="Fault1" />
            </fault>
        </operation>
        <operation name="GetPersonByName_EH1">
            <soap:operation soapAction="http://example.com/auctiontraq/GetPersonByName_EH1"/>
            <input>
                <soap:body parts="FirstName" use="literal"/>
                <soap:header message="tns:GetPersonByName_PO_Input_EH1" part="LastName" use="literal"/>
                <soap:header message="tns:GetPersonByName_PO_EH1" part="MiddleName" use="literal">
                    <soap:headerfault message="tns:HeaderFaults" part="HeaderReasonFault" use="literal"/>
                </soap:header>
            </input>
            <output>
                <soap:body parts="Name" use="literal"/>
                <soap:header message="tns:GetPersonByName_PO_Output_EH1" part="Address" use="literal"/>
                <soap:header message="tns:GetPersonByName_PO_EH2" part="PersonalDetails" use="literal"/>
            </output>
            <fault name="Fault1">
                <soap:fault name="Fault1" use="literal"/>
            </fault>
        </operation>
        
        <operation name="GetPersonByName_EH2">
            <soap:operation soapAction="http://example.com/auctiontraq/GetPersonByName_EH2"/>
            <input>
                <soap:body parts="Name" use="literal"/>
                <soap:header message="tns:GetPersonByName_PO_EH1" part="MiddleName" use="literal">
                    <soap:headerfault message="tns:HeaderFaults" part="HeaderReasonFault" use="literal"/>
                </soap:header>
            </input>
            <output>
                <soap:body parts="Person" use="literal"/>
            </output>
            <fault name="Fault1">
                <soap:fault name="Fault1" use="literal"/>
            </fault>
        </operation>
        

    </binding>

    <service name="AuctionTraqWSDLDoclitService">
        <documentation>AuctionTraq Service</documentation>
		
        <port name="AuctionTraqPort1" binding="tns:AuctionTraqSoapBinding1">
            <soap:address location="http://example.com/auctiontraq"/>
        </port>
		
        <port name="AuctionTraqPort2" binding="tns:AuctionTraqSoapBinding2">
            <soap:address location="http://example.com/auctiontraq"/>
        </port>

        <port name="AuctionTraqPort3" binding="tns:AuctionTraqSoapBinding3">
            <soap:address location="http://example.com/auctiontraq"/>
        </port>

        <port name="AuctionTraqPort4" binding="tns:AuctionTraqSoapBinding4">
            <soap:address location="http://example.com/auctiontraq"/>
        </port>

    </service>

</definitions>
