<?xml version="1.0" encoding="utf-8"?>
<!-- A small service in WSDL 1.1, document/literal, with SOAP 1.1 and SOAP 1.2 bindings, as .NET and
     Java tools write them: two sums and an account balance that needs WS-Security. -->
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
                  xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
                  xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
                  xmlns:s="http://www.w3.org/2001/XMLSchema"
                  xmlns:tns="http://example.com/calculator/"
                  targetNamespace="http://example.com/calculator/">
  <wsdl:types>
    <s:schema elementFormDefault="qualified" targetNamespace="http://example.com/calculator/">
      <s:element name="Add">
        <s:complexType><s:sequence>
          <s:element minOccurs="1" maxOccurs="1" name="intA" type="s:int"/>
          <s:element minOccurs="1" maxOccurs="1" name="intB" type="s:int"/>
        </s:sequence></s:complexType>
      </s:element>
      <s:element name="AddResponse">
        <s:complexType><s:sequence>
          <s:element minOccurs="1" maxOccurs="1" name="AddResult" type="s:int"/>
        </s:sequence></s:complexType>
      </s:element>
      <s:element name="Divide">
        <s:complexType><s:sequence>
          <s:element minOccurs="1" maxOccurs="1" name="dividend" type="s:double"/>
          <s:element minOccurs="1" maxOccurs="1" name="divisor" type="s:double"/>
        </s:sequence></s:complexType>
      </s:element>
      <s:element name="DivideResponse">
        <s:complexType><s:sequence>
          <s:element minOccurs="1" maxOccurs="1" name="DivideResult" type="s:double"/>
        </s:sequence></s:complexType>
      </s:element>
      <s:element name="GetBalance" type="tns:BalanceRequest"/>
      <s:complexType name="BalanceRequest"><s:sequence>
        <s:element minOccurs="1" maxOccurs="1" name="account" type="s:string"/>
        <s:element minOccurs="0" maxOccurs="unbounded" name="currency" type="s:string"/>
      </s:sequence></s:complexType>
      <s:element name="GetBalanceResponse">
        <s:complexType><s:sequence>
          <s:element minOccurs="1" maxOccurs="1" name="account" type="s:string"/>
          <s:element minOccurs="0" maxOccurs="unbounded" name="balance" type="tns:Money"/>
        </s:sequence></s:complexType>
      </s:element>
      <s:complexType name="Money"><s:sequence>
        <s:element name="amount" type="s:decimal"/>
        <s:element name="currency" type="s:string"/>
      </s:sequence></s:complexType>
    </s:schema>
  </wsdl:types>
  <wsdl:message name="AddSoapIn"><wsdl:part name="parameters" element="tns:Add"/></wsdl:message>
  <wsdl:message name="AddSoapOut"><wsdl:part name="parameters" element="tns:AddResponse"/></wsdl:message>
  <wsdl:message name="DivideSoapIn"><wsdl:part name="parameters" element="tns:Divide"/></wsdl:message>
  <wsdl:message name="DivideSoapOut"><wsdl:part name="parameters" element="tns:DivideResponse"/></wsdl:message>
  <wsdl:message name="GetBalanceSoapIn"><wsdl:part name="parameters" element="tns:GetBalance"/></wsdl:message>
  <wsdl:message name="GetBalanceSoapOut"><wsdl:part name="parameters" element="tns:GetBalanceResponse"/></wsdl:message>
  <wsdl:portType name="CalculatorSoap">
    <wsdl:operation name="Add">
      <wsdl:documentation>Adds two integers.</wsdl:documentation>
      <wsdl:input message="tns:AddSoapIn"/><wsdl:output message="tns:AddSoapOut"/>
    </wsdl:operation>
    <wsdl:operation name="Divide">
      <wsdl:documentation>Divides one number by another; a divisor of 0 is a fault.</wsdl:documentation>
      <wsdl:input message="tns:DivideSoapIn"/><wsdl:output message="tns:DivideSoapOut"/>
    </wsdl:operation>
    <wsdl:operation name="GetBalance">
      <wsdl:documentation>An account's balances; needs a WS-Security UsernameToken.</wsdl:documentation>
      <wsdl:input message="tns:GetBalanceSoapIn"/><wsdl:output message="tns:GetBalanceSoapOut"/>
    </wsdl:operation>
  </wsdl:portType>
  <wsdl:binding name="CalculatorSoap" type="tns:CalculatorSoap">
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
    <wsdl:operation name="Add"><soap:operation soapAction="http://example.com/calculator/Add" style="document"/>
      <wsdl:input><soap:body use="literal"/></wsdl:input><wsdl:output><soap:body use="literal"/></wsdl:output></wsdl:operation>
    <wsdl:operation name="Divide"><soap:operation soapAction="http://example.com/calculator/Divide" style="document"/>
      <wsdl:input><soap:body use="literal"/></wsdl:input><wsdl:output><soap:body use="literal"/></wsdl:output></wsdl:operation>
    <wsdl:operation name="GetBalance"><soap:operation soapAction="http://example.com/calculator/GetBalance" style="document"/>
      <wsdl:input><soap:body use="literal"/></wsdl:input><wsdl:output><soap:body use="literal"/></wsdl:output></wsdl:operation>
  </wsdl:binding>
  <wsdl:binding name="CalculatorSoap12" type="tns:CalculatorSoap">
    <soap12:binding transport="http://schemas.xmlsoap.org/soap/http"/>
    <wsdl:operation name="Add"><soap12:operation soapAction="http://example.com/calculator/Add" style="document"/>
      <wsdl:input><soap12:body use="literal"/></wsdl:input><wsdl:output><soap12:body use="literal"/></wsdl:output></wsdl:operation>
    <wsdl:operation name="Divide"><soap12:operation soapAction="http://example.com/calculator/Divide" style="document"/>
      <wsdl:input><soap12:body use="literal"/></wsdl:input><wsdl:output><soap12:body use="literal"/></wsdl:output></wsdl:operation>
    <wsdl:operation name="GetBalance"><soap12:operation soapAction="http://example.com/calculator/GetBalance" style="document"/>
      <wsdl:input><soap12:body use="literal"/></wsdl:input><wsdl:output><soap12:body use="literal"/></wsdl:output></wsdl:operation>
  </wsdl:binding>
  <wsdl:service name="Calculator">
    <wsdl:port name="CalculatorSoap" binding="tns:CalculatorSoap"><soap:address location="http://localhost:8080/calculator"/></wsdl:port>
    <wsdl:port name="CalculatorSoap12" binding="tns:CalculatorSoap12"><soap12:address location="http://localhost:8080/calculator"/></wsdl:port>
  </wsdl:service>
</wsdl:definitions>
