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

<!--
  ~ Licensed to the Apache Software Foundation (ASF) under one
  ~ or more contributor license agreements. See the NOTICE file
  ~ distributed with this work for additional information
  ~ regarding copyright ownership. The ASF licenses this file
  ~ to you under the Apache License, Version 2.0 (the
  ~ "License"); you may not use this file except in compliance
  ~ with the License. You may obtain a copy of the License at
  ~
  ~ http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing,
  ~ software distributed under the License is distributed on an
  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  ~ KIND, either express or implied. See the License for the
  ~ specific language governing permissions and limitations
  ~ under the License.
  -->

<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlns="http://soapinterop.org/" xmlns:emp="http://soapinterop.org/employee" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="SoapInteropCompound" targetNamespace="http://soapinterop.org/">
    <types>
        <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://soapinterop.org/person" elementFormDefault="qualified">

            <complexType name="Person">
                <sequence>
                    <element minOccurs="1" maxOccurs="1" name="Name" type="string"/>
                    <element minOccurs="1" maxOccurs="1" name="Male" type="boolean"/>
                </sequence>
            </complexType>
        </schema>
        <schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:prs="http://soapinterop.org/person" targetNamespace="http://soapinterop.org/employee" elementFormDefault="qualified">
            <import namespace="http://soapinterop.org/person"/>
            <complexType name="Employee">
                <sequence>
                    <element minOccurs="1" maxOccurs="1" name="person" type="prs:Person"/>
                    <element minOccurs="1" maxOccurs="1" name="salary" type="double"/>
                    <element minOccurs="1" maxOccurs="1" name="ID" type="int"/>
                </sequence>
            </complexType>
            <element name="x_Employee" type="emp:Employee"/>
            <element name="result_Employee" type="emp:Employee"/>
        </schema>
    </types>
    <message name="echoEmployee">
        <part name="x" element="emp:x_Employee"/>
    </message>
    <message name="echoEmployeeResponse">
        <part name="result" element="emp:result_Employee"/>
    </message>
    <portType name="SoapInteropCompound2PortType">
        <operation name="echoEmployee" parameterOrder="x">
            <input message="wsdlns:echoEmployee"/>
            <output message="wsdlns:echoEmployeeResponse"/>
        </operation>
    </portType>
    <binding name="SoapInteropCompound2Binding" type="wsdlns:SoapInteropCompound2PortType">
        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
        <operation name="echoEmployee">
            <soap:operation soapAction="#echoEmployee"/>
            <input>
                <soap:body use="literal"/>
            </input>
            <output>
                <soap:body use="literal"/>
            </output>
        </operation>
    </binding>
    <service name="Compound2">
        <port name="SoapInteropCompound2Port" binding="wsdlns:SoapInteropCompound2Binding">
            <soap:address xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" location="http://soapinterop.java.sun.com:80/round3/groupd/compound2"/>
        </port>
    </service>
</definitions>