The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions name="benchmark"
    targetNamespace="http://www.example.org/benchmark/"
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
    xmlns:tns="http://www.example.org/benchmark/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
    <wsdl:types>
        <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            targetNamespace="http://www.example.org/benchmark/"
            elementFormDefault="qualified">

            <xsd:element name="ListPerson">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element name="in" type="tns:Person"
                            maxOccurs="1" minOccurs="0" />
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>

            <xsd:element name="ListPersonResponse">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element name="out" type="tns:ArrayOfPerson" />
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
            <xsd:complexType name="Person">

                <xsd:sequence>
                    <xsd:element name="PersonID" type="tns:PersonID" />
                    <xsd:element name="Salutation" type="xsd:string" />
                    <xsd:element name="Name" type="xsd:string" />
                    <xsd:element name="GivenName" type="xsd:string" />
                    <xsd:element name="DateOfBirth" type="xsd:date" />
                    <xsd:element name="HomeAddress" type="tns:Address"
                        maxOccurs="1" minOccurs="1" />
                    <xsd:element name="WorkAddress" type="tns:Address"
                        maxOccurs="1" minOccurs="0" />
                    <xsd:element name="Contracts"
                        type="tns:ArrayOfContract" />
                </xsd:sequence>
            </xsd:complexType>

            <xsd:simpleType name="PhoneNumber">
                <xsd:restriction base="xsd:string"></xsd:restriction>
            </xsd:simpleType>

            <xsd:complexType name="ArrayOfPerson">
                <xsd:sequence minOccurs="0" maxOccurs="unbounded">
                    <xsd:element name="NewElement" type="tns:Person"
                        maxOccurs="unbounded" minOccurs="0" />
                </xsd:sequence>
            </xsd:complexType>

            <xsd:complexType name="PersonID">
                <xsd:sequence>
                    <xsd:element name="ID" type="xsd:int"></xsd:element>
                </xsd:sequence>
            </xsd:complexType>

            <xsd:complexType name="Address">
                <xsd:sequence>
                    <xsd:element name="Street" type="xsd:string" />
                    <xsd:element name="ZIP" type="xsd:string" />
                    <xsd:element name="City" type="xsd:string" />
                    <xsd:element name="Country" type="xsd:string" />
                    <xsd:element name="PhoneNumber" type="tns:PhoneNumber" />
                    <xsd:element name="MobilePhoneNumber" type="tns:PhoneNumber" />
                </xsd:sequence>
            </xsd:complexType>

            <xsd:complexType name="ArrayOfContract">
                <xsd:sequence>
                    <xsd:element name="Contract" type="tns:Contract"
                        maxOccurs="unbounded" minOccurs="0">
                    </xsd:element>
                </xsd:sequence>
            </xsd:complexType>

            <xsd:complexType name="Contract">
                <xsd:sequence>
                    <xsd:element name="ContractID" type="xsd:long" />
                    <xsd:element name="ContractName" type="xsd:string" />
                </xsd:sequence>
            </xsd:complexType>
        </xsd:schema>
    </wsdl:types>
    <wsdl:message name="ListPersonRequest">
        <wsdl:part name="parameters" element="tns:ListPerson" />
    </wsdl:message>
    <wsdl:message name="ListPersonResponse">
        <wsdl:part name="parameters" element="tns:ListPersonResponse" />
    </wsdl:message>
    <wsdl:portType name="NewPortType">
        <wsdl:operation name="ListPerson">
            <wsdl:input message="tns:ListPersonRequest"></wsdl:input>
            <wsdl:output message="tns:ListPersonResponse"></wsdl:output>
        </wsdl:operation>
    </wsdl:portType>
    <wsdl:binding name="NewBinding" type="tns:NewPortType">
        <soap:binding style="document"
            transport="http://schemas.xmlsoap.org/soap/http" />
        <wsdl:operation name="ListPerson">
            <soap:operation
                soapAction="http://www.example.org/benchmark/ListPerson" />
            <wsdl:input>
                <soap:body use="literal" />
            </wsdl:input>
            <wsdl:output>
                <soap:body use="literal" />
            </wsdl:output>
        </wsdl:operation>
    </wsdl:binding>
    <wsdl:service name="TestService">
        <wsdl:port name="TestPort" binding="tns:NewBinding">
            <soap:address
                location="http://localhost:81/soap-wsdl-test/person.pl"></soap:address>
        </wsdl:port>
    </wsdl:service>
</wsdl:definitions>