前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[译]HTML验证的价值探讨

[译]HTML验证的价值探讨

作者头像
小李刀刀
发布2018-03-02 16:45:21
9800
发布2018-03-02 16:45:21
举报
文章被收录于专栏:PHP 开发

[译]HTML验证的价值探讨

作者:Nicholas C. Zakas

原文:http://www.nczonline.net/blog/2010/08/17/the-value-of-html-validation/

这篇文章我已经酝酿了很久,期间还拜读了 Chris Heilmann 关于 Remy Sharp’s site这篇大作。我和Chris曾就这个话题多次交换意见,最终我们彼此的观点都有所改变,接受了一些过去无法接受的意见。我曾经在公开的、私下的各种场合直言不讳地表示过,目前的HTML验证状况对我来说纯粹是浮云。要了解我的看法,你需要先明白HTML验证到底是什么。

什么是HTML验证

HTML验证是对你的网页代码执行一系列验证任务,主要包括:

  1. 代码语法验证 - 检查语法错误。从技术上说,尽管 *不是HTML规范中的一个标签,* 在语法上也是正确的,所以语法验证唯一的作用就是确保编写出合法的HTML代码。
  2. 标签嵌套验证 - 检查标签是否正确地按照打开的先后顺序关闭。比如一个

<div>标签没有被正确关闭的话,在这项检查中就会报错。 3. DTD定义验证 - 检查你的代码是否遵循了指定的DTD的定义。这项验证检查的内容包括标签名称、属性名称、以及标签包含关系(某个标签是否允许被嵌套在另一个内部)。 4. ****异常实体验证***** - 检查是否存在DTD规范中不曾提及的任何东西。通常自定义标签和自定义属性就会在这一项验证中报错。 (*译者注:关于原文中的Outlier Validation,指的是对不属于DTD定义范围内的实体的验证。在数学上,把这种游离于基准之外的值成为离群值,因而在数学上有Outlier Validation - 离群验证的概念。但是在HTML中,对于DTD中的元素、属性,均是实体,这项验证要做的是找出不在定义范围内的异常实体,因此暂译为“异常实体验证”,若您有更好的翻译方案,欢迎探讨。)

请记住:以上这四项验证任务只是为了便于理解而进行的逻辑划分,而不一定是验证器真正的实现方式。如果在某个验证任务上失败了,就说明HTML代码在该项对应的方面存在问题,是不符合规范的。

关于HTML验证的争论

HTML验证的支持者的主要观点是:HTML验证能够保证网页在不同浏览器下的互用性。不同核心的浏览器拥有不同的语法分析器以及HTML验证的具体实现。只有同时满足所有浏览器的要求,你的代码才能始终正常工作。由于每个浏览器在其语法分析器中各自以不同方式来实现纠错功能,因此对于不规范的代码,我们无法预计浏览器会如何呈现它。

而HTML验证的反对者则认为:HTML验证过于严格,而且没有考虑到浏览器的真实工作情况。HTML中的某些情况虽然从技术角度看可能是不合规范的,但是所有的浏览器都能按照相同的方式处理它们(注:并不总是相同的方式)。如果我自己能对自己编写的不规范代码负责,那我就不需要担心什么HTML验证——我真正关注的只是让这个网页正确呈现。

我的观点

我很少会就某个争论的问题公开表态,这恰好是其中之一,希望你喜欢。基于“HTML验证过份严格,不符合实际工作场景”的原因,我一直都属于反对HTML验证的阵营。有一些被浏览器广泛支持的东西(里面的

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • [译]HTML验证的价值探讨
    • 什么是HTML验证
      • 关于HTML验证的争论
        • 我的观点
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档