Из того, что я понимаю, определение пользовательских имен совершенно Valid XHTML
Неа. Пользовательские пространства имен отлично хорошо сформированный в XML, но «valid» имеет конкретное значение, которое каждый элемент и атрибут используется в схеме документа. Эта схема может быть DTD, XML-схемой или чем-то еще, но вы должны ее объявить.
Таким образом, вы можете объявить свою собственную схему для добавления пользовательских атрибутов на язык, и действительно, XHTML-модуляция делает это очень просто. Вам нужно добавить ссылку на DTD как <! DOCTYPE> в прологе; просто установка URI пространства имен не дает процессору XML никакого крючка, чтобы найти схему сама по себе.
Но тогда вы написали «действительный my-language-which-a-bit-like-XHTML», а не «действительный XHTML». Некоторые из этих «моих языков» хорошо известны, например «XHTML + MathML + SVG», но он по-прежнему не является XHTML как таковой, и если ваш клиент мертв на «действительном XHTML», вы не можете использовать ни один из них.
У вас также есть потенциальные проблемы с браузером, особенно с IE, который (pre-IE8) выполняет некоторые странные вещи с помощью семейства Element. * EtAttribute * семейства вызовов DOM. И если вы фактически не являетесь документом как XML Content-Type (который IE также не может обрабатывать), все ваше пространство пространства имен фактически не использует пространства имен.
В [X] HTML5 есть предложение разрешить пользовательским атрибутам (главным образом, для сценариев) использовать атрибуты, имена которых начинаются с «data-». Но в то же время обычный метод, чтобы скрыть значения другого атрибута, например класс:
<div class="userid-123">...</div>
и затем извлечь данные, используя соответствующую обработку строки над Classname в сценарии.
Не понимаю, почему валидатор проверил бы DTD для пространства имен. В любом случае, браузер также не проверяет DTD, и я склонен полагать, что вы фактически не используете надлежащий XHTML, т. Е. Вы отправили заголовки Content-type: text/html для этой веб-страницы. Но я могу ошибаться. –