仕様で定められたXHTML1.0のmedia types

XHTML1.0の仕様ではMIME5.1. Internet Media Typeにて以下のように定めている。

  • C. HTML Compatibility Guidelinesに従っているXHTML1.0文書 (以下、HTML互換のXHTML1.0文書という) は、RFC2854に基づいてtext/htmlとして送信しても良い
  • XHTML1.0の仕様にしたがっている文書は、RFC3236に基づいてapplication/xhtml+xmlとして送信しても良い
  • 詳細に関してはXHTML Media Typesを参照せよ

XHTML1.0文書をtext/htmlで送信する場合

XHTML1.0の仕様に基づき、HTML互換のXHTML1.0文書はtext/htmlで送信しても良い。

HTML互換のXHTML1.0文書ではないXHTML1.0文書をtext/htmlで送信することについては、XHTML Media Typesにてすべきでない (SHOULD NOT) とされている。

なお、XHTML Media Typesにてtext/htmlとして送信されたXHTMLはXMLとして処理されないと定められているため、XML文書としての処理を期待する場合、text/htmlで送信できない (例えば、text/htmlとして受信したXHTML1.0文書でjavascript:document.getElementsByTagNameNS("http://www.w3.org/1999/xhtml","*").length;を実行しても戻り値は0になる)。

XHTML1.0文書をapplication/xhtml+xmlで送信する場合

XHTML1.0の仕様に基づき、XHTML1.0文書であれば、application/xhtml+xmlとして送信できる。

その上で、XHTML Media Typesでは、application/xhtml+xmlとして送信する場合は、以下の書き方が推奨されている。

  • スタイルシートの記述にはXML stylesheet処理命令を使用すべき (SHOULD)
  • RFC 3023に従い、 (HTTPヘッダなどのより上位のプロトコルによる) charsetにより文字コードを指定することが強く推奨される (STRONGLY RECOMMENDED)
  • charsetにより文字コードを指定した上で、<?xml version="1.0" encoding="EUC-JP"?>のようなXML宣言も記述すべき (SHOULD)
  • XML処理機はmeta要素によるhttp-equivによる文字コードの指定を解釈しないし、application/xml (やapplication/xhtml+xml) で送信するXHTMLにmeta要素によるhttp-equivの記述はすべきでない (SHOULD NOT)

なお、application/xhtml+xmlで受信した文書を処理できるXML処理機はXHTML名前空間の要素や属性を正しく処理できるはずなので、例えばXML stylesheet処理命令を使わず、link要素やstyle要素でスタイルシートの指定を行っても、恐らく問題ないだろう。

XHTML1.0文書をapplication/xmlまたはtext/xmlで送信する場合

XHTML1.0の仕様では言及されていないが、XHTML Media Typesでは、XHTML文書をapplication/xml及びtext/xmlとして送信しても良い (MAY) としている。ちなみに、application/xhtml+xmlはするべき (SHOULD) とされているので、特に理由がなければapplication/xhtml+xmlの方が好ましい。

application/xml及びtext/xmlとしてXHTML1.0文書を送信する場合、application/xhtml+xmlと同じ書き方が推奨されるが、application/xhtml+xmlの場合と異なり、application/xml及びtext/xmlを処理するXML処理機はXHTML名前空間とその意味を知らないかも知れない、という違いが有る。

この為、例えばa要素でハイパーリンクの機能が提供されなかったり、HTMLの一般的なデフォルトスタイルシートが適用なかったり、link要素やstyle要素でスタイルシートの指定が処理されないかもしれない点に注意する必要が有る。