Jens Oliver Meiert

HTML, XHTML, XML und Steuerzeichen (W3C)

Originalversion:
https://www.w3.org/­International/questions/qa-controls
Ăśbersetzer:
Jens Oliver Meiert, meiert.com
Datum der Ăśbersetzung:
16. Juni 2008

Bei diesem Dokument handelt es sich um die deutsche Ăśbersetzung eines W3C-Textes. Dieser Text ist urheberrechtlich geschĂĽtzt; bitte beachten Sie die Hinweise des Originaldokuments sowie die Anmerkungen der W3C-Dokumentlizenz. Die Ăśbersetzung hat keine durch das W3C legitimierte, normative Wirkung. Das einzige maĂźgebliche Dokument ist das englische Original.

Bitte senden Sie Fehler und Korrekturen zur deutschen Fassung an den Ăśbersetzer. Kommentare des Ăśbersetzers, die als solche gekennzeichnet sind, unterliegen dem Urheberrecht des Ăśbersetzers. Sie sind kein Bestandteil des Ursprungsdokuments.

HTML, XHTML, XML und Steuerzeichen

Frage

Wie handhabt man Steuerzeichen – zum Beispiel die »C0«- (U+0000–U+001F) und »C1«-Bereiche (U+007F–U+009F) – in HTML, XHTML und XML?

Hintergrund

Alte Anwendungen erzeugen manchmal Daten, die Steuer- bzw. Kontrollzeichen beinhalten. Es kann deshalb wichtig sein, zu verstehen, wie diese Zeichen in Markup-Sprachen unterstĂĽtzt werden, wenn solche Anwendungen oder ihre Daten ins Web migriert werden.

Es gibt zwei Bereiche des Unicode Character Sets, denen Steuerzeichen zugewiesen sind. Der Unicode-Standard macht keinen besonderen Gebrauch von diesen Steuerelementen und überlässt ihre Definition der jeweiligen Applikation. Wenn eine Anwendung den Gebrauch der Steuerzeichen nicht spezifiziert, sind sie entsprechend ISO/IEC 6429 zu interpretieren. Viele von Ihnen werden einige der 6429-Codes kennen: ACK, NAK, BEL, LF, FF, VT, CR &c. Die ISO-8859-Familie und andere Zeichenstandards fußen ihre Steuerzeichen auf dem ISO-6429-Standard.

Die Steuerzeichen im Bereich U+0000–U+001F sind als »C0«-Bereich bekannt. Dieser Wertebereich beginnt mit dem NUL-Steuerelement U+0000 (Null). Die Steuerzeichen im Bereich U+0080–U+009F sind als »C1«-Bereich bekannt. DEL U+007F (»Delete«) ist ebenfalls ein Steuerelement, und es grenzt an den Anfang des C1-Bereichs an.

Antwort

Steuerzeichen handhaben

Steuerzeichen sollten durch passendes Markup ersetzt werden. Da XML einen Standardweg bietet, strukturierte Daten zu kodieren, würde die Angabe von Steuerzeichen in anderer Form als Markup die Vorteile von XML zunichte machen. Der Gebrauch von Steuerzeichen in HTML und XHTML ist nie zu empfehlen, da diese Markup-Sprachen dafür da sind, Text darzustellen, keine Daten. Die folgenden Informationen sollten nur in dem seltenen Fall gebraucht werden, in dem alte Daten, die Steuerzeichen beinhalten, nicht bereinigt werden können.

Wenn Daten nicht rein textlich, sondern binär sind, kann es geeigneter sein, sie zu kodieren, zum Beispiel über Base64 oder hexadezimale Werte, um sicherzustellen, dass im Markup-Text nur unterstützte Zeichen verwendet werden. (Und um diese selbstverständlich zu dekodieren, wenn die Dateien gelesen werden.) Beachten Sie, dass XML Schema Datentypen für diese Kodierungen bietet.

Eine weitere Alternative ist, die Daten in einem externen Dokument zu speichern und aus einem XML-Dokument zu referenzieren.

In XML 1.1 stellt der Gebrauch von NCRs (»Numeric Character References«) die einfachste Lösung dar, wenn Sie Steuerzeichen explizit angeben wollen. So würde das Steuerelement ESC U+001B (»Escape«) beispielsweise entweder durch die NCRs »« (hexadezimal) oder »« (dezimal) wiedergegeben werden.

UnterstĂĽtzung von Steuerzeichen

Die folgende Tabelle fasst zusammen, welche Markup-Sprachen Steuerzeichen unterstĂĽtzen:

Steuerzeichen Bereich HTML 4 XHTML 1.0 XML 1.0 XML 1.1
C0 (außer HT, LF, CR) U+0000 (NUL) unzulässig unzulässig unzulässig unzulässig
U+0001–U+001F unzulässig unzulässig unzulässig NCR
HT, LF, CR U+0009, U+000A, U+000D unterstĂĽtzt unterstĂĽtzt unterstĂĽtzt unterstĂĽtzt
DEL + C1 U+007F–U+009F unzulässig unzulässig unterstützt NCR
NEL U+0085 unzulässig unzulässig (zulässig) unterstützt

Ăśbrigens

Auch wenn die ISO-8859-Familie den C1-Bereich für Steuerelemente reserviert, sehen Microsoft-Zeichensätze (zum Beispiel 1250–1258) in diesen Bereichen Zeichen vor. Manchmal verwenden Autoren irrtümlicherweise die Microsoft-Code-Punkte, um NCRs zu kreieren, anstelle von Unicode-Werten. Viele Browser stellen aufgrund der Verbreitung dieses Fehlers in diesem Bereich die Microsoft-Zeichen dar. Diese Verhaltensweise ist jedoch nicht korrekt und führt Entwickler zudem in die Irre, indem sie den falschen Wert irrtümlicherweise bestätigt. Das Problem mag vielleicht nur entdeckt werden, wenn die Daten von irgendeiner Anwendung als fehlerhafte Zeichen und nicht als Steuerelemente behandelt werden, oder wenn ein standardkonformer Browser die Zeichen nicht wie beabsichtigt darstellen kann.

Autor: Tex Texin (XenCraft), François Yergeau (Alis Technologies). Übersetzer: Jens Oliver Meiert.