根据我的经验,浏览器不会区分HTML5和HTML4文档。它们对两者的行为相同。在浏览器中,<!doctype html>
不会触发任何特殊行为。
<!doctype html>
也不是专门为"HTML5文档"保留 - 它只是最简单的可触发标准模式的文档类型声明。
<table><tr><td>my text</td></tr></table>
以text/html
形式提供时,DOM中创建的表格结构将具有tr作为tbody的直接子元素,tbody作为table的直接子元素。HTML5内容模型表示这是可以的。<table><tr><td>my text</td></tr></table>
以application/xhtml+xml
形式提供时,DOM中创建的表格结构将具有tr作为table的直接子元素。HTML5内容模型表示这也是可以的。由于“历史原因”(即向后兼容性,这对HTML非常重要),某些元素具有额外的限制,甚至超出了它们的内容模型所给出的限制。
表格元素 table
不应包含行元素 tr
,即使根据本规范中描述的内容模型,这些元素在技术上允许位于 table
元素内部。(如果在标记中将 tr
元素放入 table
中,则实际上会暗示它之前有一个 tbody
开始标签。)
请注意,此引用 来自“HTML语法”部分。此部分仅适用于文档、作者工具和标记生成器,而明确不适用于一致性检查器(需要使用HTML解析算法)。
因此:规范说明使用 tr
标签在 tbody
之外是允许的,根据内容模型和解析规范,但是生成HTML的任何工具(包括您)都应该使用 tbody
。
向后兼容性不仅仅限于文档类型声明,脚本可能依赖存在 tbody
元素。