<?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:s1="http://soapinterop.org/xsd" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:s0="http://soapinterop.org/" xmlns:s3="http://soapinterop.org/echoheader/" xmlns:soap12enc="http://www.w3.org/2002/06/soap-envelope" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s2="http://soapinterop.org" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" targetNamespace="http://soapinterop.org/" xmlns="http://schemas.xmlsoap.org/wsdl/">
  <types>
    <s:schema elementFormDefault="qualified" targetNamespace="http://soapinterop.org/">
      <s:import namespace="http://soapinterop.org/xsd" />
      <s:import namespace="http://soapinterop.org/echoheader/" />
      
      
      
      <s:element name="echoChoice">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="inputChoice" type="s1:ChoiceComplexType" />
          </s:sequence>
        </s:complexType>
      </s:element>
      <s:element name="echoChoiceResponse">
        <s:complexType>
          <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="return" type="s1:ChoiceComplexType" />
          </s:sequence>
        </s:complexType>
      </s:element>
      
    
      
    </s:schema> 

    <s:schema elementFormDefault="qualified" targetNamespace="http://soapinterop.org/xsd">
      <s:import namespace="http://soapinterop.org/" />

    <s:complexType name="ChoiceComplexType">
        <s:sequence>
          <s:choice minOccurs="1" maxOccurs="1">
            <s:element minOccurs="0" maxOccurs="unbounded" name="IntValue" type="s:int" />
            <s:element minOccurs="0" maxOccurs="1" name="StringValue" type="s:string" />
          </s:choice>
        </s:sequence>
      </s:complexType>
    </s:schema>
 
  </types>
  
  
  
  <message name="echoChoiceSoapIn">
    <part name="parameters" element="s0:echoChoice" />
  </message>
  <message name="echoChoiceSoapOut">
    <part name="parameters" element="s0:echoChoiceResponse" />
  </message>
  
  <portType name="ChoiceTestSoap">
    
    
    <operation name="echoChoice">
      <input message="s0:echoChoiceSoapIn" />
      <output message="s0:echoChoiceSoapOut" />
    </operation>
    
  </portType>
  

  <binding name="ChoiceTestSoap" type="s0:ChoiceTestSoap">
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />
    
    <operation name="echoChoice">
      <soap:operation soapAction="SimpleChoiceTest#echoChoice" style="document" />
      <input>
        <soap:body use="literal" />
      </input>
      <output>
        <soap:body use="literal" />
      </output>
    </operation>
    
  </binding>
  
<binding name="ChoiceTestSoap12" type="s0:ChoiceTestSoap">
    <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />
    
    
    <operation name="echoChoice">
      <soap12:operation soapAction="Choice#echoChoice" style="document" />
      <input>
        <soap12:body use="literal" />
      </input>
      <output>
        <soap12:body use="literal" />
      </output>
    </operation>
    
  </binding>
  
<service name="ChoiceTest">
    <documentation>These operations implement DOC/LIT SOAP operations, for interop testing. Please email johnko@microsoft.com with any questions/coments.</documentation>
    <port name="ChoiceTestSoap" binding="s0:ChoiceTestSoap">
      <soap:address location="http://localhost:90/axis/Choice" />
    </port>
    <port name="ChoiceTestSoap12" binding="s0:ChoiceTestSoap12">
      <soap12:address location="http://localhost:90/axis/Choice" />
    </port>
  </service>
</definitions>
