XML ist, wie auch SGML eine Metasprache zur Generierung neuer Auszeichnungssprachen. Beim genauen Betrachten des HTML-Codes, kann man - jedenfalls in einigermaßen "sauberen" HTML-Dateien folgenden Eintrag finden:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">.
<!ELEMENT PLAYLIST (PLAYLISTITEM)+> <!ELEMENT PLAYLISTITEM (ARTIST, SONG, ALBUM)> <!ELEMENT ARTIST (#PCDATA)> <!ELEMENT SONG (#PCDATA)> <!ELEMENT ALBUM (#PCDATA)>Hier werden insgesamt fünf Elemente in der DTD definiert.
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE PLAYLIST SYSTEM "PLAYLIST.dtd"> <PLAYLIST> <PLAYLISTITEM> <ARTIST>Pixies</ARTIST> <SONG>Monkey gone to heaven</SONG> <ALBUM>Doolittle</ALBUM> </PLAYLISTITEM> </PLAYLIST>
Um die DTD einzubinden, wird die Document Type Deklaration benötigt. In diesem Fall:
<!DOCTYPE PLAYLIST SYSTEM "PLAYLIST.dtd">
Hier wird auf die DTD PLAYLIST referenziert, die lokal auf dem jeweiligen Server liegt, hier direkt dort, wo auch die obige XML-Instanz zu finden ist.
Allerdings könnte hier auch ein Pfad in einem Dateisystem angegeben sein oder ein URL. Beim URL allerdings lautet die Deklaration ein wenig anders, hier wird der Bezeichner PUBLIC verwendet:
<!DOCTYPE PLAYLIST PUBLIC "http://www.jcpohl.de/tr/PLAYLIST.dtd">
Empty-Elemente, also leere Elemente, werden mit dem Schlüsselwort EMPTY deklariert:
<!ELEMENT STATION EMPTY> in der XML-Instanz: <STATION />
Diese Elemente bekommen oftmals erst durch das Hinzufügen von Attributen einen etwas tieferen Sinn, aber darüber mehr im nächsten Teil.
Ein Element mit dem Bezeichner ANY, dürfte überall und an jeder Stelle in der XML-Instanz vorkommen:
<!ELEMENT ICHGEHÖREÜBERALLUNDNIRGENDSHIN ANY>