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

    <xs:element name="root" >
        <xs:complexType>
            <xs:sequence>
                <!-- Built-in Type: Binary -->
                <xs:element name="base64Binary"  type="xs:base64Binary" minOccurs="0" maxOccurs="unbounded" />
                <xs:element name="hexBinary"  type="xs:hexBinary" minOccurs="0" maxOccurs="unbounded" />
                <!-- Built-in Type: Boolean {true, false, 1, 0} -->
                <xs:element name="boolean"  type="xs:boolean" minOccurs="0" maxOccurs="unbounded" />
                <!-- Built-in Type: Date-Time -->
                <xs:element name="dateTime"  type="xs:dateTime" minOccurs="0" maxOccurs="unbounded" />
                <xs:element name="time"  type="xs:time" minOccurs="0" maxOccurs="unbounded" />
                <xs:element name="date"  type="xs:date" minOccurs="0" maxOccurs="unbounded" />
                <xs:element name="gYearMonth"  type="xs:gYearMonth" minOccurs="0" maxOccurs="unbounded" />
                <xs:element name="gYear"  type="xs:gYear" minOccurs="0" maxOccurs="unbounded" />
                <xs:element name="gMonthDay"  type="xs:gMonthDay" minOccurs="0" maxOccurs="unbounded" />
                <xs:element name="gDay"  type="xs:gDay" minOccurs="0" maxOccurs="unbounded" />
                <xs:element name="gMonth"  type="xs:gMonth" minOccurs="0" maxOccurs="unbounded" />
                <!-- Built-in Type: Decimal -->
                <xs:element name="decimal"  type="xs:decimal" minOccurs="0" maxOccurs="unbounded" />
                <!-- Built-in Type: Float -->
                <xs:element name="float"  type="xs:float" minOccurs="0" maxOccurs="unbounded" />
                <xs:element name="double"  type="xs:double" minOccurs="0" maxOccurs="unbounded" />
                <!-- Built-in Type: Integer -->
                <xs:element name="integer"  type="xs:integer" minOccurs="0" maxOccurs="unbounded" />
                <xs:element name="nonPositiveInteger"  type="xs:nonPositiveInteger" minOccurs="0" maxOccurs="unbounded" />
                <xs:element name="negativeInteger"  type="xs:negativeInteger" minOccurs="0" maxOccurs="unbounded" />
                <xs:element name="long"  type="xs:long" minOccurs="0" maxOccurs="unbounded" />
                <xs:element name="int"  type="xs:int" minOccurs="0" maxOccurs="unbounded" />
                <xs:element name="short"  type="xs:short" minOccurs="0" maxOccurs="unbounded" />
                <xs:element name="byte"  type="xs:byte" minOccurs="0" maxOccurs="unbounded" />
                <!-- Built-in Type: Unsigned Integer -->
                <xs:element name="nonNegativeInteger"  type="xs:nonNegativeInteger" minOccurs="0" maxOccurs="unbounded" />
                <xs:element name="unsignedLong"  type="xs:unsignedLong" minOccurs="0" maxOccurs="unbounded" />
                <xs:element name="positiveInteger"  type="xs:positiveInteger" minOccurs="0" maxOccurs="unbounded" />
                <xs:element name="unsignedInt"  type="xs:unsignedInt" minOccurs="0" maxOccurs="unbounded" />
                <xs:element name="unsignedShort"  type="xs:unsignedShort" minOccurs="0" maxOccurs="unbounded" />
                <xs:element name="unsignedByte"  type="xs:unsignedByte" minOccurs="0" maxOccurs="unbounded" />
                <!-- Built-in Type: QName -->
                <xs:element name="qName"  type="xs:QName" minOccurs="0" maxOccurs="unbounded" />
                <!-- Built-in Type: List -->
                <!-- TODO: all typed derived by list, inclduing IDREFS and ENTITIES -->
                <xs:element name="intValues" minOccurs="0" maxOccurs="unbounded" >
                    <xs:simpleType>
                        <xs:list itemType="xs:integer"/>
                    </xs:simpleType>
                </xs:element>
                <xs:element name="listDates"  minOccurs="0" maxOccurs="unbounded" >
                    <xs:simpleType>
                        <xs:list itemType="xs:date"/>
                    </xs:simpleType>
                </xs:element>
                <xs:element name="listBytes"  minOccurs="0" maxOccurs="unbounded" >
                    <xs:simpleType>
                        <xs:list itemType="xs:byte"/>
                    </xs:simpleType>
                </xs:element>
                <xs:element name="listFloats"  minOccurs="0" maxOccurs="unbounded" >
                    <xs:simpleType>
                        <xs:list itemType="xs:float"/>
                    </xs:simpleType>
                </xs:element>
             
                <xs:element name="listOfEnums" minOccurs="0" maxOccurs="unbounded">
                    <xs:simpleType>
                        <xs:list itemType="gMonthDay"/>
                    </xs:simpleType>
                </xs:element>
                
                <!-- Built-in Type: String -->
                <xs:element name="string"  type="xs:string" minOccurs="0" maxOccurs="unbounded" />
                <xs:element name="normalizedString"  type="xs:normalizedString" minOccurs="0" maxOccurs="unbounded" />
                <xs:element name="token"  type="xs:token" minOccurs="0" maxOccurs="unbounded" />
                <xs:element name="language"  type="xs:language" minOccurs="0" maxOccurs="unbounded" />
                <xs:element name="name"  type="xs:Name" minOccurs="0" maxOccurs="unbounded" />
                <xs:element name="nCName"  type="xs:NCName" minOccurs="0" maxOccurs="unbounded" />
                <xs:element name="iD"  type="xs:ID" minOccurs="0" maxOccurs="unbounded" />
                <xs:element name="iDREF"  type="xs:IDREF" minOccurs="0" maxOccurs="unbounded" />
                <xs:element name="eNTITY"  type="xs:ENTITY" minOccurs="0" maxOccurs="unbounded" />
                <xs:element name="nMTOKEN"  type="xs:NMTOKEN" minOccurs="0" maxOccurs="unbounded" />
                <xs:element name="anySimpleType"  type="xs:anySimpleType" minOccurs="0" maxOccurs="unbounded" />
                <xs:element name="anyURI"  type="xs:anyURI" minOccurs="0" maxOccurs="unbounded" />
                <!-- Built-in Type: RestrictedCharSet -->
                <xs:element name="rcs"  minOccurs="0" maxOccurs="unbounded" >
                    <xs:simpleType >
                        <xs:restriction base="xs:string">
                            <xs:pattern value="[A-Z]"></xs:pattern>
                        </xs:restriction>
                    </xs:simpleType>
                </xs:element>
                <!-- TODO Notation-->
                <!-- 
                <xs:element name="Notation" type="xs:Notation" minOccurs="0" maxOccurs="unbounded" />
                -->
                <xs:element name="duration"  type="xs:duration" minOccurs="0" maxOccurs="unbounded" />
                

                <!-- Built-in Type: Enumeration -->
                <xs:element name="enumStrings" minOccurs="0" maxOccurs="unbounded" >
                    <xs:simpleType>
                        <xs:restriction base="xs:string">
                            <xs:enumeration value="Audi"/>
                            <xs:enumeration value="Golf"/>
                            <xs:enumeration value="BMW"/>
                        </xs:restriction>
                    </xs:simpleType>
                </xs:element>

                <xs:element name="enumInts" minOccurs="0" maxOccurs="unbounded" >
                    <xs:simpleType>
                        <xs:restriction base="xs:integer">
                            <xs:enumeration value="0"/>
                            <xs:enumeration value="1"/>
                            <xs:enumeration value="2"/>
                            <xs:enumeration value="3"/>
                            <xs:enumeration value="4"/>
                            <xs:enumeration value="5"/>
                            <xs:enumeration value="6"/>
                            <xs:enumeration value="7"/>
                            <xs:enumeration value="8"/>
                            <xs:enumeration value="9"/>
                        </xs:restriction>
                    </xs:simpleType>
                </xs:element>
                
                
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    
    <!-- enum list -->
    <xs:simpleType name="gMonthDay">
        <xs:restriction base="xs:gMonthDay">
            <xs:enumeration value="--01-01"/>
            <xs:enumeration value="--05-01"/>
            <xs:enumeration value="--05-08"/>
            <xs:enumeration value="--07-14"/>
            <xs:enumeration value="--08-15"/>
            <xs:enumeration value="--11-01"/>
            <xs:enumeration value="--11-11"/>
            <xs:enumeration value="--12-25"/>
        </xs:restriction>
    </xs:simpleType>
    
</xs:schema>
