2011-10-06 99 views
3

是否有专门用于XHTML 5的验证程序,即HTML 5的XML序列化?该W3C validator支持文档类型:是否有XHTML 5验证程序?

  • HTML 5 (experimental)它把未在XML允许作为有效的各种功能,如隐式关闭<br>标签。
  • 几个XHTML 1.0XHTML 1.1文档类型,不承认在HTML 5
+2

其实,看起来我错了; W3C验证器检查XHTML。 –

+0

请注意,W3C HTML5验证程序实际上*使用* html5.validator.nu代码库(并且它也指出验证成功后) – vaxquis

回答

3

为实际上HTML 5确实检测和验证XHTML 5 W3C验证:

  • 当由URI验证,它使用由服务器提供的内容类型(XHTML如果它指定application/xhtml+xml)。
  • 当通过文件上传或直接输入进行验证时,它会根据文件中是否存在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

4

您可以使用Validator.nu(X)HTML5验证(验证的生活)的新标签:

http://html5.validator.nu/

请注意,“生活验证程序”意味着由于HTML 5规范本身不断发展,验证程序也一样 - 验证结果可能会随着时间的推移而变化(无效标记可能会变得有效,否则)。

而且,请注意,W3C验证服务确认后明确规定:

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

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

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在下面显示一个大的错误消息。验证器报告错误。

--- 

现在,当你直接输入加价,使验证没有任何内容类型信息去,它使一个猜测,因为你已经发现,基于xmlns属性上html元素。这只能是猜测,因为值为http://www.w3.org/1999/xhtml的xmlns属性在HTML序列化中是有效的。