HTML4正向与HTML5兼容吗?

HTML4正向与HTML5兼容吗?,html,web,standards,html4,Html,Web,Standards,Html4,从作者/服务器的角度来看,HTML4 forward是否与W3C HTML5兼容? 或者,从HTML引擎开发人员/客户端的角度来看,W3C HTML5是否与HTML4向后兼容 我意识到直觉的答案是肯定的,但我发现这种直觉经常出现,因为几乎所有浏览器都支持HTML4和HTML5特性。HTML5不赞成一些东西,所以我可以想象,一个只支持HTML5(没有任何其他doctype概念)的用户代理在处理特定于HTML4的东西时会遇到一些问题 因此,问题的另一种表述方式是:HTML5规范是否涵盖了HTML4涵

从作者/服务器的角度来看,HTML4 forward是否与W3C HTML5兼容? 或者,从HTML引擎开发人员/客户端的角度来看,W3C HTML5是否与HTML4向后兼容

我意识到直觉的答案是肯定的,但我发现这种直觉经常出现,因为几乎所有浏览器都支持HTML4和HTML5特性。HTML5不赞成一些东西,所以我可以想象,一个只支持HTML5(没有任何其他doctype概念)的用户代理在处理特定于HTML4的东西时会遇到一些问题


因此,问题的另一种表述方式是:HTML5规范是否涵盖了HTML4涵盖的所有内容,当遇到过时的特性时,它是否要求实现以指定、定义或实现定义的方式降级?人们普遍认为这些方法可以保证HTML4文档的可用性吗?(如中所述,不仅仅要求实现出错或忽略太多内容。)

简短回答:不,HTML4与HTML5不兼容(从doctype定义开始)


详细回答:

不,HTML4文档通常不是有效的HTML5文档。对于HTML4严格的文档,答案是一样的,不过对于它来说,不兼容可以以合理紧凑的形式列出(比如,大约六页左右)。一个简单的语法示例是
首字母缩写
元素,它在HTML4中是一致的,在HTML5中是不一致的。一个更复杂的问题是
small
元素:在HTML4中,它意味着更小的字体大小;在HTML5中,它有一个模糊的“语义”定义,即“小字体”——因此一个仅为较小字体有效使用
small
的HTML4文档不符合HTML5

并没有一个规范和严格的差异清单。请注意,HTML5正在进行中(HTML4有一些模糊性,尽管它在形式上是“最终的”)

对于HTML5中声明为非格式的大多数HTML4功能,HTML5需要浏览器中的持续支持

HTML5并没有涵盖HTML4涵盖的所有内容,即使是描述性的。除了声明HTML4中的大部分内容已过时外,它还保留了一些HTML4功能,这些功能完全未指定

HTML5规范是否涵盖了HTML4所涵盖的一切,当遇到过时的特性时,是否要求实现以指定、定义或实现定义的方式降级

基本上,是的。涵盖了HTML4和所有以前版本中需要的所有内容,甚至包括像
这样的外来内容

当前的浏览器实际上并不特别支持HTML4,它们将HTML4文档解释为HTML5,具有不同程度的向后兼容性怪癖

有几种文档模式,例如怪癖/几乎标准/标准和HTML/XML模式,但HTML4/HTML5行没有划分(例如,具有完全严格DOCTYPE的HTML4与适当的HTML5得到相同的处理)<代码>即使在为文档添加HTML2.0标签的情况下也可以使用,而
即使在使用HTML5 DOCTYPE的情况下也可以使用

尽管HTML5使一些HTML4元素不一致,但它仍然定义它们,并且仍然需要浏览器支持它们(HTML5对作者的要求不同于HTML5对浏览器供应商的要求):


HTML5旨在与web上使用的HTML4完全向后兼容,故意忽略HTML4规范的理论方面,例如,与SGML语法HTML4相比,它与IE6的HTML tagsoup解析器的兼容性更高,因为这是大多数web网站实际上都兼容的。

感谢您的回答。似乎不同意任何HTML4特性都未指定。从他链接的HTML5的第15条来看,似乎至少所有列出的不一致特性都定义了指定的行为(我只检查了半打)。你知道任何未列出的特性吗?我最近重新考虑过,这可能是最简单、最准确的答案(特别是关于你关于doctype的观点)。然而,事实证明,这并不完全正确。因此,严格的HTML5实现确实知道HTML4,并且会相应地降级。根据其他答案,HTML4文档在降级后是否仍然可以被视为可用/兼容仍然有待讨论。@MarkFernandes我认为甚至没有一个文档明确说明这一点,因为对于浏览器供应商来说,这太明显了:不要破坏网络。浏览器打算支持作者写的任何东西,即使它完全是垃圾。@Komel,我在另一个StackExchange网站上问了大致相同的问题。人们发现,有时候浏览器会在这些问题上“破坏网络”。看见