<?xml version="1.0"?>
<definitions name="Test" targetNamespace="urn:Test" xmlns:tns="urn:Test"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
    xmlns="http://schemas.xmlsoap.org/wsdl/">
    <types>
        <xsd:schema targetNamespace="urn:Test" elementFormDefault="qualified" xmlns="urn:Test">
            <xsd:simpleType name="test-SimpleTypeList">
                <xsd:annotation>
                    <xsd:documentation>
                        SimpleType: List with an integer (length 2)
                    </xsd:documentation>
                </xsd:annotation>
                <xsd:list itemType="xsd:int"></xsd:list>
            </xsd:simpleType>

            <xsd:simpleType name="testSimpleTypeListAtomic">
                <xsd:annotation>
                    <xsd:documentation>
                        SimpleType: List with an integer (length 2)
                    </xsd:documentation>
                </xsd:annotation>
                <xsd:list>
                    <xsd:simpleType>
                        <xsd:restriction base="xsd:int"></xsd:restriction>
                    </xsd:simpleType>
                </xsd:list>
            </xsd:simpleType>


            <xsd:simpleType name="testRestriction">
                <xsd:annotation>
                    <xsd:documentation>
                        SimpleType: Integer between 1 and 9 (Exclusive
                        constrains)
                    </xsd:documentation>
                </xsd:annotation>
                <xsd:restriction base="xsd:int">
                    <xsd:minExclusive value="0" />
                    <xsd:maxExclusive value="10" />
                </xsd:restriction>
            </xsd:simpleType>

            <xsd:simpleType name="testRestrictionAtomicType">
                <xsd:annotation>
                    <xsd:documentation>
                        SimpleType: Integer between 1 and 9 (Exclusive
                        constrains)
                    </xsd:documentation>
                </xsd:annotation>
                <xsd:restriction>
                    <xsd:simpleType>
                        <xsd:restriction base="xsd:int">
                            <xsd:minExclusive value="0" />
                            <xsd:maxExclusive value="10" />
                        </xsd:restriction>
                    </xsd:simpleType>
                </xsd:restriction>
            </xsd:simpleType>

            <xsd:complexType name="testComplexTypeAll">
                <xsd:annotation>
                    <xsd:documentation>ComplexType Test</xsd:documentation>
                </xsd:annotation>
                <xsd:sequence>
                    <xsd:element name="Test-1" type="xsd:string" />
                    <xsd:element name="Test-2" type="xsd:string" minOccurs="1" />
                </xsd:sequence>
            </xsd:complexType>

            <xsd:complexType name="testComplexTypeRestriction">
                <xsd:annotation>
                    <xsd:documentation>ComplexType Test</xsd:documentation>
                </xsd:annotation>
                <xsd:complexContent>
                    <xsd:restriction base="tns:testComplexTypeAll">
                        <xsd:all>
                            <xsd:element name="Test.1" type="xsd:string"
                                minOccurs="1" />
                            <xsd:element name="Test.2" type="xsd:string"
                                minOccurs="1" />
                        </xsd:all>
                    </xsd:restriction>
                </xsd:complexContent>
            </xsd:complexType>

            <xsd:complexType name="testComplexTypeExtension">
                <xsd:annotation>
                    <xsd:documentation>
                        complexType extension test
                    </xsd:documentation>
                </xsd:annotation>
                <xsd:complexContent>
                    <xsd:extension base="tns:testComplexTypeAll">
                        <xsd:sequence>
                            <xsd:element name="Test1" type="xsd:string" />
                            <xsd:element name="Test2" type="xsd:string"
                                minOccurs="1" />
                            <xsd:element name="Test3" type="xsd:string"
                                minOccurs="1" />
                        </xsd:sequence>
                    </xsd:extension>
                </xsd:complexContent>
            </xsd:complexType>

            <xsd:complexType name="test.ComplexTypeChoice">
                <xsd:annotation>
                    <xsd:documentation>ComplexType Test</xsd:documentation>
                </xsd:annotation>
                <xsd:choice>
                    <xsd:element name="Test1" type="xsd:string" minOccurs="1" />
                    <xsd:element name="Test2" type="xsd:string" maxOccurs="1" />
                </xsd:choice>
            </xsd:complexType>

            <xsd:complexType name="testComplexTypeSequence">
                <xsd:annotation>
                    <xsd:documentation>ComplexType Test</xsd:documentation>
                </xsd:annotation>
                <xsd:sequence>
                    <xsd:element name="Test1" type="xsd:string" minOccurs="1" />
                    <xsd:element name="Test2" type="xsd:string" maxOccurs="1" />
                </xsd:sequence>
            </xsd:complexType>

            <xsd:complexType name="testComplexTypeSequence2">
                <xsd:annotation>
                    <xsd:documentation>ComplexType Test</xsd:documentation>
                </xsd:annotation>
                <xsd:sequence>
                    <xsd:element name="Test1" type="xsd:string" minOccurs="1" />
                    <xsd:element name="Test2"
                        type="tns:testComplexTypeSequence" maxOccurs="1" />
                </xsd:sequence>
            </xsd:complexType>


            <xsd:element name="testElementString" type="xsd:string" />
            <xsd:element name="testElementInt" type="xsd:int" />
            <!--  element name="" ref="" is invalid, but appears sometimes -->
            <xsd:element name="testElementRefInt" ref="tns:testElementInt" />
            <xsd:element name="testElementSimpleTypeList"
                type="tns:test-SimpleTypeList" />
            <xsd:element name="testElementComplexTypeAll"
                type="tns:testComplexTypeAll" />
            <xsd:element name="testElementComplexTypeSequence"
                type="tns:testComplexTypeSequence" />

            <xsd:element name="testElementAtomicSimpleTypeRestriction">
                <xsd:simpleType>
                    <xsd:annotation>
                        <xsd:documentation>
                            SimpleType: Integer between 1 and 9 (Inclusive
                            constraints)
                        </xsd:documentation>
                    </xsd:annotation>
                    <xsd:restriction base="xsd:int">
                        <xsd:minInclusive>1</xsd:minInclusive>
                        <xsd:maxInclusive>9</xsd:maxInclusive>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:element>

            <xsd:element name="testElementAtomicComplexTypeAll">
                <xsd:complexType>
                    <xsd:annotation>
                        <xsd:documentation>
                            SimpleType: Integer between 1 and 9 (Inclusive
                            constraints)
                        </xsd:documentation>
                    </xsd:annotation>
                    <xsd:all>
                        <xsd:element name="test1" type="xsd:int" />
                        <xsd:element name="test2" type="xsd:string" />
                    </xsd:all>
                </xsd:complexType>
            </xsd:element>

            <xsd:element name="Header" type="tns:testComplexTypeSequence" />
            <xsd:element name="testHeader" type="tns:testComplexTypeSequence" />
            <xsd:element name="test.Choice" type="tns:test.ComplexTypeChoice" />


            <xsd:complexType name="test.ComplexTypeElementAtomicSimpleType">
                <xsd:sequence>
                    <xsd:element name="testString" type="xsd:string"
                        minOccurs="0" />
                    <xsd:element name="test.AtomicSimpleTypeElement"
                        minOccurs="0">
                        <xsd:simpleType>
                            <xsd:restriction base="xsd:decimal">
                                <xsd:minInclusive value="0" />
                            </xsd:restriction>
                        </xsd:simpleType>
                    </xsd:element>
                    <xsd:element name="testAtomicSimpleTypeElement2"
                        minOccurs="0">
                        <xsd:simpleType>
                            <xsd:restriction base="xsd:decimal">
                                <xsd:minInclusive value="0" />
                            </xsd:restriction>
                        </xsd:simpleType>
                    </xsd:element>
                </xsd:sequence>
            </xsd:complexType>


        </xsd:schema>
    </types>
    <message name="testChoice">
        <part name="parameters" element="tns:test.Choice" />
    </message>
    <message name="testRequest">
        <part name="testAll" element="tns:testElementString" />
    </message>
    <message name="testResponse">
        <part name="testAll" element="tns:testElementString" />
    </message>
    <message name="testMultiPartWarning">
        <part name="testAll" element="tns:testElementString" />
        <part name="parameters" element="tns:test.Choice" />
    </message>
    <message name="testHeaderRequest">
        <part name="testBody" element="tns:testHeader" />
        <part name="testHeader" element="tns:Header" />
    </message>
    <message name="testHeaderResponse">
        <part name="testAll" element="tns:testElementString" />
    </message>
    <portType name="testPort">
        <operation name="test">
            <documentation>Test-Methode</documentation>
            <input message="tns:testRequest" />
            <output message="tns:testResponse" />
        </operation>
        <operation name="testHeader">
            <documentation>Test-Methode</documentation>
            <input message="tns:testHeaderRequest" />
            <output message="tns:testHeaderResponse" />
        </operation>
        <operation name="testChoice">
            <documentation>Test-Methode</documentation>
            <input message="tns:testChoice" />
            <output message="tns:testChoice" />
        </operation>
        <operation name="testMultiPartWarning">
            <documentation>Test-Methode</documentation>
            <input message="tns:testMultiPartWarning" />
            <output message="tns:testMultiPartWarning" />
        </operation>

    </portType>

    <binding type="tns:testPort" name="testBinding">
        <soap:binding style="document"
            transport="http://schemas.xmlsoap.org/soap/http" />
        <operation name="testChoice">
            <soap:operation soapAction="testChoice" style="document" />
            <input>
                <soap:body use="literal" />
            </input>
            <output>
                <soap:body use="literal" />
            </output>
        </operation>

        <operation name="test">
            <soap:operation soapAction="test" style="document" />
            <input>
                <soap:body use="literal" />
            </input>
            <output>
                <soap:body use="literal" />
            </output>
        </operation>
        <operation name="testHeader">
            <soap:operation soapAction="testHeader" />
            <input>
                <soap:body use="literal" parts="testBody" />
                <soap:header use="literal" part="testHeader"
                    message="tns:testHeaderRequest" />
            </input>
            <output>
                <soap:body use="literal" />
            </output>
        </operation>
        <operation name="testMultiPartWarning">
            <soap:operation soapAction="testHeader" />
            <input>
                <soap:body use="literal" />
            </input>
            <output>
                <soap:body use="literal" />
            </output>
        </operation>

    </binding>
    <service name="My.SOAP.testService">
        <port name="My.SOAP.testPort" binding="tns:testBinding">
            <soap:address location="http://127.0.0.1/testPort" />
        </port>
    </service>
</definitions>