2011-10-06 51 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序列化中是有效的。