XML宣言について
XHTMLを記述する際の、XML宣言を省略するかしないかについてのお話。
W3Cの仕様ではXHTML文章を作成する際に以下のようなXML宣言が基本的には必須になっています。
<?xml version="1.0" encoding="UTF-8"?>
『基本的に必須』と書いたのは、特定条件で省略が可能な為です。
省略が可能な場合は以下のような場合、
- 文字コードが UTF-8 もしくはUTF-16の場合。
- XHTML文章よりハイレベルなプロトコルで文字コードが指定されている場合
よりハイレベルなプロトコルとはサーバーが出力するContent-Typeヘッダーなどでcharsetが指定されている場合などになります。
XML宣言は、XMLで記述されたXHTML文章を、デフォルトの文字コードであるUTF-8やUTF-16以外の文字コードを利用する際に、文字コードを適切にデバイスに対して伝えるという目的の為に使用されます。
W3Cは上記の場合以外もXML宣言の記述は推奨としていますが、これは他のサーバーや特殊なデバイスでXHTMLを引用される場合の為だと思います。
(ちょっとここは憶測です。理由をご存知の方がいたら教えてください)
つまり、上記の文字コードとプロトコロルの問題さえ適切に処理されていればXML宣言を省略してもWeb標準に準拠していない、つまりW3Cの仕様に準じていないXHTMLにはなりません。
むしろHTMLやXHTMLで作成された文章が特定のデバイス(Webブラウザ)での閲覧を目的としている場合、省略することにより得れるメリットのほうが大きいかもしれません。
XML宣言を記述していると、IE6のレンダリングが後方互換モードになりCSSの解釈が変わるなどは有名ですが、古いブラウザですとXML宣言がそのままブラウザ上に表示されるブラウザなども存在します。
これはWebブラウザが、SGMLとして作成されたHTMLの表示を前提に作られたデバイスである為、仕方ないといえば仕方ないかもしれませんが、XML宣言を省略するとそれらを考慮する必要はありません。
過度の後方互換を前提とした場合はXMLの省略を、未知の環境での閲覧を想定する場合や、省略できない環境でXHTMLを公開する場合はXML宣言の行うのが妥当といえます。
関連エントリー
IE7でページが表示されない件について
htmlの属性名の読み方
正しいリストの記述方法
input要素などにおけるIEのバグ
CSSでロールオーバーもどき
スポンサードリンク
«Webサイトに地図が載せられる『Yahoo!地図情報API』 | メイン | javascriptなしで背景が透けるカラムを実装するスタイルシート»