フレーム集合DTD

フレーム集合DTD

[2] 仕様書:

[1] HTML 4 移行用 DTD には、次のような注釈 (参考) があります。

The content model for HTML documents depends on whether the HEAD is followed by a FRAMESET or BODY element. The widespread omission of the BODY start tag makes it impractical to define the content model without the use of a marked section.

(HTML 文書の内容モデルは head 要素の後が framesetbody かによります。 body 開始タグの省略が広く行われているので、マーク区間を使わずに内容モデルを定義するのは非現実的です。)

[2] SGML の制約により、開始タグを省略できるのはその要素が文脈上必須である場合のみです。 head 要素の後が body 要素だけであった時代はそれで構いませんでしたが、 body の代わりに frameset が使えるとすると body は文脈上必須ではなくなるので、 開始タグが使えなくなってしまいます。

多少内容モデルをあわせて各仕様および実装の辻褄を合わせることも検討されたようですが、 結局最終的には一つの DTD で表現することを諦め、 マーク区間 + 二つの DTD という形になりました。

[3] XHTML 1.0 では (XML ではタグの省略が認められないので) この問題はなくなりましたが、 HTML 4 の3種類の DTD の構成を受け継ぎ、フレーム集合 DTD はやはり独立した DTD として定義されています。 (noframes の問題もありますし。)

XHTML m12n ではフレーム・モジュールを完全に混ぜて普通に使えるようになっています。 (ただし実際にそうするか否かは DTD駆動器の著者次第ですがね。)