XHTML 1.1 でフレームを使いたい人へ

よく XHTML 1.1 ではフレームを使えないと思っている人が多いようですが、実際使えません。定められた DTD (文書型定義) を無視してブラウザで無理やり表示させることはできるのですが、MIME タイプが text/html であるファイルは正確な XHTML 1.1 ではないのです。少なくとも XHTML 1.1 以上であるには application/xml など、application として認識させる必要があるのです。できることならば application/xhtml+xml という HTTP ヘッダがついていれば言うことなしです。

冒頭から読む人を選ぶようなことを書いて、申し訳ありません。今回は XHTML 1.1 でフレームを使う方法をメモ代わりに書いておきます。

正直に言うと XHTML 1.1 としてフレームを使うことはできません。しかし XHTML 1.1 の DTD を自分で拡張して、フレーム対応の規格として使うことはできます。

もともと XHTML 1.1 にはモジュール化されているという特徴があります。XHTML 1.0 で使われていた要素を細かく分け、必要なものを組み合わせ、それに ruby 要素が追加されたものが XHTML 1.1 のセットなのです。XHTML 1.1 に最初から入っていない font や center などの古い要素も、一応部品として定義されていたりします。完全に排除されたわけじゃないんですね。

モジュール化された XHTML というのは、例えるならば、好きなものをトッピングできるうどん屋さんなのです。だから、フレームを使いたければ、フレームのモジュールを DTD に自分で書き加えてやればいいのです。XHTML の元来の意味が拡張できるハイパーテキストマークづけ言語なので、むしろ拡張しまくっちゃっていいのです。

そんなわけで、XHTML 1.1 に準拠しつつフレームを使ったサイトがあってもいいのです。