最近「XHTML文書にはXML宣言を入れることが強く推奨されているので入れるべきだ」というような意見を何度か目にしました。しかし、その説明の中で、メディア・タイプ(「text/html」や「application/xhtml+xml」など)については触れられていませんでしたので、ちょっと補足しておきたいと思います。
XHTML1.0の仕様書では、確かにXML宣言をつけることが強く推奨されており、具体的には次のように書かれています。
An XML declaration is not required in all XML documents; however XHTML document authors are strongly encouraged to use XML declarations in all their documents.
しかし、ここで言うXHTML文書とは、仕様書が意図している本来のXHTML文書、つまりメディア・タイプが「application/xhtml+xml」のXHTML文書を指していて、「text/html」として配信されるXHTML文書の場合はまた別の話となる点に注意が必要です。わかりやすく言えば、XHTML1.0の仕様書は「XMLとして処理される本来のXHTML文書(application/xhtml+xml)」の話をしていて、現実的に大多数を占めてはいるがXHTMLとしては実は例外的な「HTMLとして処理されるXHTML文書(text/html)」の場合は、話がちょっと違うということです。
「text/html」の場合にどうすればいいのかは、「XHTML Media Types – Second Edition」という W3C Working Group Note に書かれています。
The ‘text/html’ media type [RFC2854] is primarily for HTML, not for XHTML. In general, this media type is NOT suitable for XHTML except when the XHTML is conforms to the guidelines in Appendix A.
—–
「text/html」は主としてHTML用のメディアタイプであって、XHTML用のものではありません。XHTML文書が付録Aのガイドラインに準拠している場合を除き、一般にこのメディアタイプはXHTML用としてふさわしいものではありません。
この説明から、XHTML文書を「text/html」として配信する場合は、付録Aのガイドラインに準拠させるべきであろうことがわかります。ちなみに、そのガイドラインとは、「Compatibility Guidelines(互換性ガイドライン)」という、もともとはXHTML1.0の仕様書の中にあったものの最新版で、その最初の項目としては次のように書かれています。
・DO NOT include XML processing instructions NOR the XML declaration.
・XMLの処理命令やXML宣言を入れない。
これらをまとめると、XHTML文書を「text/html」として配信する場合は「互換性ガイドライン」に準拠させるべきであり、「互換性ガイドライン」に準拠させるならXML宣言は入れられないということになります。現在あるXHTML文書の多くは「text/html」として配信されていますが、XML宣言を入れると「互換性ガイドライン」に準拠しない文書となってしまうことを覚えておきましょう。
大藤さん、CSS nite Vol31のリンクをたどったら辿り着きました。まったくもって上に同意見です。text/htmlで書いてる以上xml宣言は必要ないとおもっております。先日もHTML5を策定しているmike(tm) smithと同じ事が話題にのぼりました。今のxhtml文書はapplication/xhtml+xmlと記述しないかぎり文法も全て本来は実はHTML4.01に準拠するべきとのことだそうです。application/xhtml+xmlと記述すればいいじゃんとなるのですが、IEが対応していないそうです。
そういうわけで、このジレンマを解消すべくHTML5を策定してるとのことでした。大藤さんの上記の記事はまさに、そのジレンマの現れ?かもしれませんね。
>菊池さん
ご無沙汰しております。なるほど、Michael Smith氏がそう言ってましたか。ちょっと自信がつきました(笑)!
この話題、非常に困惑してます。
XML としての処理をかねる事ができるという点にずっと期待をして、でもまだ今は早すぎなダケなのだ、と思ってましたが。中途半端なヤツはそもそも XML と看板掲げちゃイカン!といわれてるみたいで…ガックシです(笑)
>ichiroさん
ご無沙汰しております! お元気ですか?
XHTML1.0が勧告となった時のプレスリリースには、こんなことが書かれていました。
「XHTML 1.0はWebページやWebサイト制作者がHTML4をサポートするユーザエージェントとの運用性を保ちつつ、構造化データの世界へと移行する掛け橋を提供します。」
XHTML1.0はあくまで「掛け橋」としての存在ですので、それほど気にすることもないかと。
この件がこのままだとofujimikiさんの影響力からして変な理解をされないかなーと心配になってpostします。(他のpostで補足があったらすみません;;)
http://www.w3.org/TR/xhtml-media-types/#compatGuidelines
ですが、
・引用された箇所の直後に条件として、
Consequence: Remember, however, that when the XML declaration is not included in a document, AND the character encoding is not specified by a higher level protocol such as HTTP, the document can only use the default character encodings UTF-8 or UTF-16. See, however, guideline 9 below.
とあることと、
・具体的な方法として、guideline 9の内容をがあること
も紹介して欲しかったなーというのが、素直すぎる後輩達を持つ者の気持ちです。
でもこうやって読み込んでいくとW3Cってけっこう現実を見てるんですね。
こういった文書があるのに基本的な知識として浸透していないのはなぜなのか・・・;;;
>mikihiroさん
コメントありがとうございます。
実は紙媒体で似たような内容を書く予定があったもので、記事の冒頭にありますように補足情報的に書いた次第です。
普通とは逆ですが、「続きはWeb (Designing)で!」ということでよろしくお願いします。
なるほど。
では雑誌の方をチェックさせていただきます!
ありがとうございます!