Eduction Grammar DTD

The XML DTD describing the Eduction grammar (that is, edk.dtd) is as follows:

<!ELEMENT grammars (include*, grammar*)>
<!ATTLIST grammars
version CDATA #IMPLIED
case (sensitive|insensitive|inherited) "inherited"
debug (true|false) "false"
>
<!ELEMENT include (publish*)>
<!ATTLIST include
path CDATA #REQUIRED
type (private|public) "public"
>
<!ELEMENT publish EMPTY>
<!ATTLIST publish
name CDATA #IMPLIED
>
<!ELEMENT grammar (extern*,entity+)>
<!ATTLIST grammar
name CDATA #REQUIRED
case (sensitive|insensitive|inherited) "inherited"
extend (append|replace|disallow) "disallow"
debug (true|false|inherited) "inherited"
>
<!ELEMENT extern EMPTY>
<!ATTLIST extern
name CDATA #REQUIRED
>
<!ELEMENT entity (entry*,pattern*)+>
<!ATTLIST entity
name CDATA #REQUIRED
type (private|public) "private"
case (sensitive|insensitive|inherited) "inherited"
extend (append|replace|disallow) "disallow"
debug (true|false|inherited) "inherited"
>
<!ELEMENT entry (headword?,synonym*)>
<!ATTLIST entry
headword CDATA #IMPLIED
score CDATA "1"
case (sensitive|insensitive|inherited) "inherited"
debug (true|false|inherited) "inherited"
>
<!ELEMENT headword (#PCDATA)>
<!ATTLIST headword
score CDATA "1"
case (sensitive|insensitive|inherited) "inherited"
>
<!ELEMENT synonym (#PCDATA)>
<!ATTLIST synonym
case (sensitive|insensitive|inherited) "inherited"
>
<!ELEMENT pattern (#PCDATA)>
<!ATTLIST pattern
score CDATA "1"
case (sensitive|insensitive|inherited) "inherited"
replace CDATA #IMPLIED
insert_before CDATA #IMPLIED
insert_after CDATA #IMPLIED
>