<!-- For explanations see http://www.freedesktop.org/standards/menu/draft/menu-spec/ -->
<!ELEMENT Menu (
        Name, (
          Directory
        | DefaultAppDirs
        | AppDir
        | DefaultDirectoryDirs
        | DirectoryDir
        | LegacyDir
        | KDELegacyDirs
        | MergeFile
        | DefaultMergeDirs
        | MergeDir
        | OnlyUnallocated
        | NotOnlyUnallocated
        | Deleted
        | NotDeleted
        | Include
        | Exclude
        | Move
        | Menu
        | Layout
        | DefaultLayout
        )*
)>

<!ELEMENT Name (#PCDATA)>

<!ELEMENT Directory (#PCDATA)>

<!ELEMENT DefaultAppDirs EMPTY>
<!ELEMENT AppDir         (#PCDATA)>

<!ELEMENT DefaultDirectoryDirs EMPTY>
<!ELEMENT DirectoryDir         (#PCDATA)>

<!ELEMENT LegacyDir     (#PCDATA)>
<!ATTLIST LegacyDir     prefix CDATA #IMPLIED>
<!ELEMENT KDELegacyDirs EMPTY>

<!ELEMENT MergeFile        (#PCDATA)>
<!ELEMENT DefaultMergeDirs EMPTY>
<!ELEMENT MergeDir         (#PCDATA)>

<!ELEMENT OnlyUnallocated    EMPTY>
<!ELEMENT NotOnlyUnallocated EMPTY>

<!ELEMENT Deleted    EMPTY>
<!ELEMENT NotDeleted EMPTY>

<!ELEMENT Exclude  ((Category|Filename|And|Or|Not)*)> 
<!ELEMENT Include  ((Category|Filename|And|Or|Not)*)>

<!ELEMENT And      ((Category|Filename|And|Or|Not)*)>
<!ELEMENT Or       ((Category|Filename|And|Or|Not)*)>
<!ELEMENT Not      ((Category|Filename|And|Or|Not)*)>
<!ELEMENT Filename (#PCDATA)>
<!ELEMENT Category (#PCDATA)>

<!ELEMENT Move ((Old,New)*)>
<!ELEMENT Old  (#PCDATA)>
<!ELEMENT New  (#PCDATA)>

<!ELEMENT Layout ((Filename|Menuname|Separator|Merge)*)>
<!ELEMENT DefaultLayout ((Filename|Menuname|Separator|Merge)*)>
<!ATTLIST DefaultLayout show_empty (true|false) #IMPLIED>
<!ATTLIST DefaultLayout inline (true|false) #IMPLIED>
<!ATTLIST DefaultLayout inline_limit CDATA #IMPLIED>
<!ATTLIST DefaultLayout inline_header (true|false) #IMPLIED>
<!ATTLIST DefaultLayout inline_alias (true|false) #IMPLIED>

<!ELEMENT Menuname (#PCDATA)>
<!ATTLIST Menuname inline (true|false) #IMPLIED>
<!ATTLIST Menuname inline_limit CDATA #IMPLIED>
<!ATTLIST Menuname inline_header (true|false) #IMPLIED>
<!ATTLIST Menuname inline_alias (true|false) #IMPLIED>

<!ELEMENT Separator EMPTY>

<!ELEMENT Merge EMPTY>
<!ATTLIST Merge type (menus|files|all) #REQUIRED>