<!--
  ~ 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.
  -->

<schema targetNamespace="http://apache.org/axis2/jaxws/sample/dlwmin/types"
            xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
     <complexType name="testBean">
       <sequence>
         <element name="data1" type="xsd:string"/>
         <element name="data2" type="xsd:int"/>
       </sequence>
     </complexType>
     <element name="processFault2">
        <complexType>
                    <sequence>
                        <element name="flag"    form="unqualified" type="xsd:int"/>
                        <element name="message" form="unqualified" type="xsd:string"/>
                    </sequence>
        </complexType>
     </element>
     <element name="processFault3">
        <complexType>
                    <sequence>
                        <element name="flag"    form="unqualified" type="xsd:int"/>
                    </sequence>
        </complexType>
     </element>
</schema>