Frames module content model for html element

The frames module redefines the content model for the html element to be
(head, frameset), and disallows (head, body).  Why?  Any user agent that
supports frames is surely not going to require that documents use frames
and thus will surely support documents that use body instead of
frameset.  This makes the frames module quite unlike all the other

I'm guessing that the reason the frames module does things this way is
because XHTML 1.0 does things this way.  I'm also guessing the reason
that XHTML 1.0 does things this way is because HTML 4 does things this
way.  But why does HTML 4 do things this way? There's a comment in the
HTML 4 DTD that explains:

  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.

In other words, the only reason that HTML.Frameset doesn't define the
content model for HTML to (HEAD, (BODY|FRAMESET)) is because that would
cause problems with the SGML rules on the omission of the start-tag for
the BODY element.  But obviously this reason is irrelevant to both XHTML
1.0 and to XHTML MOD.

I would therefore suggest that the frames module redefine the content
model for html to be (head, (body|frameset)).


Received on Sunday, 14 January 2001 01:48:40 UTC