使用 WDG HTML 验证器修复 HTML

作者:Don Marti

苹果公司决定推广 KDE 的 KHTML 渲染引擎,并由此将基于 KHTML 的 Konqueror 提升到主要浏览器地位,这使得 Web 标准再次变得重要。 仅在 Microsoft Internet Explorer 中进行测试的网站管理员将会面临 Linux 和 Macintosh 用户(不仅仅是前者)对 HTML 损坏的抱怨。

幸运的是,新的 Apple 浏览器生成了一个令人困惑的 User-Agent 标头,这有助于阻止“浏览器嗅探”。 无论如何,最好让您的网站正确。

如果您的网站遵守标准,而浏览器弄乱了它,您可以指望现在具有竞争力的浏览器开发人员来修复它。 如果您的网站不正确,请准备好接受投诉。

那么,您如何确保您的网站是有效的 HTML,而不是简单地剪切粘贴的、“在我看来很好”的 HTML 呢?

Liam Quinn 的 WDG HTML 验证器 是用几乎无处不在的 Perl 编写的,并作为 CGI 脚本运行,因此您可以将其安装在一个系统上并在任何地方使用它。 您无需将其安装在您的生产 Web 服务器上,网络上的任何系统都可以。

您可以在 WDG 网站上试用验证器,但是如果您有很多页面需要修复,那么在您自己的网站上安装它会更快、更礼貌。 WDG 还提供了一套漂亮的 HTML 标签参考页面,这些页面链接到验证器结果并从中链接,可以帮助您理解和修复错误。 我在几分钟内从 Debian 软件包安装了它; RPM 也可用。

它工作得如何?

我放入了我的全新、干净的个人主页的 URL,该主页使用样式表以我最好的 HTML 4.01 Strict 尝试创建,并且愚蠢地期望它能够干净地验证。 没门。 验证器开始从 <body> 标签开始抱怨。

错误:此元素没有 BGCOLOR 属性。

什么? 我使用 bgcolor 在 body 标签中几乎与我编写 HTML 的时间一样长! 是时候翻书了,动态 HTML:权威参考,第二版,看看是怎么回事。 啊哈! 此属性在 HTML 4.01 中已弃用,而我正在使用“严格” DTD,因此现在是将 bgcolor 移动到它所属的样式表的时候了。 这不是什么大不了的事,但它使实际页面小一点,并让我可以在一个地方更改所有颜色。

body {
    background-color: #aaaaaa;
}

现在,下次 像海盗一样说话日 到来时,我可以将所有内容更改为黑色背景上的白色文本,只需对样式表进行一次编辑,然后专注于我的散文,伙计们。

但是这是什么? 我的页面有一个链接到 http://news.google.com/news?q=linux&scoring=d 以轻松了解与 Linux 相关的新闻。 但是验证器说

错误:未定义通用实体评分,也没有默认实体

幸运的是,这在 常见问题 部分。 是时候用 &amp; 实体替换链接中的 & 符号了。 这是另一个

错误:元素 NOBR 未定义

我翻阅了这本书,结果发现 <nobr> 标签根本从未标准化过; 它是浏览器恰好识别的“民间 HTML”。 在这种情况下,我将删除标签,放松并让浏览器以它想要的方式流动文本。

HTML 错误列表中的下一个项目出现在第 129 行

错误:省略了 TT 的结束标记,但其声明不允许这样做

紧随其后的是第 131 行的这个

错误:元素 TT 的结束标记未打开

啊哈! 这显然是马虎的 HTML。 我在 <p> 内启动了一个 <tt>,但是 </tt> 在 </p> 之后。 它在我使用的浏览器中看起来不错,但是这种错误正是导致不同浏览器反应不同的那种错误。 请记住,浏览器之间的大部分显着差异在于它们如何对错误做出反应,而不是它们如何处理正确的 HTML。 在您开始嗅探 User-Agent 和其他丑陋的东西之前,请确保您的页面是标准的。

接下来,在带有 <blockquote> 标签的行中,有

错误:此处不允许字符数据

查看 从验证器结果链接的参考页面,问题是:“BLOCKQUOTE 元素的内容应包含在其他块级元素(通常是 P)中。” 是时候确保我不使用 <blockquote>,而是使用 <blockquote><p> 了。

在出现更多错误之后,这个过程变得乏味。 为什么我一开始不验证这个东西并一次修复一个错误? 为什么我编写了一个快速而肮脏的转换脚本,该脚本不小心匹配 <p> 和 </p>? 快速绕道到一个朋友的页面显示他的第一个错误在第 1 行。 哈! 不仅仅是我。

一直以来,验证器输出都使跟踪问题变得容易。 使用 Mozilla 标签,我可以在浏览器中的页面和验证器结果之间切换。

最后,出现了“恭喜,没有错误!”消息。 与修复深度自动生成的站点中的损坏相比,修复个人主页是一件很小的工作。 在编写软件以自动生成 HTML 时,值得花费额外的时间将输出通过验证器,以确保它从一开始就是正确的,而不是在新浏览器或新版本出现时进行故障排除。

资源

从我们的合作伙伴书店 Powell's 购买 HTML: 权威参考,第二版

Don MartiLinux Journal 的主编。

电子邮件:dmarti@ssc.com

加载 Disqus 评论