是否有专门针对XHTML 5的验证器,即HTML 5的XML序列化? W3C validator支持文档类型:
HTML 5 (experimental)
:<br>
标记。XHTML 1.0
和XHTML 1.1
个doctypes,它们无法识别HTML 5中的新标记。答案 0 :(得分:5)
您可以使用Validator.nu(X)HTML5 Validator(Living Validator):
请注意,“活动验证器”意味着由于HTML 5规范本身在不断发展,验证器也是如此 - 验证结果可能随着时间的推移而变化(无效标记可能变得有效,否则)。 / p>
另请注意,W3C标记验证服务在验证后明确说明:
位于&lt; ...&gt;的文件已成功检查为HTML5。这意味着有问题的资源将自己标识为“HTML5”,并且我们成功地对其进行了正式验证。我们用于此检查的解析器实现基于validator.nu(HTML5)。
所以Validator.nu实际上是 (X)HTML5验证器。
答案 1 :(得分:4)
HTML 5的W3C验证器实际上确实检测并验证了XHTML 5:
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
并在此验证:
请注意,在浏览器中会显示Before Malformation
和After Malformation
,并且验证程序会传递HTML。
同一标记的内容类型为application/xhtml+xml
:
http://www.alohci.net/application/xhtml+xml/malformed.htm.ashx
并在此验证:
请注意,在Firefox中,您会看到一个黄色的死亡屏幕,在IE9中仅显示文本Before Malformation
,而在Chrome中,文本Before Malformation
显示在一条大错误消息下方。验证器报告错误。
---
现在,当您直接输入标记时,验证程序没有任何内容类型信息可供使用,它会根据您发现的内容,根据html元素上的xmlns属性进行猜测。这只能是猜测,因为值为http://www.w3.org/1999/xhtml
的xmlns属性在HTML序列化中有效。