[2] 仕様書:
- [[HTML 4]]
--[[移行用DTD]]
[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.
([Q[HTML 文書の内容モデルは [CODE(HTMLe)[head]] 要素の後が [CODE(HTMLe)[frameset]] か [CODE(HTMLe)[body]] かによります。 [CODE(HTMLe)[body]] 開始タグの省略が広く行われているので、マーク区間を使わずに内容モデルを定義するのは非現実的です。]])
[2] [[SGML]] の制約により、[[開始タグ]]を省略できるのはその要素が文脈上必須である場合のみです。
[CODE(HTMLe)[head]] 要素の後が [CODE(HTMLe)[body]]
要素だけであった時代はそれで構いませんでしたが、
[CODE(HTMLe)[body]] の代わりに [CODE(HTMLe)[[[frameset]]]]
が使えるとすると [CODE(HTMLe)[body]] は文脈上必須ではなくなるので、
開始タグが使えなくなってしまいます。
多少内容モデルをあわせて各仕様および実装の辻褄を合わせることも検討されたようですが、
結局最終的には一つの [[DTD]] で表現することを諦め、
[[マーク区間]] + 二つの [[DTD]] という形になりました。
[3] [[XHTML 1.0]] では [WEAK[([[XML]] ではタグの省略が認められないので)]]
この問題はなくなりましたが、 HTML 4 の3種類の DTD
の構成を受け継ぎ、フレーム集合 DTD はやはり独立した
DTD として定義されています。
[WEAK[([CODE(HTMLe)[[[noframes]]]] の問題もありますし。)]]
[[XHTML m12n]] ではフレーム・モジュールを完全に混ぜて普通に使えるようになっています。
(ただし実際にそうするか否かは [[DTD駆動器]]の著者次第ですがね。)