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 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:
- XHTML Media Types, W3C Note
- XML Media Types, RFC 3023
- SGML Media Types, RFC 1874
- MIME Media Types, offizielle IANA-Registrierung
