是否有XHTML 5验证器?

时间:2011-10-06 02:03:22

标签: html5 xhtml validation w3c

是否有专门针对XHTML 5的验证器,即HTML 5的XML序列化? W3C validator支持文档类型:

  • HTML 5 (experimental)将其视为XML中不允许的有效各种功能,例如隐式关闭的<br>标记。
  • 多个XHTML 1.0XHTML 1.1个doctypes,它们无法识别HTML 5中的新标记。

3 个答案:

答案 0 :(得分:5)

您可以使用Validator.nu(X)HTML5 Validator(Living Validator):

http://html5.validator.nu/

请注意,“活动验证器”意味着由于HTML 5规范本身在不断发展,验证器也是如此 - 验证结果可能随着时间的推移而变化(无效标记可能变得有效,否则)。 / p>

另请注意,W3C标记验证服务在验证后明确说明:

  

位于&lt; ...&gt;的文件已成功检查为HTML5。这意味着有问题的资源将自己标识为“HTML5”,并且我们成功地对其进行了正式验证。我们用于此检查的解析器实现基于validator.nu(HTML5)。

所以Validator.nu实际上 (X)HTML5验证器。

答案 1 :(得分:4)

HTML 5的W3C验证器实际上确实检测并验证了XHTML 5:

  • 通过URI验证时,它使用服务器提供的内容类型(如果指定application/xhtml+xml,则为XHTML)。
  • 通过文件上传或直接输入进行验证时,会根据文件中是否存在xmlns属性进行猜测。也就是说,

这被标识为XHTML(因此被正确标记为无效):

<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>test</title></head>
<body><br></body></html>

这被标识为HTML(因此正确标记为有效):

<!DOCTYPE html><html>
<head><title>test</title></head>
<body><br></body></html>

修改:显然他们正在删除此自动识别功能。请参阅this bug

答案 2 :(得分:2)

您需要了解验证器如何确定它是处理HTML还是XHTML。

在HTML5之前,这是使用DOCTYPE完成的,但HTML5已不再可能。无论如何,这绝不是一个好主意,因为那不是浏览器所做的。

相反,通过HTTP提供HTML5网页,验证程序遵循浏览器行为并使用内容类型设置确定HTML序列化。

考虑这个标记:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>test</title>
    </head>
    <body>
        Before Malformation
        <br>
        After Malformation
    </body>
</html>

可以看到,此处的内容类型为text/html

http://www.alohci.net/text/html/malformed.htm.ashx

并在此验证:

http://validator.w3.org/check?uri=http%3A%2F%2Fwww.alohci.net%2Ftext%2Fhtml%2Fmalformed.htm.ashx&charset=%28detect+automatically%29&doctype=Inline&ss=1&group=0&user-agent=W3C_Validator%2F1.2

请注意,在浏览器中会显示Before MalformationAfter Malformation,并且验证程序会传递HTML。

同一标记的内容类型为application/xhtml+xml

http://www.alohci.net/application/xhtml+xml/malformed.htm.ashx

并在此验证:

http://validator.w3.org/check?uri=http%3A%2F%2Fwww.alohci.net%2Fapplication%2Fxhtml%2Bxml%2Fmalformed.htm.ashx&charset=%28detect+automatically%29&doctype=Inline&ss=1&group=0&user-agent=W3C_Validator%2F1.2

请注意,在Firefox中,您会看到一个黄色的死亡屏幕,在IE9中仅显示文本Before Malformation,而在Chrome中,文本Before Malformation显示在一条大错误消息下方。验证器报告错误。

 ---

现在,当您直接输入标记时,验证程序没有任何内容类型信息可供使用,它会根据您发现的内容,根据html元素上的xmlns属性进行猜测。这只能是猜测,因为值为http://www.w3.org/1999/xhtml的xmlns属性在HTML序列化中有效。