<?xml version="1.0" encoding="UTF-8"?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
	       attributeFormDefault="unqualified"
           elementFormDefault="qualified">

	<xs:complexType name="instanceType">
		<xs:sequence>
            <xs:element name="field" type="fieldType" minOccurs="0" maxOccurs="unbounded"/>
            <xs:element name="reference" type="referenceType" minOccurs="0" maxOccurs="unbounded"/>
            <xs:element name="collection" type="collectionType" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="id" type="xs:string"/>
	</xs:complexType>

    <xs:complexType name="fieldType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="name" type="xs:string" use="required"/>
                <xs:attribute name="null" type="xs:boolean"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>

    <xs:complexType name="referenceType">
        <xs:sequence>
            <xs:element name="instance" type="instanceType" minOccurs="0" maxOccurs="1"/>
        </xs:sequence>
        <xs:attribute name="name" type="xs:string" use="required"/>
        <xs:attribute name="null" type="xs:boolean"/>
    </xs:complexType>

    <xs:complexType name="collectionType">
        <xs:sequence>
            <xs:element name="instance" type="instanceType" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
        <xs:attribute name="name" type="xs:string" use="required"/>
        <xs:attribute name="null" type="xs:boolean"/>
    </xs:complexType>

    <xs:complexType name="instancesType">
        <xs:sequence>
            <xs:element name="instance" type="instanceType" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>

</xs:schema>
