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