Weihnachtsbert: Zeichensatz für externe DTD

Kann der Zeichensatz einer externen DTD eingestellt werden oder ist nur UTF-8 möglich?

  1. 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

    1. 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.

  2. 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