w3validator API - 测试XHTML1 DOCTYPE

时间:2016-12-06 14:05:28

标签: php email w3c w3c-validation xhtml-1.0-strict

我正在使用PHP构建新闻稿构建器,我的一个要求是,一旦电子邮件以HTML格式编写,就会检查它是否符合w3标准,如果有任何无效错误,会向最终用户发出通知从验证运行中找到。

目前我正在通过PHP Curl请求使用w3validator API:https://github.com/validator/validator/wiki/Service:-Input:-POST-body

我的问题是我似乎无法使用XHTML1 doctype来验证验证器处理html内容。默认情况下,它希望看到HTML5 doctype,虽然有能力设置查询字符串参数('parser'),但我能够测试的最低版本似乎是HTML4。

我还尝试将'parser'参数留空并且值为'html',这应该使验证器使用html内容中设置的doctype进行验证,但这也不起作用。

是否可以使用w3standards api来有效使用XHTML1?如果没有,是否有替代API可以让我们这样做?

1 个答案:

答案 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格式的结果。 (如果您需要XML格式的结果,请使用out=xml,或使用GNU错误格式的结果使用out=gnu。)

http://s.validator.nu/xhtml10/xhtml-strict.rnc只是检查器在内部识别XHTML 1.0 Strict模式的标识符。该网址上的网络上没有实际的架构。

检查程序识别的此类标识符的列表位于以下文件中:

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(百分比编码的空格字符)分隔。