Eine DTD (Dokumenttypdefinition) ist eine Beschreibung eines XML-Dokuments. Sie wurde zusammen mit XML standardisiert, zu einem Zeitpunkt, an dem XML noch hauptsächlich für "erzählende Dokumente" gedacht war, weniger als Datenaustauschformat. Daher ist es z. B. in DTD nicht möglich, zwischen Texten und Zahlen zu unterscheiden. Ein weiterer Nachteil ist die Tatsache, dass die DTD in einer eigenen Sprache abgefasst werden muss. Außerdem kennt die DTD keine Namensräume?.
In einer DTD werden Elemente, Attribute? von Elementen und Entitäten? definiert. In bestimmten SGML-Deklarationen werden Besonderheiten der Syntax-Verwendung vorgegeben, beispielsweise Abkürzungen oder lokale Umdefinitionen von Zeichen. Konkret heißt das, dass in einer DTD die Reihenfolge und die Verschachtelung der Elemente und die Art des Inhalts von Attributen festgelegt wird.
Beispiel
xml-mit-dtd.xml
<?xml version="1.0" standalone="yes"?>
<!DOCTYPE hallo [
<!ELEMENT hallo (#PCDATA)>
]>
<hallo>Hallo Welt!</hallo>