molily: XML-Deklaration

Beitrag lesen

Hallo,

wenn du XHTML verwendest, hat dies nur einen Sinn, wenn du auch korrektes, XML-konformes XHTML schreibst. Ansonsten bist du mit korrektem HTML vielleicht besser beraten als mit fehlerhaftem XHTML, welches sich überhaupt nicht als XML verarbeiten lässt.

Die Kodierungsfrage ist so ein Punkt. Die halbe Welt pustet momentan inkorrektes XML in Form von »HTML-kompatiblen« XHTML (MIME-Typ text/html, Kompatibilitätsrichtlinien) ins Netz. Diese Dokumente werden niemals von einem XML-Parser verarbeitet werden können, insofern sind sie weder echtes XHTML noch einfaches HTML. Die Vorteile von XHTML werden sich nie zeigen.

Ein XML-Dokument hat standardmäßig die Kodierung UTF-8. Wenn du eine abweichende Kodierung verwendest, solltest du diese in einer XML-Deklaration angeben, damit der XML-Parser in jedem Fall weiß, welche Kodierung das Dokument hat (auch beim Verschicken via E-Mail, beim Speichern und Archivieren auf der Festplatte, bei der Übertragen mit anderen Protokollen als HTTP usw.). Wenn du ISO 8859-1 statt UTF-8 verwendest, dies aber nicht auf diese Weise angibst, ist das Dokument für sich genommen kein gültiges XML. Jeder XML-Parser muss und wird die Verarbeitung abbrechen, weil er ein Dokument ohne Kodierungsangabe als UTF-8 verarbeitet. Solange du die Vorteile von XHTML nicht nutzt und die Browser sowieso nur HTML-Parser (»Tag-Soup-Parser«) beim Verarbeiten des Dokuments verwenden, ist es unerheblich, dass das Dokument niemals von einem XML-Parser gelesen werden kann.

Was nun die Lösung ist? Gegenfrage, warum verwendest du XHTML, wenn es doch sowieso nie als echtes XHTML verarbeitet wird bzw. werden kann? XML wurde als strenges Austauschformat erfunden, das einfachen, klaren Regeln folgt und dementsprechend einfach verarbeitet werden kann. Das Produzieren von inkorrektem XML hilft niemanden weiter (natürlich bleiben einige Vorteile von XHTML - man kann z.B. gegen eine strengere DTD validieren, weil die üblichen Validatoren keine echten XML-Parser sind; das kann man bei HTML 4 allerdings prinzipiell auch). Mein Rat ist: Verwende korrektes XHTML (am besten direkt UTF-8-kodiert, damit du dir um den Quirks-Modus keine Sorgen machen musst) oder verwende korrektes HTML 4 (dort gibt es das »Problem« nicht bzw. dort HTML hat im Gegensatz zu XHTML dieses Feature der Klarheit und Strenge nicht).

Du kannst die Kodierung in einem HTTP-Header angeben, was aber bei den genannten Szenarien nicht unbedingt weiterhilft.

XHTML-Dokumente solltest du übrigens direkt mit einem XML-Schema-Validator prüfen, weil Validome und der W3C-Validator sich wie gesagt nur scheinbar XML verstehen. Zudem ist die Prüfung über das Schema viel strenger.

Mathias