<?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:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://wsns.foo.com/axis2/test01" xmlns:typ="http://xmlns.foo.com/axis2/test01" xsi:schemaLocation="http://schemas.xmlsoap.org/wsdl/ http://www.foo.com/wsdl.xsd" targetNamespace="http://wsns.foo.com/axis2/test01" name="Test01">
    <types>
        <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://xmlns.foo.com/axis2/test01" elementFormDefault="qualified">
            <xs:element name="Add">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Arg1" type="xs:int"/>
                        <xs:element name="Arg2" type="xs:int"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="AddReturn" type="xs:int"/>
        </xs:schema>
    </types>
    <message name="Add">
        <part name="params" element="typ:Add"/>
    </message>
    <message name="AddResponse">
        <part name="result" element="typ:AddReturn"/>
    </message>
    <portType name="Test01PortType">
        <operation name="Add">
            <input name="Add" message="tns:Add"/>
            <output name="AddResponse" message="tns:AddResponse"/>
        </operation>
    </portType>
    <binding name="Test01PortBinding" type="tns:Test01PortType">
        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
        <operation name="Add">
            <soap:operation soapAction="Add" style="document"/>
            <input>
                <soap:body use="literal" namespace="http://wsns.foo.com/axis2/test01"/>
            </input>
            <output>
                <soap:body use="literal" namespace="http://wsns.foo.com/axis2/test01"/>
            </output>
        </operation>
    </binding>
    <service name="Test01">
        <port name="Axis2SampleDocLitPort" binding="tns:Test01PortBinding">
            <soap:address location="http://requiem.foo.com:8080/axis2/services/Test01"/>
        </port>
    </service>
</definitions>
