<xs:schema
    targetNamespace="http://www.somesite.org/someproject/namespaces/xmlbehavior"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    >

    <xs:element name="xml-behavior">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="base-impl-url" type="xs:string"/>
                <xs:element name="behaviors" type="behaviors"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    
    <xs:element name="behaviors">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="behavior" type="behavior" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    
    <xs:element name="behavior">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="class" type="xs:string"/>
                <xs:element name="name" type="xs:string"/>
                <xs:element name="return-type" type="xs:string"/>
                <xs:element name="args" type="args"/>
                <xs:element name="impl-url" type="xs:string"/>
                <xs:element name="ancillaries" type="ancillaries" minOccurs="0"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="args">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="arg" type="arg" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="arg">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="name" type="xs:string"/>
                <xs:element name="data-type" type="xs:string"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="ancillaries">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="ancillary" type="arg" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="ancillary">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="class" type="xs:string"/>
                <xs:element name="role" type="xs:string"/>
                <xs:element name="return-type" type="xs:string"/>
                <xs:element name="name" type="xs:string"/>
                <xs:element name="args" type="args"/>
                <xs:element name="impl-url" type="xs:string"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

</xs:schema>
