- From: Boris Zbarsky <bzbarsky@MIT.EDU>
- Date: Tue, 17 Apr 2007 11:49:30 -0500
- To: David Dailey <david.dailey@sru.edu>
- CC: public-html@w3.org
David Dailey wrote: > The W3C spec says > "The <http://www.w3.org/TR/html401/struct/tables.html#edef-TBODY>TBODY > start tag is always required except when the table contains only one > table body and no table head or foot sections. Right. When the start tag is not required, it is implied. In particular, the DTD for HTML 4 says: <!ELEMENT TABLE - - (CAPTION?, (COL*|COLGROUP*), THEAD?, TFOOT?, TBODY+)> which means <table> is allowed to contain an optional caption, some col/colgroup tags, an optional thead, an optional tfoot, and tbody tags. It is NOT allowed to directly contain <tr>, for example. At the same time, the DTD says <!ELEMENT TBODY O O (TR)+ -- table body --> Which means that the <tbody> element has optional start and end tags and is allowed to contain <tr> elements. The prose then further restricts when the start tag is optional. If an optional start tag is missing, the parser is required to synthesize it, as I understand SGML. This is actually one area of serious incompatibility between HTML4 and XHTML1 (in the latter, the tbody is well and truly optional, which means the same well-nested markup leads to a different DOM). -Boris
Received on Tuesday, 17 April 2007 16:49:38 UTC