<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/Zoo"
    xmlns:zoo="http://www.example.org/Zoo">

    <annotation>
        <documentation>
    Zoo.xsd
    written by andy_davidson@apple.com

    Demonstrates how types can be extended. This can be a useful technique for
    managing GEO specific versions. The derived types can use restrictions to remove
    fields from the base class. We should avoid using complexType restrictions. It
    creates a more difficult programming model of the application programmers.

    Note is is possible to define types as being abstract.

    Ref: http://www.w3.org/TR/xmlschema-0/

    Copyright 2010 Apple Inc.. All rights reserved.
        </documentation>
    </annotation>

    <element name="cageRequest" type="zoo:CageRequest" />
    <element name="menagerieRequest" type="zoo:MenagerieRequest" />
    <element name="zooRequest" type="zoo:ZooRequest" />

    <complexType name="Animal">
        <sequence>
            <element name="name" type="string" />
        </sequence>
    </complexType>

   <complexType name="CageRequest">
           <annotation>
               <documentation>
                   test simple case. normal containment
               </documentation>
           </annotation>
        <sequence>
            <element name="animal" type="zoo:Animal"/>
        </sequence>
    </complexType>

    <complexType name="Fish">
        <complexContent>
            <extension base="zoo:Animal">
                <sequence>
                    <element name="numberOfFins" type="integer" />
                </sequence>
            </extension>
        </complexContent>
    </complexType>

    <complexType name="MenagerieRequest">
         <annotation>
               <documentation>
                   test un-wrapped array
               </documentation>
           </annotation>
           <sequence>
               <element name="animal" type="zoo:Animal" maxOccurs="unbounded"/>
           </sequence>
    </complexType>


    <complexType name="Monkey">
        <complexContent>
            <extension base="zoo:Animal">
                <sequence>
                    <element name="hasPrehensileTail" type="boolean" />
                </sequence>
            </extension>
        </complexContent>
    </complexType>

    <complexType name="ZooRequest">
           <annotation>
               <documentation>
                   test wrapped array
               </documentation>
           </annotation>
        <sequence>
            <element name="animals" minOccurs="0">
                <complexType>
                    <choice minOccurs="0" maxOccurs="unbounded">
                        <element name="animal" type="zoo:Animal" />
                       </choice>
                 </complexType>
            </element>
        </sequence>
    </complexType>


</schema>
