MIME-Types für XHTML & Co

Für diesen Dokumenttyp habe ich nicht viel zu recherchieren. Seit Jahren gibt es dafür beim W3C eine passende »Note« mit dem Titel XHTML Media Types. Daraus ist die folgende Tabelle zitiert:

Media types summary for serving XHTML documents
Media type HTML 4 XHTML 1.0 (HTML compatible) XHTML 1.0 (other) XHTML Basic / 1.1 XHTML+MathML
text/html SHOULD MAY SHOULD NOT SHOULD NOT SHOULD NOT
application/xhtml+xml MUST NOT SHOULD SHOULD SHOULD SHOULD
application/xml MUST NOT MAY MAY MAY MAY
text/xml MUST NOT MAY MAY MAY MAY

Zunächst ist hier bereits zu sehen, dass es für »generische« XML-Dokumente zwei MIME-Types gibt, text/xml und application/xml. Sie sind beide in RFC 3023 »XML Media Types« definiert. Ein wichtiger Unterschied zwischen beiden MIME-Types ist das Defaultverhalten in Bezug auf die angenommene Zeichenkodierung. Fehlt die Zeichenkodierung im Content-Type-Header der HTTP-Nachricht, so gibt es im Falle von application/xml keinen Default. Das bedeutet, dass die üblichen XML-Regeln zur Erkennung des Encodings gültig sind (XML-Deklaration, Byte-Order-Mark usw. usw.; Details siehe XML-Spezifikation). Im Falle von text/xml heißt der Default us-ascii. Das bedeutet, dass ein XML-Dokument, das korrekt z.B. ISO-8859-1-kodiert auf der Platte liegt, von einem Webserver aber ohne Charset-Parameter ausgeliefert wird, vom Empfänger unter Annahme des Encodings US-ASCII verarbeitet werden muss. ISO-8859-1-kodierte Umlaute rufen dann einen Parserfehler hervor.

Weitere Besonderheiten in Bezug auf XHTML sind der W3C-Note zu entnehmen. Es sei nur darauf hingewiesen, dass XHTML-Basic- und XHTML-1.1-Dokumente mit dem MIME-Type application/xhtml+xml ausgeliefert werden sollen. Nach meinen bisherigen Versuchen bieten Browser daraufhin an, das Dokument zu speichern. Im Gegensatz dazu darf HTML-kompatibles XHTML auch mit text/html versehen werden.

Weitere Typen für XML und DTDs

Neben den beiden zuvor bereits genannten MIME-Types definiert RFC 3023 drei weitere, weniger bekannte. Insgesamt also fünf:

  • text/xml
  • application/xml
  • text/xml-external-parsed-entity
  • application/xml-external-parsed-entity
  • application/xml-dtd

Ihren Verwendungszweck fasst der RFC wie folgt zusammen:

»Within the XML specification, XML MIME entities can be classified into four types. In the XML terminology, they are called "document entities", "external DTD subsets", "external parsed entities", and "external parameter entities". The media types text/xml and application/xml MAY be used for "document entities", while text/xml- external-parsed-entity or application/xml-external-parsed-entity SHOULD be used for "external parsed entities". The media type application/xml-dtd SHOULD be used for "external DTD subsets" or "external parameter entities". application/xml and text/xml MUST NOT be used for "external parameter entities" or "external DTD subsets", and MUST NOT be used for "external parsed entities" unless they are also well-formed "document entities" and are referenced as such.«

Wie bereits oben ausgeführt, ist besonders das Encoding knifflig. So sind beispielsweise für MIME-Types mit dem Haupttyp text UTF-16, UCS-4 und UTF-32 ausgeschlossen. Entsprechende kodierte Dokumente dürfen folglich nicht als text/xml gekennzeichnet sein. Der RFC führt das detailliert aus.

Abschließend sei erwähnt, dass der RFC auch die Verwendung des Suffixes +xml beschreibt. Er wird für viele XML-basierte Formate, etwa application/atom+xml verwendet.

Fazit

Wenngleich ich mit diesem Text keine ausführliche Beschreibung der MIME-Types geben konnte, sind die Ziele hoffentlich dennoch erreicht:

  • Für die Problematik sensibilisieren.
  • Wenig bekannte MIME-Types (insbesondere application/xml-dtd) bekannter machen.
  • Links zu primären Quellen nennen.

Letzteres noch einmal in der Übersicht: