# Die Dokumenttyp-Deklaration

| Interne und externe DTDs Dokumenttyp-Deklaration mit interner DTD Dokumenttyp-Deklaration mit externer DTD

## Interne und externe DTDs

Die Dokumenttyp-Deklaration dient dazu, den Bezug zu einer Document Type Definition (DTD) herzustellen.

Dabei gibt es zwei Möglichkeiten. Entweder Sie definieren die DTD-Regeln innerhalb der Dokumenttyp-Deklaration ( Dokumenttyp-Deklaration mit interner DTD), oder Sie geben eine separate Datei an, in der diese Regeln definiert sind ( Dokumenttyp-Deklaration mit externer DTD). Eine externe DTD können Sie lokal adressieren, sofern sich die DTD-Datei auf dem gleichen Rechner(system) befindet wie die Daten. Die externe DTD kann sich jedoch auch auf einem anderen Rechner im Internet befinden. Dann können Sie die DTD mit einem URI adressieren.

## Dokumenttyp-Deklaration mit interner DTD

Die Dokumenttyp-Deklaration muss zu Beginn einer XML-Datei hinter der XML-Deklaration (`<?xml...?>`) folgen. Die internen DTD-Definitionen notieren Sie innerhalb der Dokumenttyp-Deklaration.

### Beispiel:

    <?xml version="1.0"?>
    <!DOCTYPE Gruss [
      <!ELEMENT Gruss (#PCDATA)>
    ]>
    <Gruss>Hallo Jupiter!</Gruss>

### Erläuterung:

Die Dokumenttyp-Deklaration beginnt mit `<!DOCTYPE`. Dahinter folgt, durch Leerraum getrennt, der Name des Dokumenttyps - im Beispiel `Gruss`. Der Name des Dokumenttyps muss mit dem Namen des Dokument-Elements, also dem äußersten Element in der XML Datei, identisch sein. Die DTD notieren Sie hinter dem Namen des Dokumenttyps in eckigen Klammern. Die Definitionen können sich über mehrere Zeilen erstrecken. Am Ende muss eine schließende eckige Klammer stehen und das abschließende `>` der Dokumenttyp-Deklaration. Im Anschluss daran können Daten entsprechend der DTD notiert werden.

Zur Syntax von DTD-Definitionen siehe Dokumenttyp-Definitionen (DTDs).

### Beachten Sie:

Netscape, Opera, Firefox und Safari nehmen zwar von der internen DTD notiz, beachten aber dessen Angaben bis auf wenige Ausnahmen nicht.

## Dokumenttyp-Deklaration mit externer DTD

Die Dokumenttyp-Deklaration muss auch hier zu Beginn einer XML-Datei hinter der XML-Deklaration (`<?xml...?>`) folgen. Innerhalb der Dokumenttyp-Deklaration notieren Sie die Referenz zu der Datei mit den DTD-Definitionen.

### Beispiele für Dokumenttyp-Deklaration mit externer DTD

    <?xml version="1.0"?>
    <!DOCTYPE EMail SYSTEM "../src/email.dtd">

    <?xml version="1.0"?>
    <!DOCTYPE EMail SYSTEM "http://www.example.org/xmlvorlagen/email.dtd">

    <?xml version="1.0"?>
    <!DOCTYPE EMail PUBLIC "-//MeineFirma Solutions//DTD EMail V 1.0//DE"
      "http://www.example.org/dtds/email.dtd">

### Erläuterung

Die Dokumenttyp-Deklaration beginnt mit `<!DOCTYPE`. Dahinter folgt, durch Leerraum getrennt, der Name des Dokumenttyps - in allen drei obigen Beispielen `EMail`. Die nächste Angabe in den drei obigen Beispielen lautet entweder `SYSTEM` oder `PUBLIC`. Eine dieser beiden Angaben ist nötig, wenn sich die DTD-Definitionen in einer separaten Datei befinden. Verwenden Sie `SYSTEM`, wenn Sie den Speicherort der DTD explizit angeben, sei es auf dem eigenen Rechnersystem oder auf einem entfernten Rechner im Internet. Die ersten beiden der obigen Beispiele zeigen entsprechende Adressierungen. Verwenden Sie dagegen `PUBLIC`, wenn Sie den Speicherort der Datei mit den DTD-Definitionen nicht explizit, sondern durch einen so genannten öffentlichen Bezeichner (public identifier) angeben. Solche Angaben zu einem öffentlichen Bezeichner bestehen aus drei Teilen: erstens der Angabe zur veröffentlichenden Person oder Institution, zweitens einer Bezeichnung der DTD, beginnend mit `DTD`, gefolgt vom Namen der DTD und einer Versionsangabe, und drittens aus einer Angabe zur Sprache, in der die Namen der Elemente, Attribute usw. in der DTD definiert sind. `DE` steht für deutsch, `EN` für englisch usw. Hinter der Angabe zum öffentlichen Bezeichner kann dann noch - wie im obigen Beispiel - die Internet-Adresse mit dem tatsächlichen Speicherort der DTD folgen. Öffentliche Bezeichner sind für den Fall gedacht, dass der verarbeitende XML-Parser keine Möglichkeit hat, auf die entfernte DTD zuzugreifen (z.B. weil keine Internet-Verbindung besteht). Eine echte Gültigkeitsprüfung gegen die DTD ist in einem solchen Fall natürlich nur möglich, wenn der Parser die Regeln der DTD "kennt".

DTD-Dateien haben üblicherweise die Endung `.dtd`. Bei der Adressierung gelten die gleichen Regeln wie beim Referenzieren in HTML.

### Beachten Sie:

Netscape, Opera, Firefox und Safari nehmen zwar von der externen DTD Notiz, beachten aber dessen Angaben bis auf wenige Ausnahmen nicht.

| Regeln für Tags, Attribute, Wertzuweisungen und Kommentare
| XML-Deklaration und Verarbeitungsanweisungen

© 2007 Impressum