<?xml version="1.0" encoding="UTF-8"?>

<!-- include the Product Common DTD to define required UI elements -->
<!ENTITY % ProductCommonDTD SYSTEM "ProductCommon.dtd">
%ProductCommonDTD;

<!ELEMENT SapSetup ((Product*, Component*)|Package+)>

<!ATTLIST SapSetup
        Context CDATA #REQUIRED
        WkstaDb CDATA #IMPLIED
>
<!ELEMENT Product ((Prerequisite|UI|Contains|Requires|Excludes|AttachedProduct)*)>
<!ATTLIST Product
        Name CDATA #REQUIRED
        Description CDATA #IMPLIED
        Guid CDATA #REQUIRED
        WkstaDb CDATA #IMPLIED
        Condition CDATA #IMPLIED
        ConditionFailureText CDATA #IMPLIED
        Visible (true | false) #IMPLIED
        ProdVersion CDATA #REQUIRED
        PatchLevel CDATA #IMPLIED
        CmdLine CDATA #REQUIRED
        Selected (true | false) #IMPLIED
        MasterNode (true | false) #IMPLIED
        UIOnly (true | false) #IMPLIED
        Arch (X64|X86Only) #IMPLIED
>
<!ELEMENT Excludes EMPTY>
<!ATTLIST Excludes
        Guid CDATA #REQUIRED
        Name CDATA #IMPLIED
>
<!ELEMENT Contains (Contains* | Requires* | Excludes*)*>
<!ATTLIST Contains
        Guid CDATA #REQUIRED
        Name CDATA #IMPLIED
        Description CDATA #IMPLIED
        Condition CDATA #IMPLIED
        ConditionFailureText CDATA #IMPLIED
        Selected (true | false) #IMPLIED
        UIOnly (true | false) #IMPLIED
        Visible (true | false) #IMPLIED
>

<!ELEMENT FileAction (Condition?, SourceDir, TargetDir, File+)>
<!ELEMENT SourceDir (#PCDATA)>
<!ELEMENT TargetDir (#PCDATA)>
<!ELEMENT File EMPTY>
<!ATTLIST File
        Debug (true | false) #IMPLIED
        Name CDATA #REQUIRED
        TargetName CDATA #IMPLIED
>

<!ELEMENT Package (Event*,Variable*,Product+)>
<!ATTLIST Package
        Name CDATA #REQUIRED
        Description CDATA #IMPLIED
        Guid CDATA #REQUIRED
        CmdLine CDATA #REQUIRED
        Selected (true | false) #IMPLIED
        Version CDATA #REQUIRED
        Condition CDATA #IMPLIED
        ConditionFailureText CDATA #IMPLIED
>
<!ELEMENT Variable (Value)>
<!ATTLIST Variable
        Name CDATA #REQUIRED
        Description CDATA #IMPLIED
>
<!ELEMENT Value (#PCDATA)>
