| # Wohlgeformtheit, Gültigkeit und Vollständigkeit einer XML-Datei
| Wohlgeformtheit eines XML-Dokuments Gültigkeit eines XML-Dokuments / vollständiges XML-Dokument

## Wohlgeformtheit eines XML-Dokuments

Der Begriff "Wohlgeformtheit", der Ihnen im Zusammenhang mit XML immer wieder begegnen wird, bedeutet, dass eine Datei die Regeln von XML korrekt einhält.

### Beispiel einer wohlgeformten XML-Datei:

    <?xml version="1.0"?>
    <Dialog>
      <Adam Emotion="heftig">ich liebe dich!</Adam>
      <Eva Emotion="heftig">ich dich auch!</Eva>
    </Dialog>

### Erläuterung:

Es handelt sich aus folgenden Gründen um eine wohlgeformte XML-Datei:

- am Beginn steht die XML-Deklaration, die den Bezug zu XML herstellt.
- Es gibt mindestens ein Datenelement (im Beispiel sind es drei: `<Dialog>...</Dialog>`, `<Adam>...</Adam>` und `<Eva>...</Eva>`)
- Es gibt bei den Datenelementen ein äußerstes Element (auch als Dokument-Element bezeichnet), das alle anderen Datenelemente enthält (im Beispiel: `<Dialog>...</Dialog>`).

Was jedoch fehlt, ist der Bezug zu einer DTD, in der die verwendeten Elemente definiert sind. Deshalb kann man über das Beispiel sagen, es ist wohlgeformt, aber nicht gültig.

### Beachten Sie:

Elemente in wohlgeformten, aber nicht gültigen XML-Dateien können beliebigen Inhalt haben. So ist es problemlos möglich, so etwas wie `<Adam>ich <betont>liebe</betont> dich</Adam>` zu notieren. Wichtig ist nur, dass die Elemente korrekt verschachtelt sind, d.h. in der umgekehrten Reihenfolge beendet werden, in der sie geöffnet werden, und dass die übrigen Regeln für Tags, Attribute, Wertzuweisungen und Kommentare eingehalten werden. Elemente können auch beliebig oft vorkommen. Einschränkende Regeln gibt es nur, wenn auf eine DTD Bezug genommen wird, in der solche Einschränkungen bei der Elementdefinition angegeben sind.

## Gültigkeit eines XML-Dokuments / vollständiges XML-Dokument

Ein gültiges XML-Dokument enthält zu Beginn eine XML-Deklaration und anschließend eine Dokumenttyp-Deklaration, in der entweder eine externe DTD-Datei oder intern die nötigen DTD-Regeln angegeben werden. Man kann also sagen, ein gültiges XML-Dokument ist wohlgeformt und außerdem noch validierbar, also gegen die in einer DTD definierten Regeln überprüfbar.

### Beispiel einer gültigen und vollständigen XML-Datei:

    <?xml version="1.0"?>
    <!DOCTYPE quelle [
      <!ELEMENT quelle (adresse, beschreibung)>
      <!ELEMENT adresse (#PCDATA)>
      <!ELEMENT beschreibung (#PCDATA)>
    ]>
    <quelle>
      <adresse>http://www.willy-online.de/</adresse>
      <beschreibung>alles zum wichtigsten Teil am Manne</beschreibung>
    </quelle>

### Erläuterung:

Das Beispiel startet mit der üblichen XML-Deklaration. Danach folgt eine Dokumenttyp-Deklaration mit internen DTD-Regeln. Genausogut könnte an dieser Stelle auch eine Dokumenttyp-Deklaration stehen, die auf eine externe DTD verweist. Definiert wird im Beispiel ein Dokumenttyp namens `quelle` mit dem gleichnamigen Dokument-Element `quelle` und zwei davon abhängigen Elementen `adresse` und `beschreibung`. Zur genauen Syntax von DTD-Definitionen siehe Dokumenttyp-Definitionen (DTDs).

Im Anschluss an die Dokumenttyp-Deklaration folgen die Daten. Der Name des Dokumenttyps, im Beispiel `quelle`, muss gleich dem Namen des Dokument-Elements sein. Das Dokument-Element ist das äußerste Element in der Hierarchie, dem alle anderen Elemente untergeordnet sind. Im Beispiel ist der gesamte Datenbereich in `<quelle>...</quelle>` eingeschlossen.

Innerhalb des Dokument-Elements werden die Daten nach den Regeln notiert, die von der DTD vorgegeben werden. Im Beispiel wurden im DTD-Bereich die beiden Elemente `adresse` und `beschreibung` als innere Elemente des Dokument-Elements `quelle` definiert. Im Datenbereich spiegelt sich das wider durch die Notationen `<adresse>...</adresse>` und `<beschreibung>...</beschreibung>`. Der DTD-Bereich im Beispiel erlaubt nichts anderes als die einmalige Verwendung dieser beiden Elemente.

Das Beispiel erfüllt damit alle Kriterien einer gültigen und vollständigen XML-Datei.

| Baumstruktur und Knoten einer XML-Datei
| Regeln für Tags, Attribute, Wertzuweisungen und Kommentare

© 2007 Impressum