我正在使用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可以让我们这样做?
答案 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
(百分比编码的空格字符)分隔。