标记验证,发现错误


Markup Validation, Errors found

我最近尝试验证一个网页,每次我运行验证器它输出相同的错误,尽管页面的结构似乎合法。

<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
...

应该是源有问题,但我不知道是怎么回事。链接到标记验证结果

根据查看文档包含的实际错误,有以下几点建议:

使用当前的W3C HTML检查器https://validator.w3.org/nu/

用https://validator.w3.org/nu/而不是https://validator.w3.org/检查你的文档。

https://validator.w3.org/是用Perl编写的,使用SGML和dtd来执行验证,因此它所能做的检查种类非常有限(例如,它不能对属性值进行精确的数据类型/微语法检查)。如果你的文档使用现代doctype (<!DOCTYPE html>,"HTML5"doctype声明),它只会把文档交给https://validator.w3.org/nu/进行检查。

https://validator.w3.org/nu/根据当前的HTML规范(又名 HTML5)检查你的文档,并包括许多类型的检查https://validator.w3.org/不能做。

检查https://validator.w3.org/nu/?doc=http://demo.amiron.eu/equilibrium/有两点:

始终以<!DOCTYPE html>开始文档

http://demo.amiron.eu/equilibrium/上的文档目前根本没有任何文档类型声明。这是一个彻头彻尾的错误,因为缺少doctype会导致浏览器出现意外行为。如果你使用<!DOCTYPE html>以外的任何doctype,也很容易得到部分doctype错误的方式,导致浏览器的意外行为。

始终在文档中包含<meta charset="utf-8">

http://demo.amiron.eu/equilibrium/的字符编码既没有在提供文档的HTTP头中声明,也没有在文档本身中声明。Web上的文档应该使用UTF-8编码,并且为了确保它们的编码对浏览器和其他工具始终是清晰的,文档应该始终包含<meta charset="utf-8">元素。