Dokument-Typ-Definition (DTD)

Eine DTD legt die Struktur eines XML-Dokuments fest.

Beispiel

<?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
>

Syntax

Nicht-Terminal Terminale Kommentar
dtd = *( entity / element / attlist / comment)
entity = <!ENTITY name [ SYSTEM / PUBLIC ] qstring >
element = <!ELEMENT name content >
attlist = <!ATTLIST name *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
/ #FIXED qstring genau dieser Wert
/ qstring optional mit default
qstring = DQUOTE *CHAR DQUOTE
name = ALPHA *( ALPHA / DIGIT / _ / - / : )