使用 WDG HTML 验证器修复 HTML
苹果公司决定推广 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 相关的新闻。 但是验证器说
错误:未定义通用实体评分,也没有默认实体
幸运的是,这在 常见问题 部分。 是时候用 & 实体替换链接中的 & 符号了。 这是另一个
错误:元素 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 时,值得花费额外的时间将输出通过验证器,以确保它从一开始就是正确的,而不是在新浏览器或新版本出现时进行故障排除。
电子邮件:dmarti@ssc.com