Web標準普及プロジェクト

MozillaのXHTMLサポートはXML文書の場合に限ります

XHTMLはXMLで定義された新しいHTML仕様です。 MozillaでもXHTMLをサポートしていますが、それには制限があることに注意しなくてはいけません。

MozillaのXHTMLサポートはXMLの場合のみ

Mozillaはtext/htmlとして受け取ったXHTML文書はHTMLとして解釈します。 そのため、例えばxml:langを用いた文書で、 CSSからセレクタのlang疑似クラスを使っても期待通りには要素がマッチしません。

これはHTMLには無いxml:lang属性をMozillaが無視しているためです。

また、同種の問題としてXHTML1.1ではusemap属性の値がIDREFに変更されましたが、 text/htmlで送信されたXHTML1.1文書ではこれは正しく動作しません。

style要素やscript要素内でのコメントの扱いや、CDATAセクションについても同様のことが言えます。

XHTML文書を正しくXHTMLの仕様に従わせたければapplication/xhtml+xml、 もしくはapplication/xmltext/xmlをHTTPヘッダに指定するようにしてください。

何故、このような動作になっているのかと言うと、W3Cの石川氏のW3C Noteに次のような表があり、 これに従っているものと思われます。

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