Zeichensatz für externe DTD
Weihnachtsbert
- xml
Kann der Zeichensatz einer externen DTD eingestellt werden oder ist nur UTF-8 möglich?
Hallo Bert,
Kann der Zeichensatz einer externen DTD eingestellt werden oder ist nur
UTF-8 möglich?
Die XML Spezifikation (Dritte Auflage und früher) sagt:
»Although an XML processor is required to read only entities in the UTF-8
and UTF-16 encodings, it is recognized that other encodings are used around
the world, and it may be desired for XML processors to read entities that
use them. In the absence of external character encoding information (such as
MIME headers), parsed entities which are stored in an encoding other than
UTF-8 or UTF-16 MUST begin with a text declaration (see 4.3.1 The Text
Declaration) containing an encoding declaration:«
(http://www.w3.org/TR/2004/REC-xml-20040204/#charencoding)
Ich lese daß so, daß man die Textkodierung durchaus über die Header von
HTTP mitgeben kann. Das heißt, daß Du durchaus die externe DTD in einem
anderen Zeichensatz als denen, die ein XML-Prozessor lesen muß, speichern
kannst, sofern Du diese Information mitlieferst. In externen DTDs hast
Du aber im Gegensatz zu in XML Dokumenten definierten DTDs keine andere
Möglichkeit, die Kodierung anders mitzuteilen, als über die Header.
Zudem müssen XML Prozessoren nur die beiden Unicode-Kodierungen verstehen.
Ich würde deswegen immer UTF-8 benutzen, schon allein, um auf der sicheren
Seite zu sein. Und ich kann mir auch wirklich keine Gründe vorstellen, die
einen zwingen, auf Unicode zu verzichten zu müssen. Schließlich gibt es
das schon etwas länger, die gängigen Werkzeuge unterstützen es. Wo ist
also das Problem mit Unicode?
Tim
Wo ist also das Problem mit Unicode?
Hatte gerade keinen Texteditor da, der UTF-8 schreiben kann. Und ständig `recode'en ist auf Dauer nervig.
Ich werde es mal mit GNU Emacs versuchen. Der unterstützt anscheinend UTF-8 beim Speichern von Dateien.
Kann jemand einen guten XML-Editor empfehlen?
Die HTTP-Header-Lösung ist interessant aber unbrauchbar, wenn die DTD nicht über HTTP verfügbar ist.
Trotzdem Danke für die ausführlichen Nachforschungen.
Hallo,
Kann der Zeichensatz einer externen DTD eingestellt werden oder ist nur UTF-8 möglich?
Für die DTD in der DTD kannst du keine Encoding angeben.
Ebenso kannst du in der DTD keine Encoding für dein XML-Dokument angeben.
Aber wenn du wissen möchtest mit welchen Zeichen du dein DTD schreiben kannst, kannst du Tim Links (bzw. diesen folgen http://www.w3.org/TR/2004/REC-xml11-20040204/#charsets)
"Gültige Zeichen sind Tab (Tabulator), Carriage Return (Wagenrücklauf), Line Feed (Zeilenvorschub) sowie die gültigen Zeichen von Unicode und ISO/IEC 10646."
Grüße
Thomas