<!ELEMENT kvtml         (information, identifiers, tenses?, entries, tenses?, lessons?, wordtypes?)     >
<!ATTLIST kvtml version    CDATA  #REQUIRED>

<!ELEMENT information    (generator?, title, author?, license?, comment?, category?) >

<!ELEMENT generator      (#PCDATA) >
<!ELEMENT title          (#PCDATA) >
<!ELEMENT author         (#PCDATA) >
<!ELEMENT license        (#PCDATA) >
<!ELEMENT comment        (#PCDATA) >
<!ELEMENT category       (#PCDATA) >

<!ELEMENT identifiers    (identifier*) >
<!ELEMENT identifier     (identifiertype?, name?, locale, comment?, sizehint?, article?, personalpronouns?) >
<!ATTLIST identifier id  CDATA  #REQUIRED>

<!ELEMENT identifiertype (#PCDATA) >
<!ELEMENT locale         (#PCDATA) >
<!ELEMENT name           (#PCDATA) >
<!ELEMENT sizehint       (#PCDATA) >
<!ELEMENT article        (definite?, indefinite?) >
<!ELEMENT definite       (male?, female?, neutral?) >
<!ELEMENT indefinite     (male?, female?, neutral?) >
<!ELEMENT male           (#PCDATA) >
<!ELEMENT female         (#PCDATA) >
<!ELEMENT neutral        (#PCDATA) >
<!ELEMENT personalpronouns (singular?, dual?, plural?, tense?) >
<!ELEMENT singular       (firstperson?, secondperson?, thirdpersonmale?, thirdpersonfemale?, thirdpersonneutralcommon?) >
<!ELEMENT dual           (firstperson?, secondperson?, thirdpersonmale?, thirdpersonfemale?, thirdpersonneutralcommon?) >
<!ELEMENT plural         (firstperson?, secondperson?, thirdpersonmale?, thirdpersonfemale?, thirdpersonneutralcommon?) >
<!ELEMENT firstperson              (#PCDATA) >
<!ELEMENT secondperson             (#PCDATA) >
<!ELEMENT thirdpersonmale          (#PCDATA) >
<!ELEMENT thirdpersonfemale        (#PCDATA) >
<!ELEMENT thirdpersonneutralcommon (#PCDATA) >


<!ELEMENT tenses         (tense*) >
<!ELEMENT tense          (#PCDATA) >

<!ELEMENT lessons        (container*) >
<!ELEMENT wordtypes      (container*) >
<!ELEMENT leitnerboxes   (container*) >

<!ELEMENT container      (name, specialwordtype?, inpractice?, image?, container*, containerentry*) >
<!ELEMENT specialwordtype  (#PCDATA) >
<!--ELEMENT specialwordtype  (noun|noun/male|noun/female|noun/neutral|verb|adjective|adverb) -->
<!ELEMENT inpractice                (#PCDATA) >
<!ELEMENT containerentry            (containertranslation*) >
<!ATTLIST containerentry id         CDATA  #REQUIRED>
<!ELEMENT containertranslation      EMPTY>
<!ATTLIST containertranslation id   CDATA  #REQUIRED>

<!ELEMENT entries        (entry*) >
<!ELEMENT entry          (deactivated?, sizehint?, translation*) >
<!ATTLIST entry id       CDATA  #REQUIRED>
<!ELEMENT deactivated    (#PCDATA) >

<!ELEMENT translation    (text?, comment?, pronunciation?, falsefriend?, antonym?, synonym?, example?, paraphrase?, comparison?, conjugation*, grade?, image?, multiplechoice?, sound?) >
<!ATTLIST translation id  CDATA #REQUIRED >
<!ELEMENT text           (#PCDATA) >
<!ELEMENT pronunciation  (#PCDATA) >
<!ELEMENT falsefriend    (#PCDATA) >
<!ATTLIST falsefriend fromid    CDATA  #REQUIRED>
<!ELEMENT antonym        (#PCDATA) >
<!ELEMENT synonym        (#PCDATA) >
<!ELEMENT example        (#PCDATA) >
<!ELEMENT paraphrase     (#PCDATA) >

<!ELEMENT conjugation    (tense, singular?, dual?, plural?) >

<!ELEMENT comparison     (absolute, comparative, superlative) >
<!ELEMENT absolute       (#PCDATA) >
<!ELEMENT comparative    (#PCDATA) >
<!ELEMENT superlative    (#PCDATA) >

<!ELEMENT multiplechoice  (choice+) >
<!ELEMENT choice          (#PCDATA) >

<!ELEMENT image          (#PCDATA) >
<!ELEMENT sound          (#PCDATA) >

<!ELEMENT grade          (currentgrade, count, errorcount, date) >
<!ATTLIST grade fromid   CDATA #REQUIRED >
<!ELEMENT currentgrade  (#PCDATA) >
<!ELEMENT count          (#PCDATA) >
<!ELEMENT errorcount     (#PCDATA) >
<!ELEMENT date           (#PCDATA) >

