[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
要素の後が frameset
か body
かによります。 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駆動器の著者次第ですがね。)