<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
    <xs:element name="Accessory">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="Scale" />
                <xs:element ref="Translate" />
                <xs:element ref="Rotate" />
                <xs:element ref="HeadCover" />
                <xs:element ref="ThreeD" />
                <xs:element ref="Animation" />
            </xs:sequence>
            <xs:attribute name="Type" type="xs:byte" use="required" />
        </xs:complexType>
    </xs:element>
    <xs:element name="Animation" type="xs:boolean" />
    <xs:element name="Author" type="xs:string" />
    <xs:element name="Avatar">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="BkgdFile" />
                <xs:element ref="EyeSize" minOccurs="0" />
                <xs:element ref="MouthSize" minOccurs="0" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="EyeSize" type="xs:string" />
    <xs:element name="Filter">
        <xs:complexType>
            <xs:sequence>
                <xs:element minOccurs="0" maxOccurs="unbounded" ref="FilterProperty" />
            </xs:sequence>
            <xs:attribute name="Id" type="xs:string" use="required" />
            <xs:attribute name="DLLName" type="xs:string" />
            <xs:attribute name="DLLPath" type="xs:string" />
        </xs:complexType>
    </xs:element>
    <xs:element name="FilterProperty">
        <xs:complexType>
            <xs:attribute name="Name" type="xs:string" use="required" />
            <xs:attribute name="Value" type="xs:string" use="required" />
        </xs:complexType>
    </xs:element>
    <xs:element name="MouthSize" type="xs:string" />
    <xs:element name="BkgdFile" type="xs:string" />
    <xs:element name="Copyright" type="xs:string" />
    <xs:element name="Created" type="xs:string" />
    <xs:element name="Description">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="String" maxOccurs="unbounded" />
            </xs:sequence>
            <xs:attribute name="Localized" type="xs:boolean" use="required" />
        </xs:complexType>
    </xs:element>
    <xs:element name="HeadCover" type="xs:boolean" />
    <xs:element name="Model">
        <xs:complexType>
            <xs:all>
                <xs:element ref="Version" />
                <xs:element ref="Copyright" />
                <xs:element ref="Author" />
                <xs:element ref="Name" />
                <xs:element ref="Description" />
                <xs:element ref="ModelFile" />
                <xs:element ref="ImageFile" />
                <xs:element ref="PreviewFile" />
                <xs:element ref="TextureFile" />
                <xs:element ref="AlphaTextureFile" />
                <xs:element ref="PackageFile" />
                <xs:element ref="Created" />
                <xs:element ref="Properties" />
            </xs:all>
            <xs:attribute name="Type" type="xs:string" use="required" />
            <xs:attribute name="Id" type="xs:string" use="required" />
        </xs:complexType>
    </xs:element>
    <!-- MultipleSelect,Preview Tracking,Preview Mirror,UsesFEL,FOV Dig,FOV Mech,FOV AutoFT -->
    <xs:element name="MultipleSelect" type="xs:boolean" />
    <xs:element name="UsesFEL" type="xs:boolean" />
    <xs:element name="InhibitAutoGain" type="xs:boolean" />
    <xs:element name="InhibitAutoFocus" type="xs:boolean" />
    <xs:element name="Preview">
        <xs:complexType>
            <xs:attribute name="Tracking" type="xs:boolean" use="required" />
            <xs:attribute name="Mirror" type="xs:boolean" use="required" />
        </xs:complexType>
    </xs:element>
    <xs:element name="FOV">
        <xs:complexType>
            <xs:attribute name="Dig" type="xs:boolean" use="required" />
            <xs:attribute name="Mech" type="xs:boolean" use="required" />
            <xs:attribute name="AutoFT" type="xs:boolean" use="required" />
        </xs:complexType>
    </xs:element>
    <xs:element name="ModelComplexity">
        <xs:simpleType>
            <xs:restriction base="xs:NMTOKEN">
                <xs:enumeration value="High" />
                <xs:enumeration value="Low" />
                <xs:enumeration value="Medium" />
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="ComponentID" type="xs:string" />
    <xs:element name="ModelFile" nillable="false">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:minLength value="1" />
                <xs:whiteSpace value="preserve" />
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="ImageFile" nillable="false">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:minLength value="1" />
                <xs:whiteSpace value="preserve" />
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="PreviewFile" nillable="false">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:minLength value="1" />
                <xs:whiteSpace value="preserve" />
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="TextureFile" nillable="false">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:minLength value="1" />
                <xs:whiteSpace value="preserve" />
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <!--	<xs:element name="AlphaTextureFile" type="xs:string" /> -->
    <xs:element name="AlphaTextureFile" nillable="false">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:minLength value="1" />
                <xs:whiteSpace value="preserve" />
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="PackageFile" nillable="false">
        <xs:simpleType>
            <xs:restriction base="xs:string">
                <xs:minLength value="1" />
                <xs:whiteSpace value="preserve" />
            </xs:restriction>
        </xs:simpleType>
    </xs:element>
    <xs:element name="Version" type="xs:string" />
    <xs:element name="Name">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="String" maxOccurs="unbounded" />
            </xs:sequence>
            <xs:attribute name="Localized" type="xs:boolean" use="required" />
        </xs:complexType>
    </xs:element>
    <xs:element name="Properties">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="ModelComplexity" />
                <xs:element ref="ComponentID" minOccurs="0" />
                <xs:element ref="MultipleSelect" minOccurs="0" />
                <xs:element ref="Preview" minOccurs="0" />
                <xs:element ref="UsesFEL" minOccurs="0" />
                <xs:element ref="InhibitAutoGain" minOccurs="0" />
                <xs:element ref="FOV" minOccurs="0" />
                <xs:element ref="InhibitAutoFocus" minOccurs="0" />
                <xs:choice>
                    <xs:element ref="Accessory" />
                    <xs:element ref="Avatar" />
                    <xs:element ref="FilterInfo" />
                </xs:choice>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="String">
        <xs:complexType>
            <xs:attribute name="LanguageId" use="required">
                <xs:simpleType>
                    <xs:restriction base="xs:NMTOKEN">
                        <xs:enumeration value="1028" />
                        <xs:enumeration value="1030" />
                        <xs:enumeration value="1031" />
                        <xs:enumeration value="1033" />
                        <xs:enumeration value="1034" />
                        <xs:enumeration value="1036" />
                        <xs:enumeration value="1040" />
                        <xs:enumeration value="1041" />
                        <xs:enumeration value="1042" />
                        <xs:enumeration value="1043" />
                        <xs:enumeration value="1044" />
                        <xs:enumeration value="1046" />
                        <xs:enumeration value="1053" />
                        <xs:enumeration value="2052" />
                    </xs:restriction>
                </xs:simpleType>
            </xs:attribute>
            <xs:attribute name="StringValue" type="xs:string" use="required" />
        </xs:complexType>
    </xs:element>
    <xs:element name="Rotate">
        <xs:complexType>
            <xs:attribute name="Roll" type="xs:boolean" use="required" />
            <xs:attribute name="Pitch" type="xs:boolean" use="required" />
            <xs:attribute name="Yaw" type="xs:boolean" use="required" />
        </xs:complexType>
    </xs:element>
    <xs:element name="Scale">
        <xs:complexType>
            <xs:attribute name="X" type="xs:boolean" use="required" />
            <xs:attribute name="Y" type="xs:boolean" use="required" />
            <xs:attribute name="Z" type="xs:boolean" use="required" />
        </xs:complexType>
    </xs:element>
    <xs:element name="ThreeD" type="xs:boolean" />
    <xs:element name="Translate">
        <xs:complexType>
            <xs:attribute name="X" type="xs:boolean" use="required" />
            <xs:attribute name="Y" type="xs:boolean" use="required" />
            <xs:attribute name="Z" type="xs:boolean" use="required" />
        </xs:complexType>
    </xs:element>
    <xs:element name="FilterInfo">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="Filter" />
            </xs:sequence>
            <xs:attribute name="Mode" type="xs:byte" />
        </xs:complexType>
    </xs:element>
</xs:schema>