<!-- LEXICON DTD -->
<!ELEMENT lexicon (lexeme)+>
               
<!-- LEXEME -->
<!ELEMENT lexeme (concat|alt|cstring|cclass|cuniversal|bol|eol)>
<!ATTLIST lexeme symbol      CDATA    #IMPLIED>

<!-- CONCATENATION -->
<!ELEMENT concat (concat|alt|cstring|cclass|cuniversal|bol|eol)+>
<!ATTLIST concat minOccurs CDATA "1"
                 maxOccurs CDATA "1">

<!-- ALTERNATION -->
<!ELEMENT alt (concat|alt|cstring|cclass|cuniversal|bol|eol)+>
<!ATTLIST alt minOccurs CDATA "1"
              maxOccurs CDATA "1">

<!-- CHARACTER STRING -->
<!ELEMENT cstring EMPTY>
<!ATTLIST cstring content CDATA    #REQUIRED
                  minOccurs CDATA "1"
                  maxOccurs CDATA "1">

<!-- UNIVERSAL CHARACTER -->
<!ELEMENT cuniversal EMPTY>
<!ATTLIST cuniversal minOccurs CDATA "1"
                     maxOccurs CDATA "1">

<!-- CHARACTER CLASS -->
<!ELEMENT cclass (cset|cinterval)+>
<!ATTLIST cclass exclusive (true|false) "false"
                 minOccurs CDATA "1"
                 maxOccurs CDATA "1">

<!-- CHARACTER SET  -->
<!ELEMENT cset EMPTY>   
<!ATTLIST cset content  CDATA #REQUIRED>

<!-- CHARACTER INTERVALL -->
<!ELEMENT cinterval EMPTY>   
<!ATTLIST cinterval min  CDATA #REQUIRED
                    max  CDATA #REQUIRED>



