2016-12-06 33 views
0

我正在PHP中構建一個新聞簡報生成器,我的一個要求是,一旦電子郵件已經用HTML編寫,就會檢查它是否符合w3標準,並且通知被拋出如果從驗證運行中發現任何無效錯誤,則爲最終用戶。w3validator API - 測試XHTML1 DOCTYPE

此刻的我通過PHP捲曲請求,利用w3validator API以下這一點:https://github.com/validator/validator/wiki/Service:-Input:-POST-body

我的問題是,我似乎無法得到驗證處理使用XHTML1 DOCTYPE HTML內容。默認情況下,它預計會看到HTML5的文檔類型,儘管可以設置查詢字符串參數('parser'),但我能夠測試的最低版本是HTML4。

我也試着把'parser'參數都留空並用值'html',它應該使驗證器在html內容中使用doctype集進行驗證,但這也不起作用。

是否可以使用w3standards API來驗證XHTML1?如果沒有,是否有替代API可以讓我們這樣做?

+0

你發送什麼內容類型? –

回答

2

這裏是W3C HTML檢查器(驗證器)的維護者。

要檢查的文件對XHTML1模式,你需要發送:

  • schema查詢參數與價值http://s.validator.nu/xhtml10/xhtml-strict.rnc
  • 一個Content-Type標頭值application/xhtml+xml; charset=utf-8

例如,使用curl發送請求,它看起來像這樣:

curl -H "Content-Type: application/xhtml+xml; charset=utf-8" \ 
--data-binary @FILE.xhtml \ 
'https://validator.w3.org/nu/?schema=http://s.validator.nu/xhtml10/xhtml-strict.rnc&out=json' 

...其中FILE.xhtml將替換爲您要檢查的實際文件的名稱,而out=json查詢參數指定您需要來自檢查器的JSON格式的結果。 (使用out=xml如果你想要XML格式的結果,或out=gnu在GNU格式錯誤的結果。)

http://s.validator.nu/xhtml10/xhtml-strict.rnc僅僅是一個標識符檢查內部確認爲XHTML 1.0嚴格的模式。該網址上沒有實際的網絡架構。

這些標識符的是,檢查確認是在下面的文件列表:

https://github.com/validator/validator/blob/master/resources/presets.txt

請注意,您可以通過添加其他標識將schema值包括一些額外的檢查:

curl -H "Content-Type: application/xhtml+xml; charset=utf-8" \ 
--data-binary @FILE.xhtml \ 
'https://validator.w3.org/nu/?schema=http://s.validator.nu/xhtml10/xhtml-strict.rnc%20http://s.validator.nu/html4/assertions.sch%20http://c.validator.nu/all-html4/&out=json' 

模式標識符必須用%20(百分比編碼的空格字符)分隔。