我正在用PHP构建一个时事通讯生成器,我的一个要求是,一旦电子邮件以超文本标记语言编写,它被检查以查看它是否符合w3标准,如果从验证运行中发现任何无效错误,则会向最终用户抛出通知。
目前,我通过PHP Curl请求使用w3validator API,如下所示:https://github.com/validator/validator/wiki/Service:-Input:-POST-body
我的问题是,我似乎无法让验证器使用XHTML1文档类型来处理html内容。默认情况下,它希望看到解析器文档类型,尽管可以设置查询字符串参数(‘HTML5’),但我能测试的最低版本似乎是HTML4。
我还尝试将'parser‘参数保留为空,并使用值' html’,这将使验证器使用html内容中设置的doctype进行验证,但这也不起作用。
是否可以对有效的XHTML1使用w3standards接口?如果不是,是否有其他API允许我们这样做?
发布于 2016-12-06 23:41:05
这里是W3C HTML检查器(验证器)的维护者。
要根据XHTML1模式检查文档,您需要发送:
具有值http://s.validator.nu/xhtml10/xhtml-strict.rnc
schema
查询参数的application/xhtml+xml; charset=utf-8
的Content-Type
标头
例如,使用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'
…其中,JSON被替换为您想要检查的实际文件的名称,而out=json
查询参数指定您希望来自检查器的FILE.xhtml
格式的结果。(如果需要XML格式的结果,请使用out=xml
;如果希望使用GNU error格式的结果,请使用out=gnu
。)
http://s.validator.nu/xhtml10/xhtml-strict.rnc
只是检查器在内部为XHTML1.0严格模式识别的标识符。在该URL处,Web上没有实际的模式。
检查器识别的此类标识符的列表位于以下文件中:
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
(百分号编码的空格字符)分隔。
https://stackoverflow.com/questions/40997233
复制相似问题