<!ELEMENT    GopherDemoFile      (Libraries, Demo) >

<!ELEMENT    Libraries           (Library+) >
<!ELEMENT    Library             (Function*) >
   <!ATTLIST Library
             FileName            CDATA       #REQUIRED
   >
<!ELEMENT    Function            (Parameter*) >
   <!ATTLIST Function
             Name                CDATA       #REQUIRED
   >
<!ELEMENT    Parameter           EMPTY >
   <!ATTLIST Parameter
             Name                CDATA       #REQUIRED
   >


<!ELEMENT    Demo                (Summary, Settings, Track+) >
<!ELEMENT    Summary             (Author+, Group?, ExtraInfo?) >
<!ELEMENT    Author              (#PCDATA) >
<!ELEMENT    Group               (#PCDATA) >
<!ELEMENT    ExtraInfo           (#PCDATA) >

<!ELEMENT    Settings            EMPTY >
   <!ATTLIST Settings
             RunningTime            CDATA        #REQUIRED
             UseOpenGL              (true|false) #REQUIRED
             NumberOfInputSurfaces  CDATA        #REQUIRED
             InputMusicFile         CDATA        #REQUIRED
   >

<!ELEMENT    Track               (Event+) >
<!ELEMENT    Event               (Param+) >
   <!ATTLIST Event
             LibraryFileName     CDATA       #REQUIRED
             FunctionName        CDATA       #REQUIRED
             StartTime           CDATA       #REQUIRED
             EndTime             CDATA       #REQUIRED
   >
<!ELEMENT    param               EMPTY >
   <!ATTLIST param
             start               CDATA       #REQUIRED
             end                 CDATA       #REQUIRED
   >


