Die XML-Deklaration

(Auszug aus "XML in a Nutshell" von Elliotte Rusty Harold & W. Scott Means)

XML-Dokumente sollten mit einer XML-Deklaration beginnen, sie müssen es jedoch nicht. Die XML-Deklaration sieht wie eine Verarbeitungsanweisung mit dem Namen xml und den Pseudo-Attributen version, standalone und encoding aus. Technisch gesehen, ist es jedoch keine Verarbeitungsanweisung, sondern nur die XML-Deklaration; nicht mehr und nicht weniger. Das folgende Beispiel zeigt dies.

<?xml version="1.0" encoding="US-ASCII" standalone="yes"?>
<person>
  Alan Turing
</person>

Code-Beispiel: Ein sehr einfaches XML-Dokument mit einer XML-Deklaration

XML-Dokumente müssen keine XML-Deklaration enthalten. Falls allerdings eine XML-Deklaration vorhanden ist, muss diese Deklaration als Allererstes im Dokument stehen. Es dürfen keinerlei Kommentare, Whitespace oder Verarbeitungsanweisungen vor ihr stehen. Der XML-Parser benutzt nämlich die ersten fünf Zeichen (<?xml), um vernünftige Mutmaßungen über die Kodierung anzustellen, etwa, ob das Dokument einen Zeichensatz mit einem Byte oder mit mehreren Bytes benutzt. Das Einzige, was vor der XML-Deklaration auftauchen darf, ist eine unsichtbare Unicode-Kennung der Byte-Reihenfolge. Wir werden das unter Internationalisierung besprechen.

Das version-Attribut

Das Attribut version sollte den Wert 1.0 haben. Unter sehr ungewöhnlichen Umständen kann es auch den Wert 1.1 haben. Da das Dokument durch die Angabe von version="1.1" auf die neuesten Versionen einiger weniger Parser eingeschränkt wird und alle XML 1.1-Parser auch XML 1.0 unterstützen müssen, sollten Sie die Version nicht einfach so auf 1.1 setzen.

Sie glauben uns nicht? Dann beantworten Sie zunächst mal ein paar Fragen:

  1. Sprechen Sie Kambodschanisch, Burmesisch, Amharisch, Mongolisch oder Dihevi?
  2. Enthalten Ihre Daten veraltetete, Nicht-Test-C0-Steuerzeichen wie den vertikalen Tabulatur, Zeilenvorschub oder BELL?

Wenn Sie auf beide Fragen nein geantwortet haben, bringt es Ihnen keinerlei Vorteile, XML 1.1 zu verwenden. Wenn Sie auf beide oder eine Frage ja geantwortet haben, dann haben Sie eventuell einen Grund, XML 1.1 zu verwenden. XML 1.0 erlaubt die Verwendung von Kambodschanisch, Burmesisch, Amharisch usw. in Zeichendaten und Attributwerten; XML 1.1 erlaubt auch, dass diese Schriften in Element- und Attributnamen verwendet werden. Das erlaubt XML 1.0 nicht. XML 1.1 erlaubt außerdem die Verwendung von C0-Steuerzeichen (außer NUL) in Zeichendaten und Attributwerten (vorausgesetzt, dass sie als numerische Zeichenreferenzen wie &#x07; geschützt werden). Auch das erlaubt XML 1.0 nicht. Wenn in Ihrem Fall eine dieser Bedingungen zutrifft, sollten Sie vielleicht XML 1.1 verwenden. (Sie sollten sich dabei allerdings bewusst sein, dass Sie damit Ihr potenzielles Publikum einschränken.) Andernfalls sollten Sie wirklich ausschließlich XML 1.0 verwenden.

Das encoding-Attribut

Bisher waren wir hinsichtlich Zeichensätzen und Zeichenkodierungen ziemlich nachlässig. Wir haben gesagt, dass XML-Dokumente aus reinem Text bestehen; allerdings haben wir nicht verraten, welche Kodierung dieser Text benutzt. ASCII? Latin-1? Unicode? Irgendetwas anderes?

Die kurze Antwort auf diese Frage lautet »ja«. Die lange Antwort ist, dass standardmäßig angenommen wird, dass XML-Dokumente die UTF-8-Kodierung mit variabler Länge des Unicode-Zeichensatzes verwenden. Diese Kodierung ist eine echte Obermenge von ASCII, das heißt, reine ASCII-Textdateien sind ebenfalls UTF-8-Dokumente. Allerdings können die meisten XML-Prozessoren, insbesondere die, die in Java geschrieben sind, bedeutend mehr Zeichensätze verarbeiten. Sie müssen dazu dem Parser nur sagen, welche Zeichenkodierung das Dokument verwendet. Bevorzugterweise wird das in Form von Metainformationen mitgeteilt, die im Dateisystem abgelegt oder vom Server gestellt werden. Da allerdings nicht alle Systeme Zeichensatz-Metadaten bereitstellen, ermöglicht XML es Dokumenten, mittels einer Kodierungsangabe (Englisch: encoding declaration) innerhalb der XML-Deklaration einen eigenen Zeichensatz festzulegen. Das folgende Code-Beispiel zeigt Ihnen, wie Sie signalisieren, dass ein Dokument im ISO-8859-1-Zeichensatz (Latin-1) geschrieben wurde. Dieser Zeichensatz enthält Zeichen wie ö und ç, die für viele nicht-englische westeuropäische Sprachen benötigt werden.

<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<person>
  Erwin Schrödinger
</person>

Code-Beispiel: Ein XML-Dokument, das in Latin-1 kodiert ist

Das Attribut encoding ist in einer XML-Deklaration optional. Wenn Sie es weglassen und keinerlei Metadaten verfügbar sind, wird der Unicode-Zeichensatz angenommen. Der Parser kann dann anhand der ersten Bytes der Datei versuchen zu erraten, welche Unicode-Kodierung benutzt wird. Wenn Metadaten vorhanden sind und diese nicht mit der Kodierungsangabe übereinstimmen, gewinnt die Kodierungsangabe, die die Metadaten festlegen. Sagt beispielsweise ein HTTP-Header, ein Dokument sei in ASCII kodiert, wogegen die Kodierungsangabe in der Deklaration behauptet, das Dokument sei UTF-8-kodiert, wird sich der Parser für ASCII entscheiden.

Die verschiedenen Kodierungen und die richtige Verarbeitung nicht-englischer XML-Dokumente werden unter Internationalisierung noch im Detail erläutert.

Das standalone-Attribut

Wenn das Attribut standalone den Wert no hat, muss eine Anwendung möglicherweise auf eine externe DTD (das heißt eine DTD in einer anderen als der gerade gelesenen Datei) zurückgreifen, um die korrekten Werte für bestimmte Teile des Dokuments zu ermitteln. Zum Beispiel könnte eine DTD Standardwerte für Attribute bereithalten, die der Parser weitergeben muss, auch wenn sie im aktuellen Dokument nicht definiert werden.

Dokumente, die nicht über DTDs verfügen, wie alle Beispiel-Dokumente in diesem Abschnitt, können den Wert yes für das Attribut standalone setzen. Dokumente, die DTDs haben, können das Attribut standalone ebenfalls auf den Wert yes setzen, falls die DTD den Inhalt des Dokuments in keiner Weise ändert oder falls die DTD rein intern ist. Einzelheiten über Dokumente mit DTDs finden Sie unter Dokumenttyp-Definitionen (DTDs).

Das Attribut standalone ist in einer XML-Deklaration optional. Wenn Sie es weglassen, wird der Wert no angenommen.

  

<< zurück vor >>

 

 

 

Tipp der data2type-Redaktion:
Zum Thema XML bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an:

  


Copyright © 2005 O'Reilly Verlag GmbH & Co. KG
Für Ihren privaten Gebrauch dürfen Sie die Online-Version ausdrucken.
Ansonsten unterliegt dieses Kapitel aus dem Buch "XML in a Nutshell" denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

O’Reilly Verlag GmbH & Co. KG, Balthasarstraße 81, 50670 Köln, kommentar(at)oreilly.de