仕様で定められたXHTML1.0のmedia types
XHTML1.0の仕様ではMIMEを5.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要素でスタイルシートの指定が処理されないかもしれない点に注意する必要が有る。