<?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.
  -->

<wsdl:definitions
  targetNamespace="http://www.example.com/test/messageTypes"
  xmlns="http://www.example.com/test/messageTypes"
  xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
  xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
  xmlns:ns1="urn:types1"
  xmlns:ns2="urn:types2">
  
  <wsdl:types xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
  
    <xs:schema attributeFormDefault="unqualified"
      elementFormDefault="qualified"
      targetNamespace="http://www.example.com/test/messageTypes"
      xmlns:ns="http://www.example.com/test/messageTypes" 
      xmlns:xs="http://www.w3.org/2001/XMLSchema">
      <xs:element name="getTotal">
        <xs:complexType>
          <xs:sequence/>
        </xs:complexType>
      </xs:element>     
      <xs:element name="getTotalResponse">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="return" type="xs:int"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:import namespace="urn:types1" schemaLocation="doesnotexist.xsd"/>
    </xs:schema>
    
  </wsdl:types>
  <wsdl:message name="getTotalRequest" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
    <wsdl:part element="getTotal" name="part1" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"/>
  </wsdl:message>
  <wsdl:message name="getTotalResponseMessage" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
    <wsdl:part element="getTotalResponse" name="part1" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"/>
  </wsdl:message>
  <wsdl:message name="addRequest" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
    <wsdl:part element="ns1:add" name="part1" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"/>
  </wsdl:message>
  <wsdl:message name="addResponseMessage" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
    <wsdl:part element="ns1:addResponse" name="part1" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"/>
  </wsdl:message>
  <wsdl:message name="clearRequest" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
    <wsdl:part element="ns1:clear" name="part1" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"/>
  </wsdl:message>
  <wsdl:message name="clearResponseMessage" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
    <wsdl:part element="ns1:clearResponse" name="part1" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"/>
  </wsdl:message>
  <wsdl:message name="divideRequest" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
    <wsdl:part element="ns1:divide" name="part1" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"/>
  </wsdl:message>
  <wsdl:message name="divideResponseMessage" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
    <wsdl:part element="ns1:divideResponse" name="part1" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"/>
  </wsdl:message>
  <wsdl:message name="divideByZeroException" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
    <wsdl:part element="ns1:divideByZeroFault" name="part1" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"/>
  </wsdl:message>
  <wsdl:message name="multiplyRequest" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
    <wsdl:part element="ns1:multiply" name="part1" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"/>
  </wsdl:message>
  <wsdl:message name="multiplyResponseMessage" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
    <wsdl:part element="ns2:multiplyResponse" name="part1" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"/>
  </wsdl:message>
  <wsdl:message name="subtractRequest" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
    <wsdl:part element="ns2:subtract" name="part1" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"/>
  </wsdl:message>
  <wsdl:message name="subtractResponseMessage" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
    <wsdl:part element="ns2:subtractResponse" name="part1" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"/>
  </wsdl:message>
  
</wsdl:definitions>
