<!ELEMENT quiz ( (text|question|pickOneQuestion|shuffle|noshuffle)+)>
<!ELEMENT pickOneQuestion ( question+ ) >
<!ELEMENT shuffle ( (text|question|pickOneQuestion|shuffle|noshuffle)+) >
<!ELEMENT noshuffle ( (text|question|pickOneQuestion|shuffle|noshuffle)+) >
<!ELEMENT question (text*, p*, showAnswer?, forLoopMultipleChoice?, linkedList?, 
   fillInTheBlankQuestion?, multipleChoice?, passByValRef?)>
<!ELEMENT choice (#PCDATA|code|pre)* >
<!ATTLIST choice answer (true|false) #IMPLIED>
<!ELEMENT code (#PCDATA) >
<!ELEMENT codeSample (#PCDATA)>
<!ATTLIST codeSample filename CDATA #IMPLIED>
<!ELEMENT url (#PCDATA)>
<!ATTLIST url num (true|false) #IMPLIED>
<!ELEMENT fillInTheBlankQuestion (text*, url*, showAnswer*)>
<!ELEMENT forLoopMultipleChoice EMPTY>
<!ELEMENT linkedList EMPTY>
<!ATTLIST linkedList filename CDATA #REQUIRED>
<!ATTLIST linkedList num (true|false) #REQUIRED>
<!ELEMENT multipleChoice (choice+)>
<!ATTLIST multipleChoice shuffleChoices (true|false) #IMPLIED>
<!ELEMENT p (#PCDATA|code|pre)*>
<!ELEMENT pre (#PCDATA) >
<!ELEMENT passByValRef EMPTY>
<!ELEMENT showAnswer EMPTY>
<!ELEMENT text (p|pre)*>