<?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 xmlns:x="http://example.org/mtom/data"
				  xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" 
				  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
				  xmlns:tns="http://martingudgin-2.dsl.easynet.co.uk/mtom"
				  targetNamespace="http://martingudgin-2.dsl.easynet.co.uk/mtom" >

  <wsdl:types>
	<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' 
			   xmlns:xmime='http://www.w3.org/2004/06/xmlmime'
			   targetNamespace='http://example.org/mtom/data'>

	  <xs:import namespace='http://www.w3.org/2004/06/xmlmime' />

	  <xs:element name='Data' >
		<xs:complexType>
		  <xs:simpleContent>
			<xs:extension base='xs:base64Binary' >
			  <xs:attribute ref='xmime:contentType' />
			</xs:extension>
		  </xs:simpleContent>
		</xs:complexType>
	  </xs:element>

	  <xs:element name='EchoTest' >
		<xs:complexType>
		  <xs:sequence>
			<xs:element ref='x:Data' minOccurs='1' maxOccurs='unbounded' />
		  </xs:sequence>
		</xs:complexType>
	  </xs:element>
		
	</xs:schema>
  </wsdl:types>
	
  <wsdl:message name="EchoTestSingle">
	<wsdl:part name="P" element="x:Data"/>
  </wsdl:message>

  <wsdl:message name="EchoTestMultiple">
	<wsdl:part name="P" element="x:EchoTest"/>
  </wsdl:message>
	
  <wsdl:portType name="EchoTest">
	<wsdl:operation name="EchoTestSingle">
	  <wsdl:input name="EchoTestSingleInput" message="tns:EchoTestSingle"/>
	  <wsdl:output name="EchoTestSingleOutput" message="tns:EchoTestSingle"/>
	</wsdl:operation>
	<wsdl:operation name="EchoTestMultiple">
	  <wsdl:input name="EchoTestMultipleInput" message="tns:EchoTestMultiple"/>
	  <wsdl:output name="EchoTestMultipleOutput" message="tns:EchoTestMultiple"/>
	</wsdl:operation>
  </wsdl:portType>

  <wsdl:binding name="EchoTest" type="tns:EchoTest">
	<soap12:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
	<wsdl:operation name="EchoTestSingle">
	  <soap12:operation />
	  <wsdl:input name="EchoTestSingleInput">
		<soap12:body use="literal"/>
	  </wsdl:input>
	  <wsdl:output name="EchoTestSingleOutput">
		<soap12:body use="literal"/>
	  </wsdl:output>
	</wsdl:operation>
	<wsdl:operation name="EchoTestMultiple">
	  <soap12:operation />
	  <wsdl:input name="EchoTestMultipleInput">
		<soap12:body use="literal"/>
	  </wsdl:input>
	  <wsdl:output name="EchoTestMultipleOutput">
		<soap12:body use="literal"/>
	  </wsdl:output>
	</wsdl:operation>
  </wsdl:binding>

  <wsdl:service name="EchoTest">
	<wsdl:port name="EchoTest" binding="tns:EchoTest">
	  <soap12:address location="http://martingudgin-2.dsl.easynet.co.uk/dotnet/mtom/mtomecho.ashx" />
	</wsdl:port>
  </wsdl:service>

</wsdl:definitions>	
