Как отметил @Kevin Peno, HTML5 - это не XML, и, хотя это поначалу меня не устраивало, я с этим согласился и решил рассматривать HTML5 только как конечный формат вывода, а не документ с потенциал для повторного использования и преобразования с помощью инструментов XML.
Мое предложение, если вы хотите пойти по этому пути, - передать разметку HTML5 через процесс очистки, который гарантирует действительный XML (на ум приходят такие инструменты, как Tidy).
Другой вариант - немного переосмыслить свой подход и рассматривать HTML как конечный формат вывода. Используйте другой язык разметки для хранения контента и, возможно, даже структуры вашего сайта.
Например, вы можете использовать Markdown для контента (легко конвертируемый в HTML). Если вы предпочитаете придерживаться XML, возможно, определите свой собственный DSL или повторно используйте такой, как Упрощенный DocBook . Это работало хорошо для меня в прошлом.
Затем используйте XSL для преобразования вашего XML-массива в HTML5 или любой другой формат вывода, какой пожелаете.
Теперь, чтобы попытаться ответить на ваш вопрос напрямую, вам, безусловно, необходимо «привести в порядок» разметку HTML5, чтобы убедиться, что это действительный XML, прежде чем использовать инструмент проверки, такой как RelaxNG или XML Schema. Что касается вашего файла схемы RNG, я бы предложил сначала поискать XHTML 1.0 Strict .rng, а затем просмотреть спецификацию HTML5 и добавить элементы и атрибуты по мере необходимости. Быстрый поиск в Google показал следующий .
Если вы выбираете между RNG и XML-схемой, избавьте себя от головной боли и отправляйтесь в RelaxNG. Это мое мнение, но я широко использовал оба, и RelaxNG намного удобнее для восприятия человеком и с ним легче работать!