Проверка XHTML5 в PHP?

#php #domdocument #xml-validation #relaxng #html

#php #domdocument #xml-проверка #relaxng #HTML

Вопрос:

Предыстория

Я принял решение обслуживать свой веб-сайт как application/xhtml xml любому, кто его примет. Я понимаю, что есть последствия, которые я готов принять.

Проблема

Я пытаюсь проверить XHTML5 в PHP. Таким образом, я могу использовать файл как text/html в случае сбоя проверки (эй, никто не идеален). Однако мой вопрос имеет смысл, даже если он вынесен за рамки моей ситуации.

Итак, каковы мои варианты проверки XHTML5?


Что я сделал:

Я уже использую PHP DOMDocument в своем исходном коде как форму шаблонизации, поэтому я хотел бы иметь возможность использовать DOMDocument::relaxNGValidate или DOMDocument::schemaValidate.:schemaValidate.: Я не могу найти ни .xsd , ни .rng для использования. Тем не менее, я думаю, что нашел каталог, из которого можно создать грамматику rng. До сегодняшнего дня я никогда даже не слышал о Relax NG. Любая помощь в этом направлении?

Комментарии:

1. Оглядываясь назад, я поторопился, и вы правы, что откатили его назад. Извините за беспокойство.

2. Как насчет того, чтобы взглянуть на исходный код w3c validator validator.w3.org/source , не уверен, что это может помочь.

3. По крайней мере, вы должны знать, что вы создаете, поэтому, на мой взгляд, такой процесс проверки интересен только для тестирования (перед выпуском и тому подобное).

4. @KingCrunch Если я создам код, который нарушает XML, клиент просто сломается, когда я его отправлю application/xhtml xml . Это не очень хорошо. Подавать им text/html суп из тегов намного лучше. Отсюда автоматическая проверка. У нас есть некоторый (очень небольшой) пользовательский контент, и это в первую очередь влияет на этот раздел.

5. Мне кажется, что вам просто нужно убедиться, что XML является допустимым XML, чтобы, если это не так, вы вместо этого отправили его как text/html . Это правильное предположение?

Ответ №1:

Как указал @Kevin Peno, HTML5 — это не XML, и хотя это изначально сбило меня с толку, я смирился с этим и решил рассматривать HTML5 только как конечный формат вывода, вместо документа, который потенциально может быть повторно использован и преобразован с помощью инструментов XML.

Мое предложение, если вы хотите пойти по этому пути, состоит в том, чтобы передать вашу разметку HTML5 через процесс очистки, который гарантирует действительный XML (на ум приходят такие инструменты, как Tidy).

Другой ваш вариант — немного пересмотреть свой подход и использовать HTML в качестве конечного выходного формата. Используйте другой язык разметки для хранения контента и, возможно, даже структуры вашего веб-сайта.

Например, вы могли бы использовать Markdown для содержимого (легко преобразуемого в HTML). Если вы предпочитаете придерживаться XML, возможно, определите свой собственный DSL или повторно используйте такой, как упрощенный DocBook. Это хорошо работало у меня в прошлом.

Затем используйте XSL для преобразования вашего XML mash-up в HTML5 или любой выходной формат, который вам нравится.

Теперь, чтобы попытаться ответить на ваш вопрос напрямую, вам определенно нужно «привести в порядок» разметку HTML5, чтобы убедиться, что это допустимый XML, прежде чем использовать инструмент проверки, такой как RelaxNG или XML Schema. Что касается вашего файла схемы RNG, я бы посоветовал сначала поискать XHTML 1.0 Strict .rng, а затем просмотреть спецификацию HTML5 и добавить элементы и атрибуты по мере необходимости. Быстрый поиск в Google выдал следующее.

В случае, если вы выбираете между RNG и XML-схемой, избавьте себя от головной боли и расслабьтесь. Это мое мнение, но я широко использовал оба варианта, и RelaxNG намного понятнее для человека и с ним проще работать!

Ответ №2:

Новый (Nu) валидатор HTML5 имеет схему RELAX NG для различных настроек, включая XHTML5

Смотрите https://bitbucket.org/validator/syntax/src/ed90a83ab0fd/relaxng https://github.com/validator/validator/tree/master/syntax/relaxng

Это то, что вы ищете, или я запутался?