人们普遍认为,验证HTML的最佳理由是确保所有浏览器都能一致且可预测地对待它.
但是,HTML 5草案包含两个规范.首先是作者规范,描述HTML作者应该使用的元素和属性,以及它们之间的相互关系.HTML 5页面的验证基于此规范.包含的元素和属性不是直接从HTML 4中提取的,而是需要从第一原则开始证明,这意味着某些HTML 4功能,例如<table>上的summary属性,<img>上的longdesc和profile属性在<head>上,目前不会出现在此草稿中.这些功能不被视为已弃用,它们根本不包含在内.(他们缺席草案仍然存在争议,尽管很快就会将其纳入其中.)
其次,草案定义了一个浏览器处理规范,该规范试图准确定义浏览器的解析器将如何处理它给出的任何字节流,而不管HTML的形成和有效性如何.这意味着当浏览器完全支持HTML 5时,可以预测任何浏览器如何处理HTML以获得更广泛的输入,而不仅仅是那些通过验证的输入.
特别是,因为HTML 5被定义为100%向后兼容当今的Web,所有有效的HTML 4和所有无效但常用的标记将继续处理与现在完全相同,无论是否HTML 5有效与否.
因此,至少,使用HTML 5,HTML 4或任何以前版本的HTML以及许多专有扩展的任何功能的任何人都可以确信他们的HTML将在所有浏览器中获得一致且可预测的处理.
鉴于此,将HTML 5限制为将验证的是否有任何意义,以及我们将从中获得哪些实际好处?
hsi*_*nen 56
<!DOCTYPE html>. 人们希望遵守这一原因的原因是尽可能以最简单的方式获得标准模式.这是你可以记住的东西,不像你需要每次查找和复制粘贴的HTML 4.01或XHTML 1.0文档类型.当然,你想要标准模式的原因是CSS层上的惊喜更少.longdesc,summary和profile.(请注意,人们不同意这些是否真的浪费时间,但正如目前的草案,HTML5使它们过时了.)也就是说,如果你有足够的资源来改善可访问性,你的有限资源最好花在longdesc和其他东西上.summary.如果您的语义纯度资源有限,那么您的资源最好花在除了确保您拥有正确的咒语之外的其他内容上profile.<font>元素已被淘汰,因为使其符合要求会使反<font>标准主义者认为HTML5人已经疯狂,这可能导致糟糕的公关.<applet>被淘汰主要是因为没有给某个特定插件提供特殊标记.在classid上属性<object>被废弃,因为它在实践中的ActiveX特定的.name属性on <a>和language属性on <script>.(我开发了Validator.nu HTML5验证器,它也是W3C验证器使用的HTML5验证引擎.)
鉴于此,将HTML 5限制为将验证的是否有任何意义,以及我们将从中获得哪些实际好处?
当然是.你忘了未来是不固定的.特别是,您隐含地假设HTML 5规范永远不会更改,并且永远不会弃用任何功能.当然,这只会巩固现状.绝对需要长期取消对某些功能的支持,以便更容易进行新的开发(特别是如果这些可能相互冲突).
生成有效的HTML 5可能没有直接的好处(除了它仍然使验证更容易).但是,如果大多数网站的质量提高,那么可能会有一个长期的好处,因为它使得超越当前技术和标准更容易.
小智 6
即使在HTML5开始之前,验证从来都不是为了在浏览器之间获得一致的结果.那些不理解他们所谈论的人的传播是神话,即使他们认为他们这样做了.
验证的真正原因始终是纯粹的质量保证问题.这只是一种检测错误的方法.即使任何给定错误的结果可能或可能很快变得一致,但浏览器中的结果仍然可能,结果本身仍然不是预期的.
对于作者而言,能够捕获代码中的错误非常重要,因为更简洁,无错误的标记更易于使用和维护,尤其是在团队环境中工作时.虽然大多数个别错误可能最终是良性的并且不会导致任何重大问题,但有些错误可能会产生意外结果.例如,错误地,重叠或未闭合的元素在某些情况下可能会导致意外的布局问题,并让验证器告诉您错误的位置,有助于纠正问题.但如果结果充满了许多其他良性错误,那么它可能会使检测和处理变得更加困难.