<?xml version="1.0"?>
<Schema name="DATABASE" xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes">

    <ElementType name="DATABASE" content="eltOnly" model="closed">
        <AttributeType name="NAME"/>
        <AttributeType name="ID"/>
        <AttributeType name="MAX_HTMLHELPID"/>
        <attribute type="NAME"/>
        <attribute type="ID"/>
        <attribute type="MAX_HTMLHELPID"/>
        <element type="DRIVER" maxOccurs="*" minOccurs="0"/>
    </ElementType>

    <ElementType name="DRIVER" content="eltOnly" model="closed" order="many">
        <AttributeType name="VENDOR"/>
        <AttributeType name="NAME"/>
        <AttributeType name="ID"/>
        <attribute type="NAME" required="yes"/>
        <attribute type="VENDOR" required="yes"/>
        <attribute type="ID" />
        <element type="HISTORY" maxOccurs="*" minOccurs="0"/>
        <element type="BUG" maxOccurs="*" minOccurs="0"/>
        <element type="SYS" maxOccurs="*" minOccurs="0"/>
        <element type="WINNT_UPGRADE" maxOccurs="*" minOccurs="0"/>
    </ElementType>

    <ElementType name="SYS" content="eltOnly" model="closed" order="many">
        <AttributeType name="NAME"/>
        <AttributeType name="BIN_PRODUCT_VERSION"/>
        <AttributeType name="UPTO_BIN_PRODUCT_VERSION"/>
        <AttributeType name="LINK_DATE"/>
        <AttributeType name="UPTO_LINK_DATE"/>
        <AttributeType name="ID"/> <!--GUID for driver blocking identifying-->
        <AttributeType name="OS_VERSION"/>
        <AttributeType name="OS_SKU"/> <!-- personal/pro/etc -->
        <AttributeType name="OS_PLATFORM"/> <!-- IA32/IA64 -->
        <AttributeType name="CRITICAL" dt:type="enumeration" dt:values="YES NO"/>
        <AttributeType name="USER_MODE_BLOCK" dt:type="enumeration" dt:values="YES NO"/>
        <AttributeType name="GENERATE_UPGRADE_REPORT_ENTRY" dt:type="enumeration" dt:values="YES NO"/>
        <attribute type="NAME" required="yes"/>
        <attribute type="BIN_PRODUCT_VERSION"/>
        <attribute type="UPTO_BIN_PRODUCT_VERSION"/>
        <attribute type="LINK_DATE"/>
        <attribute type="UPTO_LINK_DATE"/>
        <attribute type="ID"/>
        <attribute type="OS_VERSION"/>
        <attribute type="OS_SKU"/>
        <attribute type="OS_PLATFORM"/>
        <attribute type="CRITICAL"/>
        <attribute type="USER_MODE_BLOCK"/>
        <attribute type="GENERATE_UPGRADE_REPORT_ENTRY"/>
        <element type="APPHELP" maxOccurs="*" minOccurs="0"/>
        <element type="DRIVER_POLICY" maxOccurs="*" minOccurs="0"/>
        <element type="DATA" maxOccurs="*" minOccurs="0"/>
    </ElementType>
    
    <ElementType name="APPHELP" model="closed">
        <AttributeType name="MESSAGE"/>
        <AttributeType name="HTMLHELPID"/>
        <AttributeType name="BLOCK_UPGRADE" dt:type="enumeration" dt:values="YES NO"/>
        <attribute type="MESSAGE" required="yes"/>
        <attribute type="HTMLHELPID"/>
        <attribute type="BLOCK_UPGRADE"/>
    </ElementType>

    <ElementType name="WINNT_UPGRADE" model="closed">
        <AttributeType name="ID"/>
        <attribute type="ID"/>
        <element type="MATCHING_FILE" maxOccurs="1" minOccurs="0"/>
        <element type="MATCHING_REGISTRY_ENTRY" maxOccurs="1" minOccurs="0"/>
        <element type="APPHELP" maxOccurs="1" minOccurs="0"/>
    </ElementType>
    
    <ElementType name="MATCHING_FILE" content="textOnly" model="closed">
        <AttributeType name="NAME"/>
        <AttributeType name="SERVICE_NAME"/>
        <AttributeType name="BIN_PRODUCT_VERSION"/>
        <AttributeType name="UPTO_BIN_PRODUCT_VERSION"/>
        <AttributeType name="BIN_FILE_VERSION"/>
        <AttributeType name="UPTO_BIN_FILE_VERSION"/>
        <AttributeType name="LINK_DATE"/>
        <AttributeType name="UPTO_LINK_DATE"/>
        <attribute type="NAME"/>
        <attribute type="SERVICE_NAME"/>
        <attribute type="BIN_PRODUCT_VERSION"/>
        <attribute type="UPTO_BIN_PRODUCT_VERSION"/>
        <attribute type="BIN_FILE_VERSION"/>
        <attribute type="UPTO_BIN_FILE_VERSION"/>
        <attribute type="LINK_DATE"/>
        <attribute type="UPTO_LINK_DATE"/>
    </ElementType>

    <ElementType name="MATCHING_REGISTRY_ENTRY" model="closed">
        <AttributeType name="KEY"/>
        <AttributeType name="VALUE_NAME"/>
        <AttributeType name="VALUE"/>
        <attribute type="KEY" required="yes"/>
        <attribute type="VALUE_NAME"/>
        <attribute type="VALUE"/>
    </ElementType>

<!-- Driver policy and data are one and the same, there is no difference -->

    <ElementType name="DRIVER_POLICY" model="closed" order="many">
        <AttributeType name="NAME"/>
        <AttributeType name="VALUETYPE" dt:type="enumeration" dt:values="DWORD STRING BINARY QWORD"/>
        <AttributeType name="VALUE"/>
        <attribute type="NAME" required="yes"/>
        <attribute type="VALUETYPE"/>
        <attribute type="VALUE"/>
    </ElementType>

    <ElementType name="DATA" model="closed" order="many">
        <AttributeType name="NAME"/>
        <AttributeType name="VALUETYPE" dt:type="enumeration" dt:values="DWORD STRING BINARY QWORD"/>
        <AttributeType name="VALUE"/>
        <attribute type="NAME" required="yes"/>
        <attribute type="VALUETYPE"/>
        <attribute type="VALUE"/>
    </ElementType>

    <ElementType name="HISTORY" content="eltOnly" model="closed">
        <AttributeType name="KEYWORDS"/>
        <AttributeType name="DATE"/>
        <AttributeType name="ALIAS"/>
        <attribute type="ALIAS" required="yes"/>
        <attribute type="DATE" required="yes"/>
        <attribute type="KEYWORDS"/>
        <element type="DESCRIPTION" maxOccurs="*" minOccurs="1"/>
        <element type="BUG" maxOccurs="*" minOccurs="0"/>
    </ElementType>

    <ElementType name="BUG" content="textOnly" model="closed">
        <AttributeType name="RESOLUTION" dt:type="enumeration" dt:values="APPHELP PROFILES"/>
        <AttributeType name="NUMBER" dt:type="int"/>
        <AttributeType name="DATABASE" dt:type="enumeration" dt:values="WIN2K WHISTLER WINSE"/>
        <attribute type="NUMBER" required="yes"/>
        <attribute type="DATABASE" required="yes"/>
        <attribute type="RESOLUTION"/>
    </ElementType>

    <ElementType name="DESCRIPTION" content="textOnly" model="closed"/>

</Schema>
