哪些HTML元素应该具有非<body>父元素?

3
我正在寻找一份HTML元素列表,这些元素应该有父元素(除了<body>),以便它们具有最合理的语义。
例如,<tr>元素就是这样的一个元素,因为它应该在<tbody><table>元素内部。而<div>元素不属于这样的元素,因为它可以直接放在<body>元素内部。
是否有人知道获取这样的列表的最佳方法?我已经在这个列表中找到了一个起点,但如果有更好的方法可以避免我逐个检查每个元素,那将节省我的时间。

这取决于您使用的HTML版本(例如,在HTML 4.01转换中,< span>可能是< body>的子元素,但在HTML 4.01 Strict中不是)。 - Quentin
我不是在寻找严格的标准,只是大致的最佳实践。如果有影响的话,我们可以考虑使用HTML5。 - Brian R. Bondy
这些不就是所谓的“内联元素”吗?http://htmlhelp.com/reference/html40/inline.html - tomsseisums
@Tom:<tr>不是内联元素。 - BoltClock
这个问题的目的是改进Firefox的复制/粘贴CF_HTML选择。也就是说,我正在尝试确定在哪些情况下应该扩展剪贴板中所包含内容的上下文。 - Brian R. Bondy
1个回答

3
对于HTML 2.0到HTML 4.01和XHTML 1.x之前的版本,请参阅它们在W3C网站上适用规范中链接的DTD(文档类型定义)。 (HTML的早期版本没有像DTD这样明确的形式。 XHTML的后续版本正在向模式移动。 HTML 5的定义方式不会有官方的机器可读规范,但我认为可能会有第三方模式存在)。
查找body元素的定义:
<!ELEMENT BODY O O (%block;|SCRIPT)+ +(INS|DEL) -- document body -->

扩展引用(在本例中为%body;)。

这将为您提供可能是body元素子元素的元素列表。

然后,仅需从该版本的所有元素列表中减去该列表,您就可以得到必须是其他元素的子元素或根元素(<html>)的元素。


谢谢,这个可以用。参考:http://www.w3.org/TR/html4/sgml/dtd.html#block - Brian R. Bondy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接