Eine DTD legt die Struktur eines XML-Dokuments fest.
<?xml version="1.0"?>
<!ELEMENT article (title, section*)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT section (title, para*)>
<!ELEMENT para (#PCDATA)>
<!ATTLIST para
label ID #IMPLIED
class CDATA; #IMPLIED
>
| Nicht-Terminal | Terminale | Kommentar | |
| dtd | = | *( entity / element / attlist / comment) | |
| entity | = | <!ENTITYname [ SYSTEM/ PUBLIC] qstring > | |
| element | = | <!ELEMENTname content > | |
| attlist | = | <!ATTLISTname *attribute > | |
| comment | = | <!--string --> | |
| content | = | name | Genau dieses Element |
| / | EMPTY | Keine Kindelemente | |
| / | ANY | Beliebige Kindelemente | |
| / | #PCDATA | Beliebige Textknoten | |
| / | content ? | Kein oder ein Kindelement | |
| / | content * | Kein oder mehr Kindelemente | |
| / | content + | Ein oder mehr Kindelemente | |
| / | content ,content | Liste | |
| / | content |content | Alternative | |
| / | (content ) | Gruppierung | |
| attribute | = | name type value | |
| type | = | CDATA | |
| / | ID | ||
| / | IDREF | ||
| / | IDREFS | ||
| / | NMTOKEN | ||
| / | NMTOKENS | ||
| / | ENTITY | ||
| / | ENTITIES | ||
| / | NOTATION | ||
| / | NOTATIONS | ||
| value | = | #REQUIRED | verpflichtend |
| / | #IMPLIED | optional | |
| / | #FIXEDqstring | genau dieser Wert | |
| / | qstring | optional mit default | |
| qstring | = | DQUOTE *CHAR DQUOTE | |
| name | = | ALPHA *( ALPHA / DIGIT / _/ -/ :) |