Я создаю конструктор новостных рассылок на PHP, и одно из моих требований заключается в том, что после того, как электронная почта составлена в HTML, она проверяется на соответствие стандарту w3 и выдается уведомление конечному пользователю, если из проверочный прогон.
На данный момент я использую API w3validator через запрос PHP Curl, следующий за этим: https://github.com/validator/validator/wiki/Service:-Input:-POST-body
Моя проблема в том, что я не могу получить валидатор для обработки html-содержимого с использованием типа документа XHTML1. По умолчанию он ожидает увидеть тип документа HTML5, и, хотя есть возможность установить параметр строки запроса (‘parser’), представляется, что минимальная версия, которую я могу протестировать, — это HTML4.
Я также попытался оставить параметр ‘parser’ пустым и со значением ‘html’, что должно было сделать так, что валидатор использовал для проверки doctype, заданный в html-содержимом, но это тоже не работает.
Можно ли использовать API w3standards для правильного XHTML1? А если нет, то есть ли альтернативный API, который позволил бы нам сделать это?
Сопровождающий проверки 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. В этом URL нет реальной схемы в Интернете.
Список таких идентификаторов, которые распознает программа проверки, находится в следующем файле:
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
(процентный кодированный пробел).
Других решений пока нет …