XHTMLのよくある質問まとめ

この文章はhttp://www.webf5.net/html_xhtm_401/に影響を受けた人間がXHTMLの説明と文章の練習のために書きました。

そもそもXHTMLとは?

XMLでHTMLを扱うために生み出されたものです。 XHTMLは、今までSGMLというマークアップ言語をベースとしてきたHTMLをXMLをベースとして定義し直したものです。

HTMLとXHTMLは何が違うのか?

XMLか、そうでないかです。 XHTMLXMLをベースとしているのでXMLの様々な機能を利用することが出来ます(反対に、XHTMLを補助機能として他に利用されることも有り得ます)。XSLTによる文書の変換を利用することも出来ますし、HTMLとの互換性を考えなければベクターイメージを表現するSVGや数式を表現するMathMLなど、XMLベースの他の機能を組み合わせて多様な表現をすることが可能になります(しかし、それらの機能を本当に扱えるかは実装に依ります)。

その一方で、XHTMLXMLの文法の制約も強く受けます。例えば、HTMLでは認められていた簡略な記法の多くは認められていません。brやimgのような内容を持たない要素でも開始タグ・終了タグを対にする必要などがあります(<br></br>や簡略に<br/>、HTMLとの互換を強く持たせる場合はスラッシュの前に空白を置いて<br />、のように)。またHTMLでは要素名や属性名の大文字・小文字は区別されませんが、XMLでは要素名や属性名の大文字・小文字は区別されているため、XHTMLの要素名などは小文字で統一されています。要素名や属性名の大文字・小文字を区別するかどうかはJavaScriptのようなスクリプトから文書を扱う際にも影響を与えます。

XHTML 1.0とXHTML 1.1の違いは?

HTML 4.01と互換性が強いか、そうでないかです。 XHTML 1.0にはHTML 4.01と同じように厳格なもの、移行用と呼ばれる制約の緩いもの、フレーム用の3つの文書定義がありますが、XHTML 1.1にはXHTMLモジュール化と呼ばれる仕様で定められた文書定義のモジュールを使用して作成された、HTML 4.01やXHTML 1.0の厳格な文書定義よりさらに厳格で簡潔な文書定義が1つあります。さらにXHTML 1.1には新しくルビを表現する機能も含まれています。

また、XHTML 1.1はXHTML 1.0とは違い、HTML互換として扱われるべきではなく、真にXMLXHTMLとして扱われるべき(インターネット・メディア・タイプ、いわゆるMIMEタイプをHTMLと同じtext/htmlではなくapplication/xhtml+xmlなどにすべき)だとされています。

XHTML 2.0とは

XMLとより親和性の高い、論理的な意味をより重視したXHTML、になる予定のものです。 既存のHTML・XHTMLから論理的に意味のない機能をさらに取り除いて、構造や論理的に意味のある機能をより強化しようとしているものです。XHTML 2.0はHTML 4.01とはほとんど互換性がありません。それは実装の対応を待たなければXHTML 2.0の文書を本当には扱うことができないことを意味しますが、XHTML 2.0の仕様は未だ草案段階にあるため、XHTML 2.0がいつ使えるようになるのかは全くわかりません。

XHTMLとHTMLどちらを使えばいいのか

どちらでも構いません。 HTMLにある多くの簡略な記法を使いたい場合はHTMLを使うと良いでしょう。文書をXMLとしても扱いたい、またはそれを予定している、という場合はXHTMLを使うと良いでしょう。

XHTML 1.0とXHTML 1.1どちらを使えばいいのか

どちらでも構いません。 HTML 4.01で作成した文書が既にある上でそれをXMLとしても扱いたいという場合には移行が比較的簡単なXHTML 1.0を使うのが良いでしょうし、文書をウェブブラウザなどの多くの実装に対応したいという場合もXHTML 1.0をHTMLとの互換性を持たせて使うのが良いでしょう。そういう欲求がなく、またルビなどの機能を使いたいという場合はXHTML 1.1を使うと良いでしょう。

XHTMLはブラウザに対応していますか

ウェブブラウザによって異なります。 HTMLに対応しているウェブブラウザはHTML互換のXHTML文書にはおおよそ対応できると言えます。注意すべきなのはHTML互換でないXHTML文書の場合、つまり真にXMLXHTMLとして扱われるXHTML文書の場合です。この場合、ウェブブラウザはHTMLに対応する以外にXMLXHTMLの各機能にも対応している必要があるので、古いウェブブラウザなどはこれを意図通りに表示できない場合があります。例えば真にXMLとして扱われるXHTML文書は、IEではHTMLと同じようには描画されません。真にXHTMLとして扱われるXHTML文書は、IEでは表示することが出来ません(未知のファイルとしてダウンロードダイアログが出るでしょう)。

XML宣言は必要ですか

できれば必要ですが、必須ではありません。 XML宣言は宣言すべきとされていて(XHTMLでは強く推奨)、XML宣言を省略するためには条件をいくつかクリアする必要があります。あなたがもしIE 6を重要視しているなら、IE 6ではXML宣言がある場合(文書型宣言より前に文字がある場合)CSSの解釈が歴史的なモードに変化することに注意してください。

何がベスト?

まずは自分の欲求を確認することから始めましょう。 簡略な記法を使いたいですか?文書をXMLとしても扱えるようにしたいですか?ルビを使いたいですか? よくわからないのでとりあえず何がベターか教えて、ということであれば、一番機能が多くXMLとしても扱えるようにできるXHTML 1.0(Transitional)を、様々な実装に対応できるであろうHTML互換で使うのが良いのではないでしょうか。
重要なのは、何を採用したとしてもなるべくはその仕様が定める文法などに沿って文書を作成することです。マーク付けされた文書は人間がそのまま読むものではなく、機械が処理した後に人間が読んだり利用するものですから、機械が扱いやすいようにしておくことがまず必要です。多くの機械が扱いやすいようにするためには標準化された仕様が大きな意味を持っていますので、それに沿うことで多くの機械、ひいては多くの人間にその文書の意味をより理解してもらえることが期待できるでしょう。