<?xml version="1.0" encoding="UTF-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="UIPluginV2" type="UIPluginV2Type">
    </xs:element>

    <xs:complexType name="UIPluginV2Type">
        <xs:sequence>
            <xs:element name="Interface" type="InterfaceType" minOccurs="1" maxOccurs="1"/>
            <xs:element name="Labels" type="LabelsType" minOccurs="0" maxOccurs="1"/>
            <xs:element name="Libraries" type="LibrariesType" minOccurs="1" maxOccurs="1"/>
            <xs:element name="UIComponentHTML" type="UIComponentHTMLType" minOccurs="1" maxOccurs="1"/>
            <xs:element name="UIComponentCSS" type="UIComponentCSSType" minOccurs="1" maxOccurs="1"/>
            <xs:element name="UIComponentJS" type="UIComponentJSType" minOccurs="1" maxOccurs="1"/>
        </xs:sequence>
        <xs:attribute name="name" type="xs:string" use="required"/>
    </xs:complexType>

    <xs:complexType name="InterfaceType">
        <xs:sequence>
            <xs:element name="Property" type="PropertyType" maxOccurs="unbounded" minOccurs="0"/>
            <xs:element name="List" type="ListType" maxOccurs="unbounded" minOccurs="0"/>
            <xs:element name="Events" type="EventsType" maxOccurs="1" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="PropertyType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="id" type="xs:string" use="required"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>

    <xs:complexType name="ListType">
        <xs:sequence>
            <xs:element name="Property" type="PropertyType" maxOccurs="unbounded" minOccurs="0"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:string" use="required"/>
    </xs:complexType>

    <xs:complexType name="EventsType">
        <xs:sequence>
            <xs:element name="Event" type="EventType" maxOccurs="unbounded" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="EventType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="name" type="xs:string" use="required"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>

    <xs:complexType name="LabelsType">
        <xs:sequence>
            <xs:element name="Label" type="LabelType" maxOccurs="unbounded" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="LabelType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="id" type="xs:string" use="required"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>

    <xs:complexType name="LibrariesType">
        <xs:sequence>
            <xs:element name="Library" type="LibraryType" maxOccurs="unbounded" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>

    <xs:complexType name="LibraryType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="name" type="xs:string" use="required"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>

    <xs:complexType name="UIComponentHTMLType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute type="xs:string" name="name" use="required"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>

    <xs:complexType name="UIComponentCSSType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute type="xs:string" name="name" use="required"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>

    <xs:complexType name="UIComponentJSType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute type="xs:string" name="name" use="required"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
</xs:schema>