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