Das vorangegangene Beispiel können Sie auch als interne DTD realisieren. Sowohl DTD-Definition als auch der Quelltext der XML-Datei werden dazu in ein Dokument gepackt.
<?xml version="1.0" encoding="UTF-8"?>
<!-- Dann folgt die interne DTD -->
<!DOCTYPE adresse [
<!ELEMENT adresse (vorname, nachname, strasse, plz, ort)>
<!ELEMENT vorname (#PCDATA)>
<!ELEMENT nachname (#PCDATA)>
<!ELEMENT strasse (#PCDATA)>
<!ELEMENT plz (#PCDATA)>
<!ELEMENT ort (#PCDATA)>
]>
<!-- Hier beginnt der Textkörper -->
<adresse>
<vorname> Hans </vorname>
<nachname> Mustermann </nachname>
<strasse> Musterweg 1 </strasse>
<plz> 12345 </plz>
<ort> Musterstadt </ort>
</adresse>
Der einzigste Unterschied ist, dass innerhalb der «!DOCTYPE»-Anweisung nicht über «SYSTEM "adressen.dtd"» eine externe DTD eingebunden wurde. Dafür wurde innerhalb der eckigen Klammern die DTD eingesetzt.
<!DOCTYPE adresse [ die DTD-Anweisungen]>
»