<!--
  ~ 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/schema/testsuite"
        xmlns="http://www.w3.org/2001/XMLSchema"
        xmlns:tns="http://apache.org/axis2/schema/testsuite"
        xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        elementFormDefault="qualified">


    <!-- test elements for xsd:anyType -->
    <element name="TestAnyType1">
        <complexType>
            <sequence>
                <element name="testValue" type="xsd:anyType" minOccurs="0" maxOccurs="unbounded"
                         nillable="true"/>
            </sequence>
        </complexType>
    </element>
    <element name="TestAnyType2">
        <complexType>
            <sequence>
                <element name="testValue" type="xsd:anyType" minOccurs="0" nillable="true"/>
            </sequence>
        </complexType>
    </element>
    <element name="TestAnyType3">
        <complexType>
            <sequence>
                <element name="testValue" type="xsd:anyType" minOccurs="0" maxOccurs="unbounded"/>
            </sequence>
        </complexType>
    </element>
    <element name="TestAnyType4">
        <complexType>
            <sequence>
                <element name="testValue" type="xsd:anyType" minOccurs="0"/>
            </sequence>
        </complexType>
    </element>
    <element name="TestAnyType5">
        <complexType>
            <sequence>
                <element name="testValue" type="xsd:anyType" nillable="true" maxOccurs="unbounded"/>
            </sequence>
        </complexType>
    </element>
    <element name="TestAnyType6">
        <complexType>
            <sequence>
                <element name="testValue" type="xsd:anyType" nillable="true"/>
            </sequence>
        </complexType>
    </element>
    <element name="TestAnyType7">
        <complexType>
            <sequence>
                <element name="testValue" type="xsd:anyType" maxOccurs="unbounded"/>
            </sequence>
        </complexType>
    </element>
    <element name="TestAnyType8">
        <complexType>
            <sequence>
                <element name="testValue" type="xsd:anyType"/>
            </sequence>
        </complexType>
    </element>

    <!-- generating elemens for primitive types -->
    <element name="testInt1">
        <complexType>
            <sequence>
                <element name="testValue" minOccurs="0" nillable="true" maxOccurs="unbounded" type="xsd:int"/>
            </sequence>
        </complexType>
    </element>
    <element name="testInt2">
        <complexType>
            <sequence>
                <element name="testValue" minOccurs="0" nillable="true" type="xsd:int"/>
            </sequence>
        </complexType>
    </element>
    <element name="testInt3">
        <complexType>
            <sequence>
                <element name="testValue" minOccurs="0" maxOccurs="unbounded" type="xsd:int"/>
            </sequence>
        </complexType>
    </element>
    <element name="testInt4">
        <complexType>
            <sequence>
                <element name="testValue" minOccurs="0" type="xsd:int"/>
            </sequence>
        </complexType>
    </element>
    <element name="testInt5">
        <complexType>
            <sequence>
                <element name="testValue" nillable="true" maxOccurs="unbounded" type="xsd:int"/>
            </sequence>
        </complexType>
    </element>
    <element name="testInt6">
        <complexType>
            <sequence>
                <element name="testValue" nillable="true" type="xsd:int"/>
            </sequence>
        </complexType>
    </element>
    <element name="testInt7">
        <complexType>
            <sequence>
                <element name="testValue" maxOccurs="unbounded" type="xsd:int"/>
            </sequence>
        </complexType>
    </element>
    <element name="testInt8">
        <complexType>
            <sequence>
                <element name="testValue" type="xsd:int"/>
            </sequence>
        </complexType>
    </element>

    <!-- generating elemens for string types -->
    <element name="testString1">
        <complexType>
            <sequence>
                <element name="testValue" minOccurs="0" nillable="true" maxOccurs="unbounded"
                         type="xsd:string"/>
            </sequence>
        </complexType>
    </element>
    <element name="testString2">
        <complexType>
            <sequence>
                <element name="testValue" minOccurs="0" nillable="true" type="xsd:string"/>
            </sequence>
        </complexType>
    </element>
    <element name="testString3">
        <complexType>
            <sequence>
                <element name="testValue" minOccurs="0" maxOccurs="unbounded" type="xsd:string"/>
            </sequence>
        </complexType>
    </element>
    <element name="testString4">
        <complexType>
            <sequence>
                <element name="testValue" minOccurs="0" type="xsd:string"/>
            </sequence>
        </complexType>
    </element>
    <element name="testString5">
        <complexType>
            <sequence>
                <element name="testValue" nillable="true" maxOccurs="unbounded" type="xsd:string"/>
            </sequence>
        </complexType>
    </element>
    <element name="testString6">
        <complexType>
            <sequence>
                <element name="testValue" nillable="true" type="xsd:string"/>
            </sequence>
        </complexType>
    </element>
    <element name="testString7">
        <complexType>
            <sequence>
                <element name="testValue" maxOccurs="unbounded" type="xsd:string"/>
            </sequence>
        </complexType>
    </element>
    <element name="testString8">
        <complexType>
            <sequence>
                <element name="testValue" type="xsd:string"/>
            </sequence>
        </complexType>
    </element>

    <!-- generating elemens for custem types -->
    <element name="testBookInformation1">
        <complexType>
            <sequence>
                <element name="testValue" minOccurs="0" nillable="true" maxOccurs="unbounded"
                         type="tns:BookInformation"/>
            </sequence>
        </complexType>
    </element>
    <element name="testBookInformation2">
        <complexType>
            <sequence>
                <element name="testValue" minOccurs="0" nillable="true" type="tns:BookInformation"/>
            </sequence>
        </complexType>
    </element>
    <element name="testBookInformation3">
        <complexType>
            <sequence>
                <element name="testValue" minOccurs="0" maxOccurs="unbounded" type="tns:BookInformation"/>
            </sequence>
        </complexType>
    </element>
    <element name="testBookInformation4">
        <complexType>
            <sequence>
                <element name="testValue" minOccurs="0" type="tns:BookInformation"/>
            </sequence>
        </complexType>
    </element>
    <element name="testBookInformation5">
        <complexType>
            <sequence>
                <element name="testValue" nillable="true" maxOccurs="unbounded" type="tns:BookInformation"/>
            </sequence>
        </complexType>
    </element>
    <element name="testBookInformation6">
        <complexType>
            <sequence>
                <element name="testValue" nillable="true" type="tns:BookInformation"/>
            </sequence>
        </complexType>
    </element>
    <element name="testBookInformation7">
        <complexType>
            <sequence>
                <element name="testValue" maxOccurs="unbounded" type="tns:BookInformation"/>
            </sequence>
        </complexType>
    </element>
    <element name="testBookInformation8">
        <complexType>
            <sequence>
                <element name="testValue" type="tns:BookInformation"/>
            </sequence>
        </complexType>
    </element>


    <!-- generating elemens for any elements -->
    <element name="testAny1">
        <complexType>
            <sequence>
                <any minOccurs="0" maxOccurs="unbounded"/>
            </sequence>
        </complexType>
    </element>
    <element name="testAny2">
        <complexType>
            <sequence>
                <any minOccurs="0"/>
            </sequence>
        </complexType>
    </element>
    <element name="testAny3">
        <complexType>
            <sequence>
                <any maxOccurs="unbounded"/>
            </sequence>
        </complexType>
    </element>
    <element name="testAny4">
        <complexType>
            <sequence>
                <any/>
            </sequence>
        </complexType>
    </element>

    <!-- test string variables -->
    <element name="OuterTestString1" type="xsd:string" nillable="true"/>
    <element name="OuterTestString2" type="xsd:string"/>

    <!-- test primitive variables -->
    <element name="OuterTestInt1" type="xsd:int" nillable="true"/>
    <element name="OuterTestInt2" type="xsd:int"/>

    <!-- test xsd:any variables -->
    <element name="OuterTestAnyType1" type="xsd:anyType" nillable="true"/>
    <element name="OuterTestAnyType2" type="xsd:anyType"/>

    <!-- test xsd:any variables -->
    <element name="OuterTestBookInformation1" type="tns:BookInformation" nillable="true"/>
    <element name="OuterTestBookInformation2" type="tns:BookInformation"/>

    <!-- complext elements -->
    <element name="OuterTestComplex1" nillable="true">
        <complexType>
            <sequence>
                <element name="testValue" type="xsd:string"/>
            </sequence>
        </complexType>
    </element>
    <element name="OuterTestComplex2">
        <complexType>
            <sequence>
                <element name="testValue" type="xsd:string"/>
            </sequence>
        </complexType>
    </element>

    <complexType name="BookInformation">
        <sequence>
            <element name="author" minOccurs="0" maxOccurs="unbounded" type="string"/>
            <element name="title" type="string"/>
        </sequence>
        <attribute name="type" use="required" type="string"/>
        <attribute name="isbn" use="required" type="string"/>
    </complexType>
</schema>