#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
Это то, что вы ищете, или я запутался?