SELFHTML: XML / Dokumenttyp-Definitionen (DTDs) / Bearbeitungsregeln für DTDs
Author: Redaktion SELFHTML, selfhtml81@selfhtml.org
Description: Welche grundsätzlichen Bearbeitungsregeln beim Erstellen eigener XML-DTDs zu beachten sind.
Keywords: SELFHTML, XML, DTD, DTDs, Document Type Definition, Dokumenttyp-Definitionen
Date: 2005-08-22T21:21:39+02:00

| # Bearbeitungsregeln für DTDs
| Regeln beim Editieren Regeln für Namen Kommentare Bedingte Abschnitte

## Regeln beim Editieren

DTDs sind reine Textdateien und können mit normalen Texteditoren erstellt und bearbeitet werden. Es gibt allerdings auch XML-Editoren (siehe Links: XML-Software im Link-Verzeichnis des Online-Angebots von SELFHTML aktuell), die bei der Arbeit unterstützen, indem sie die definierten Datenstrukturen übersichtlich darstellen, z.B. als Baumstruktur. Ungeeignet zur Erstellung von DTDs sind Textverarbeitungsprogramme, die formatierten Text in eigenen Dateiformaten abspeichern.

Beim Editieren sind Sie ähnlich frei wie bei HTML. Die drei folgenden Beispiele zeigen ein und dieselbe Definition, jedoch ganz unterschiedlich formatiert.

### Beispielformatierungen:

    <!ELEMENT text (#PCDATA) >
    <!ELEMENT nummer (#PCDATA) >

    <!ELEMENT          text            (#PCDATA)       >
    <!ELEMENT          nummer          (#PCDATA)       >

    <!ELEMENT
      text
      (#PCDATA)
    >
    <!ELEMENT
      nummer
      (#PCDATA)
    >

### Erläuterung:

Formatieren Sie die Inhalte, wenn Sie die DTD direkt mit einem Texteditor bearbeiten, so, dass Sie die optimale Übersicht behalten. Zur optischen Trennung von Inhalten sind Leerzeichen, Tabulator-Zeichen und Zeilenumbrüche erlaubt (auch die Windows-typische Kombination aus "Wagenrücklauf+Zeilenumbruch", in der Datei gespeichert in Form der Steuerzeichen mit den Werten `13` und `10` (hexadezimal `xD` und `xA`).

Erlaubt sind in einer DTD ausschließlich DTD-gerechte Inhalte. Sonstige Daten sind nur in Form von Kommentaren erlaubt.

## Regeln für Namen

Diese Regeln gelten bei der Namensvergabe für Elemente, für Attribute und für Entities.

Namen dürfen enthalten:

- Buchstaben (groß und klein)
- Ziffern `0` bis `9`
- Interpunktionszeichen `_` (Unterstrich), `-` (einfacher Bindestrich), `.` (Punkt) und `:` (Doppelpunkt) - der Doppelpunkt ist jedoch reserviert für Namensräume

Das erste Zeichen eines Namens darf keine Ziffer sein, es muss ein Buchstabe oder eines der erlaubten Interpunktionszeichen sein. In der Praxis sollte das erste Zeichen möglichst immer ein Buchstabe, allenfalls ein Unterstrich sein.

Namen dürfen keine Leerzeichen enthalten.

Unter "Buchstabe" versteht die XML-Spezifikation einen sehr weiten Bereich des gesamten Unicode-Systems, und auch unter "Ziffer" ist mehr erlaubt als die arabischen Ziffern unseres Dezimalsystems. In der Praxis und in Rücksicht auf gewöhnliche Parser ist jedoch zu empfehlen, sich auf die ASCII-Buchstaben `A` bis `Z` bzw. `a` bis `z` und die 10 bei uns gebräuchlichen Ziffern zu beschränken und auf andere Zeichen zu verzichten, auch auf deutsche Umlaute oder Sonderzeichen anderer Sprachen.

Namen dürfen nicht mit der Zeichenfolge `xml` (oder `XML`) beginnen, da diese Zeichenfolge für künftige Weiterentwicklungen von XML reserviert ist.

Namen müssen aus mindestens einem Buchstaben bzw. Unterstrich bestehen. Über die erlaubte Maximallänge von Namen gibt es keine unmittelbaren Aussagen. Die erlaubte Länge eines Tags ist in der SGML-Deklaration für XML jedoch mit 99999999 Zeichen angegeben, was für "unbegrenzt" steht.

Beispiele für unproblematische Namen sind:
`Anschrift`
`hausnummer`
`plz_ort`
`telefon.durchwahl`
`ZiNr`
`AKZ`
`a1`

## Kommentare

Innerhalb von DTDs sind Kommentare erlaubt. Dabei gilt die gleiche Syntax, die aus HTML bekannt ist.

### Beispiel:

    <!ELEMENT bznr (#PCDATA)>
    <!-- Im Element "bznr" wird die Bezugsnummer gespeichert -->

### Erläuterung:

Kommentare werden durch die Zeichenfolge `<!--` eingeleitet und durch die Zeichenfolge `-->` abgeschlossen. Dazwischen darf beliebig viel Inhalt stehen, auch über mehrere Zeilen. Ein Parser ignoriert die entsprechenden Abschnitte.

Achten Sie darauf, innerhalb von Kommentaren nicht zwei Bindestriche `--` hintereinander zu notieren.

## Bedingte Abschnitte

Beim Entwurf größerer DTDs kann es sinnvoll sein, Teile der DTD für bestimmte Zwecke auszuklammern und für andere Zwecke einzuschließen. So ist es beispielsweise denkbar, eine DTD zu entwickeln, die in zwei "Ausbaustufen" benötigt wird - einer einfachen und einer komplexen.

### Beispiel:

    <![INCLUDE[
    <!ELEMENT Vorsitzender (#PCDATA)>
    ]]>

    <![IGNORE[
    <!ELEMENT Zweitvorsitzender (#PCDATA)>
    ]]>

### Erläuterung:

Mit dem Schlüsselwort `INCLUDE` schließen Sie Definitionen ausdrücklich ein, d.h. der Parser wird diese Definitionen verarbeiten. Mit `IGNORE` schließen Sie Definitionen aus, d.h. der Parser wird diese Definitionen ignorieren und genauso wie Kommentare behandeln.

Die Definition solcher Abschnitte beginnt mit einer öffnenden spitzen Klammer `<`. Dahinter folgt unmittelbar anschließend ein Ausrufezeichen `!` und eine öffnende eckige Klammer `[`. Dahinter notieren Sie, in Großbuchstaben, das gewünschte Schlüsselwort, also `INCLUDE` oder `IGNORE`, und dahinter nochmals eine öffnende eckige Klammer. Zwischen dieser einleitenden Zeichenfolge und der beendenden, markiert durch zwei schließende eckige Klammern und ein eine schließende spitze Klammer (`]]>`), können Sie beliebig viele DTD-Definitionen notieren.

| Elemente und Verschachtelungsregeln
| Allgemeines zu DTDs

© 2007 Impressum