我总是这样做<div style="clear:both;"></div>
来清除浮点数,但如果HTML是XML,我不能只做<div style="clear:both;" />
,因为在XML中它们是同一个东西吗?
如果没有,为什么不呢?
答案 0 :(得分:2)
不,你有两个原因:
1)HTML不是XML:
通用术语“HTML”实际上指的是许多标准,其中较旧的标准(4.01之前版本)表示与XML基本上不兼容的规则(例如<br>
是一个有效的HTML 4.01标签,它是自动关闭但是显然不遵守应该将其写为<br />
)的XML规则。
2)XML不是HTML:
通用术语“XML”是指定义有效XML文档或代码段必须遵循的语法的标准。但语法在这样的一般定义中没有语义。另一方面,HTML也为其标签添加了语义。因此,有效XML文档集大于HTML中有意义的XML文档(例如语义)(例如标记<tag />
是一个语法上有效的XML标记,但它在HTML中没有意义)。
您可以在XML中自行关闭标记并不意味着您可以使用HTML,而您在XHTML中可以做的任何事情都是合法的XML。
你的假设是一个谬论,也许你应该反思一下,看看你是如何推断逆向的。
也就是说,在HTML中指定了哪些标签是自动关闭的,如img
等。 div
根本就不在其中,不能自我封闭。
在逻辑学中你可以写:
X is the set of all rules of XML
H is the set of all rules of XHTML
if r is a rule in H, then r is a rule in X:
r|H ===> r|X
if s is a rule in X, then s is not necessarily a rule in H:
s|X =/=> s|H
in fact, if we had s|x ===> s|H then we would have:
X === H
but we know that X =/= H
希望这可以更清楚地解释你的谬论。