<?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:xsd="http://www.w3.org/2001/XMLSchema" 
        xmlns:tns="http://schemas.apache.org/demos/type_test" 
        xmlns:s="http://schemas.apache.org/demos/type_test/types" 
        xmlns="http://schemas.xmlsoap.org/wsdl/" 
        targetNamespace="http://schemas.apache.org/demos/type_test"
        name="type_test">
        
        <types>
                <xsd:schema targetNamespace="http://schemas.apache.org/demos/type_test/types" elementFormDefault="qualified">
                        <xsd:complexType name="SimpleStruct">
                                <xsd:sequence>
                                        <xsd:element name="varFloat" type="xsd:float"/>
                                        <xsd:element name="varInt" type="xsd:int"/>
                                        <xsd:element name="varString" type="xsd:string"/>
                                </xsd:sequence>
                                <xsd:attribute name="varAttrString" type="xsd:string"/>
                                <xsd:attribute name="varAttrIntOptional" use="optional" type="xsd:int"/>
                        </xsd:complexType>
                        <xsd:complexType name="NestedStruct">
                                <xsd:sequence>
                                        <xsd:element name="varString" type="xsd:string"/>
                                        <xsd:element name="varInt" type="xsd:int"/>
                                        <xsd:element name="varFloat" type="xsd:float"/>
                                        <xsd:element ref="s:SimpleStruct_x" />
                                </xsd:sequence>
                        </xsd:complexType>
                        <xsd:complexType name="FixedArray">
                                <xsd:sequence>
                                        <xsd:element maxOccurs="3" minOccurs="3" name="item" type="xsd:int"/>
                                </xsd:sequence>
                        </xsd:complexType>
                        <xsd:complexType name="UnboundedArray">
                                <xsd:sequence>
                                        <xsd:element maxOccurs="unbounded" minOccurs="0" name="item" type="xsd:string"/>
                                </xsd:sequence>
                        </xsd:complexType>
                        <xsd:complexType name="BoundedArray">
                                <xsd:sequence>
                                        <xsd:element maxOccurs="3" minOccurs="1" name="item" type="xsd:float"/>
                                </xsd:sequence>
                        </xsd:complexType>
                        <xsd:complexType name="NestedArray">
                                <xsd:sequence>
                                        <xsd:element maxOccurs="unbounded" minOccurs="0" name="subarray" type="s:UnboundedArray"/>
                                </xsd:sequence>
                        </xsd:complexType>
                       <xsd:complexType name="mydecimal">                        
                           <xsd:simpleContent>
                               <xsd:extension base="xsd:decimal"/>
                           </xsd:simpleContent>                        
                       </xsd:complexType>                  
                       <xsd:complexType name="OrderNumber">
                           <xsd:simpleContent>
                               <xsd:restriction base="s:mydecimal">
                                   <xsd:maxExclusive value="1000000"/>                                   
                               </xsd:restriction> 
                           </xsd:simpleContent>
                       </xsd:complexType>   
                       <xsd:complexType name="InternationalPrice">
                           <xsd:simpleContent>
                               <xsd:extension base="xsd:decimal">
                                   <xsd:attribute name="currency" type="xsd:string"/>
                              </xsd:extension>
                           </xsd:simpleContent>
                        </xsd:complexType>
                        <xsd:complexType name="SimpleChoice">
                                <xsd:choice>
                                        <xsd:element name="varFloat" type="xsd:float"/>
                                        <xsd:element name="varInt" type="xsd:int"/>
                                        <xsd:element name="varString" type="xsd:string"/>
                                </xsd:choice>
                                <xsd:attribute name="varAttrString" type="xsd:string"/>
                        </xsd:complexType>
                        <xsd:complexType name="SimpleAll">
                                <xsd:all>
                                        <xsd:element name="varFloat" type="xsd:float"/>
                                        <xsd:element name="varInt" type="xsd:int"/>
                                        <xsd:element name="varString" type="xsd:string"/>
                                </xsd:all>
                                <xsd:attribute name="varAttrString" type="xsd:string"/>
                        </xsd:complexType>
                        <xsd:complexType name="DerivedChoice_BaseStruct">
                                <xsd:complexContent mixed="false">
                                        <xsd:extension base="s:SimpleStruct">
                                                <xsd:choice>
                                                        <xsd:element name="varStringExt" type="xsd:string"/>
                                                        <xsd:element name="varFloatExt" type="xsd:float"/>
                                                </xsd:choice>
                                                <xsd:attribute name="attrString" type="xsd:string"/>
                                        </xsd:extension>
                                </xsd:complexContent>
                        </xsd:complexType>
                        <xsd:element name="SimpleStruct_x" type="s:SimpleStruct"/>
                        <xsd:element name="SimpleStruct_y" type="s:SimpleStruct"/>
                        <xsd:element name="SimpleStruct_z" type="s:SimpleStruct"/>
                        <xsd:element name="SimpleStruct_return" type="s:SimpleStruct"/>
                        <xsd:element name="NestedStruct_x" type="s:NestedStruct"/>
                        <xsd:element name="NestedStruct_y" type="s:NestedStruct"/>
                        <xsd:element name="NestedStruct_z" type="s:NestedStruct"/>
                        <xsd:element name="NestedStruct_return" type="s:NestedStruct"/>
                        <xsd:element name="FixedArray_x" type="s:FixedArray"/>
                        <xsd:element name="FixedArray_y" type="s:FixedArray"/>
                        <xsd:element name="FixedArray_z" type="s:FixedArray"/>
                        <xsd:element name="FixedArray_return" type="s:FixedArray"/>
                        <xsd:element name="UnboundedArray_x" type="s:UnboundedArray"/>
                        <xsd:element name="UnboundedArray_y" type="s:UnboundedArray"/>
                        <xsd:element name="UnboundedArray_z" type="s:UnboundedArray"/>
                        <xsd:element name="UnboundedArray_return" type="s:UnboundedArray"/>
                        <xsd:element name="BoundedArray_x" type="s:BoundedArray"/>
                        <xsd:element name="BoundedArray_y" type="s:BoundedArray"/>
                        <xsd:element name="BoundedArray_z" type="s:BoundedArray"/>
                        <xsd:element name="BoundedArray_return" type="s:BoundedArray"/>
                        <xsd:element name="NestedArray_x" type="s:NestedArray"/>
                        <xsd:element name="NestedArray_y" type="s:NestedArray"/>
                        <xsd:element name="NestedArray_z" type="s:NestedArray"/>
                        <xsd:element name="NestedArray_return" type="s:NestedArray"/>
                        <xsd:element name="OrderNumber_x" type="s:OrderNumber"/>
                        <xsd:element name="OrderNumber_y" type="s:OrderNumber"/>
                        <xsd:element name="OrderNumber_z" type="s:OrderNumber"/>
                        <xsd:element name="OrderNumber_return" type="s:OrderNumber"/>
                        <xsd:element name="InternationalPrice_x" type="s:InternationalPrice"/>
                        <xsd:element name="InternationalPrice_y" type="s:InternationalPrice"/>
                        <xsd:element name="InternationalPrice_z" type="s:InternationalPrice"/>
                        <xsd:element name="InternationalPrice_return" type="s:InternationalPrice"/>
                        <xsd:element name="SimpleChoice_x" type="s:SimpleChoice"/>
                        <xsd:element name="SimpleChoice_y" type="s:SimpleChoice"/>
                        <xsd:element name="SimpleChoice_z" type="s:SimpleChoice"/>
                        <xsd:element name="SimpleChoice_return" type="s:SimpleChoice"/>
                        <xsd:element name="SimpleAll_x" type="s:SimpleAll"/>
                        <xsd:element name="SimpleAll_y" type="s:SimpleAll"/>
                        <xsd:element name="SimpleAll_z" type="s:SimpleAll"/>
                        <xsd:element name="SimpleAll_return" type="s:SimpleAll"/>
                        <xsd:element name="DerivedChoice_BaseStruct_x" type="s:DerivedChoice_BaseStruct"/>
                        <xsd:element name="DerivedChoice_BaseStruct_y" type="s:DerivedChoice_BaseStruct"/>
                        <xsd:element name="DerivedChoice_BaseStruct_z" type="s:DerivedChoice_BaseStruct"/>
                        <xsd:element name="DerivedChoice_BaseStruct_return" type="s:DerivedChoice_BaseStruct"/>
                </xsd:schema>
        </types>
        <message name="test_SimpleStruct">
                <part name="x" element="s:SimpleStruct_x"/>
                <part name="y" element="s:SimpleStruct_y"/>
        </message>
        <message name="test_SimpleStruct_response">
                <part name="return" element="s:SimpleStruct_return"/>
                <part name="y" element="s:SimpleStruct_y"/>
                <part name="z" element="s:SimpleStruct_z"/>
        </message>
        <message name="test_NestedStruct">
                <part name="x" element="s:NestedStruct_x"/>
                <part name="y" element="s:NestedStruct_y"/>
        </message>
        <message name="test_NestedStruct_response">
                <part name="return" element="s:NestedStruct_return"/>
                <part name="y" element="s:NestedStruct_y"/>
                <part name="z" element="s:NestedStruct_z"/>
        </message>
        <message name="test_FixedArray">
                <part name="x" element="s:FixedArray_x"/>
                <part name="y" element="s:FixedArray_y"/>
        </message>
        <message name="test_FixedArray_response">
                <part name="return" element="s:FixedArray_return"/>
                <part name="y" element="s:FixedArray_y"/>
                <part name="z" element="s:FixedArray_z"/>
        </message>
        <message name="test_UnboundedArray">
                <part name="x" element="s:UnboundedArray_x"/>
                <part name="y" element="s:UnboundedArray_y"/>
        </message>
        <message name="test_UnboundedArray_response">
                <part name="return" element="s:UnboundedArray_return"/>
                <part name="y" element="s:UnboundedArray_y"/>
                <part name="z" element="s:UnboundedArray_z"/>
        </message>
        <message name="test_BoundedArray">
                <part name="x" element="s:BoundedArray_x"/>
                <part name="y" element="s:BoundedArray_y"/>
        </message>
        <message name="test_BoundedArray_response">
                <part name="return" element="s:BoundedArray_return"/>
                <part name="y" element="s:BoundedArray_y"/>
                <part name="z" element="s:BoundedArray_z"/>
        </message>
        <message name="test_NestedArray">
                <part name="x" element="s:NestedArray_x"/>
                <part name="y" element="s:NestedArray_y"/>
        </message>
        <message name="test_NestedArray_response">
                <part name="return" element="s:NestedArray_return"/>
                <part name="y" element="s:NestedArray_y"/>
                <part name="z" element="s:NestedArray_z"/>
        </message>
        <message name="test_OrderNumber">
                <part name="x" element="s:OrderNumber_x"/>
                <part name="y" element="s:OrderNumber_y"/>
        </message>
        <message name="test_OrderNumber_response">
                <part name="return" element="s:OrderNumber_return"/>
                <part name="y" element="s:OrderNumber_y"/>
                <part name="z" element="s:OrderNumber_z"/>
        </message>
        <message name="test_InternationalPrice">
                <part name="x" element="s:InternationalPrice_x"/>
                <part name="y" element="s:InternationalPrice_y"/>
        </message>
        <message name="test_InternationalPrice_response">
                <part name="return" element="s:InternationalPrice_return"/>
                <part name="y" element="s:InternationalPrice_y"/>
                <part name="z" element="s:InternationalPrice_z"/>
        </message>
        <message name="test_SimpleChoice">
                <part name="x" element="s:SimpleChoice_x"/>
                <part name="y" element="s:SimpleChoice_y"/>
        </message>
        <message name="test_SimpleChoice_response">
                <part name="return" element="s:SimpleChoice_return"/>
                <part name="y" element="s:SimpleChoice_y"/>
                <part name="z" element="s:SimpleChoice_z"/>
        </message>
        <message name="test_SimpleAll">
                <part name="x" element="s:SimpleAll_x"/>
                <part name="y" element="s:SimpleAll_y"/>
        </message>
        <message name="test_SimpleAll_response">
                <part name="return" element="s:SimpleAll_return"/>
                <part name="y" element="s:SimpleAll_y"/>
                <part name="z" element="s:SimpleAll_z"/>
        </message>
        <message name="test_DerivedChoice_BaseStruct">
                <part name="x" element="s:DerivedChoice_BaseStruct_x"/>
                <part name="y" element="s:DerivedChoice_BaseStruct_y"/>
        </message>
        <message name="test_DerivedChoice_BaseStruct_response">
                <part name="return" element="s:DerivedChoice_BaseStruct_return"/>
                <part name="y" element="s:DerivedChoice_BaseStruct_y"/>
                <part name="z" element="s:DerivedChoice_BaseStruct_z"/>
        </message>
        <portType name="TypeTestPortType">
                <operation name="test_SimpleStruct">
                        <input name="test_SimpleStruct" message="tns:test_SimpleStruct"/>
                        <output name="test_SimpleStruct_response" message="tns:test_SimpleStruct_response"/>
                </operation>
                <operation name="test_NestedStruct">
                        <input name="test_NestedStruct" message="tns:test_NestedStruct"/>
                        <output name="test_NestedStruct_response" message="tns:test_NestedStruct_response"/>
                </operation>
                <operation name="test_FixedArray">
                        <input name="test_FixedArray" message="tns:test_FixedArray"/>
                        <output name="test_FixedArray_response" message="tns:test_FixedArray_response"/>
                </operation>
                <operation name="test_UnboundedArray">
                        <input name="test_UnboundedArray" message="tns:test_UnboundedArray"/>
                        <output name="test_UnboundedArray_response" message="tns:test_UnboundedArray_response"/>
                </operation>
                <operation name="test_BoundedArray">
                        <input name="test_BoundedArray" message="tns:test_BoundedArray"/>
                        <output name="test_BoundedArray_response" message="tns:test_BoundedArray_response"/>
                </operation>
                <operation name="test_NestedArray">
                        <input name="test_NestedArray" message="tns:test_NestedArray"/>
                        <output name="test_NestedArray_response" message="tns:test_NestedArray_response"/>
                </operation>
                <operation name="test_OrderNumber">
                        <input name="test_OrderNumber" message="tns:test_OrderNumber"/>
                        <output name="test_OrderNumber_response" message="tns:test_OrderNumber_response"/>
                </operation>
                <operation name="test_InternationalPrice">
                        <input name="test_InternationalPrice" message="tns:test_InternationalPrice"/>
                        <output name="test_InternationalPrice_response" message="tns:test_InternationalPrice_response"/>
                </operation>
                <operation name="test_SimpleChoice">
                        <input name="test_SimpleChoice" message="tns:test_SimpleChoice"/>
                        <output name="test_SimpleChoice_response" message="tns:test_SimpleChoice_response"/>
                </operation>
                <operation name="test_SimpleAll">
                        <input name="test_SimpleAll" message="tns:test_SimpleAll"/>
                        <output name="test_SimpleAll_response" message="tns:test_SimpleAll_response"/>
                </operation>
                <operation name="test_DerivedChoice_BaseStruct">
                        <input name="test_DerivedChoice_BaseStruct" message="tns:test_DerivedChoice_BaseStruct"/>
                        <output name="test_DerivedChoice_BaseStruct_response" message="tns:test_DerivedChoice_BaseStruct_response"/>
                </operation>
        </portType>
        
</definitions>
