XML -Kodierungen
Ein XML -Dokument oder irgendein Teil solch eines Dokuments wird hier auch als Quelltext bezeichnet. Der Quelltext ist eine Folge von Zeichen, die auch Quelltextzeichen oder Quellzeichen genannt werden können.
Quelltext wird programmgesteuert erzeugt, beispielsweise mit Hilfe eines Texteditors. Ein Zeichen kann in einer binären Rechenanlage nur in Form von Bits dargestellt werden. Es muß also binär kodiert werden. Die Bits werden dabei meistens in Achtergruppen zu einem Oktett zusammengefaßt. Ein Zeichen wird meistens durch einen oder mehrere Oktettwerte dargestellt. Quelltext muß also auf einem Rechner durch Oktette werden. Es gibt aber verschiedene Arten, wie Zeichen durch Oktettwerte dargestellt werden können.
Ein bestimmte Festlegung zur Darstellung von Zeichen durch Bits wird als Kodierungsverfahren oder kurz Kodierung bezeichnet. Wenn die Bits dabei zu Oktetten zusammengefaßt werden, dann kann man auch von einer Oktettkodierung sprechen. Die Menge aller mit einer Kodierung darstellbaren Zeichen nennt man auch den Zeichenvorrat oder das Zeichenrepertoire dieser Kodierung.
XML -Dokumente werden auf einem Rechner mit einer bestimmten Kodierung dargestellt.
Zur Darstellung eines XML -Dokuments kommen verschiedene Kodierungsverfahren in Frage.
Einige Kodierungen
ANSI_X3.4-1968
Die klassische Kodierung ANSI_X3.4-1968 (auch bekannt als „ASCII-Code “) definiert für 95 Schriftzeichen, einschließlich des Leerzeichens, Oktettwerte. Hinzu kommen 33 Steuerzeichen. Die Kodierung ANSI_X3.4-1968 verwendet eigentlich nur sieben Bit, wird aber heute meist durch einen vorangestellten Bitwert 0 zu einer Oktettkodierung ergänzt.
ISO-8859-1
Derzeit in westeuropäischen Ländern beliebt, ist die Oktettkodierung ISO-8859-1, deren Zeichenvorrat den der Kodierung US-ASCII um verschiedene europäische und andere Schriftzeichen erweitert und auch die deutschen Umlaute enthält, die im Zeichenvorrat von ANSI_X3.4-1968 nicht enthalten sind. Dazu wird den sieben Bits der Kodierung US-ASCII der Bitwert 0 vorangestellt, wenn praktisch die Kodierung ANSI_X3.4-1968 verwendet werden soll. Beginnt ein Oktett statt dessen mit dem Bitwert 1, so wird das Oktett durch ergänzende Festlegungen der Oktettkodierung ISO-8859-1 interpretiert, die so 128 weitere Zeichen definieren kann.
UTF-8
Der Zeichenvorrat der Kodierung UTF-8 ist mit mehreren zehntausend Zeichen noch einmal viel größer als der Zeichenvorrat der Kodierung ISO-8859-1. Durch die Verwendung der Kodierung UTF-8 entfällt die Notwendigkeit, für verschiedene Sprachen spezielle Codes zu verwenden, da die meisten gebräuchlichen Alphabete im Zeichenvorrat der Kodierung UTF-8 enthalten sind. Weil die Kodierung UTF-8 aber noch relativ neu ist und die Anzeige des gesamten Zeichenvorrates auch entsprechend umfangreiche Glyphenvorräte (fonts, also Schriftdateien) verlangt, ist es derzeit noch nicht immer möglich, den gesamten Zeichenvorrat der Kodierung UTF-8 zu nutzen. Der große Zeichenvorrat der Kodierung UTF-8 wird dadurch ermöglicht, daß nun auch mehrere direkt aufeinanderfolgende Oktette zur Darstellung eines Zeichens verwendet werden. Dabei werden die Zeichen aus dem Zeichenvorrat der Kodierung ISO-8859-1, die im Zeichenvorrat von US-ASCII nicht enthalten sind, anders kodiert als mit der Kodierung ISO-8859-1. Das bedeutet beispielsweise, daß die Oktettdarstellung eines deutschen Umlautes in der Kodierung UTF-8 anders ist als in der Kodierung ISO-8859-1.
Die Oktettdarstellung des Zeichenvorrates der Kodierung US-ASCII ist bei allen drei genannten Kodierungen gleich. Das bedeutet, daß eine Oktettfolge, die nur Zeichen aus dem Zeichenvorrat der Kodierung US-ASCII darstellt, mit allen drei Kodierungen gleichermaßen richtig interpretiert wird.
Die Kennzeichnung der Kodierung eines XML -Dokuments
Wegen der genannten Vorteile der Kodierung UTF-8, empfiehlt sich diese besonders für XML -Quelltext. Die XML -Empfehlung verlangt von einem XML -Prozessor auch nur, daß er XML -Quelltext in der Kodierung UTF-8 (oder der Kodierung UTF-16 ) lesen kann.
Die Kodierung eines XML -Dokuments wird ganz am Anfang des XML -Dokuments in der XML -Deklaration angegeben. Hierzu dient eine Kodierungsdeklaration, wie beispielsweise die Kodierungsdeklaration "encoding="UTF8"" in dem folgenden Beispiel einer XML -Deklaration.
XML-Deklaration fuer UTF-8
<?xml version="1.0" encoding="UTF-8"?>
Da die Kodierung "UTF-8" aber ohnehin als Vorgabewert für die Kodierung gilt, kann in diesem Fall die Kodierungsdeklaration entfallen.
XML-Deklaration fuer UTF-8 (Kurzform)
<?xml version="1.0">
Die Kodierung UTF-8 und die Kodierung ISO-8859-1 stimmen hinsichtlich der Zeichen, die nicht zum Zeichenvorrat der Kodierung US-ASCII gehören nicht überein. Das bedeutet, daß bei Verwendung der Kodierung ISO-8859-1 diese unbedingt angegeben werden muß.
XML-Deklaration fuer ISO-8859-1
<?xml version="1.0" encoding="ISO-8859-1"?>
Da die Kodierung US-ASCII und die Oktettkodierung UTF-8 für den Zeichenvorrat von US-ASCII übereinstimmen, ist bei Verwendung der Kodierung US-ASCII auch die Angabe der Kodierung UTF-8 erlaubt. Auch mit einem „alten“ Editor, der nur die Kodierung US-ASCII schreiben kann, kann man also in der Kodierung UTF-8 schreiben—allerdings kann man damit alle Zeichen, die nicht zum Zeichenvorrat der Kodierung US-ASCII gehören, nicht als Quellzeichen darstellen.
Übungsaufgaben
- Eine Kodierung festlegen
- Verändern Sie den Text "Hallo!" des in einer früheren Lektion verwendeten Beispieldokuments in einen Text mit Umlauten. Ermitteln Sie, welche Kodierung der von Ihnen verwendete Editor zur Speicherung des XML -Dokumentes verwendet oder wählen Sie eine aus, falls der Editor mehrere Möglichkeiten anbietet. Geben Sie dann einmal die richtige und verschiedene falsche Kodierung (z.B. "US-ASCII", "ISO-8859-1" oder "UTF-8") in der XML -Deklaration Ihres Dokuments an und beobachten Sie, wie dies Darstellung und Validierung des Dokuments beeinflußt.