Ответ 1

На самом деле существует разница между HTML и XHTML. Поскольку XHTML является XML, применяются правила для XML-идентификаторов:

Значения идентификатора типа ДОЛЖНЫ совпадать с производством Name.

NameStartChar ::=   ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] |
                          [#xD8-#xF6] | [#xF8-#x2FF] |
                          [#x370-#x37D] | [#x37F-#x1FFF] |
                          [#x200C-#x200D] | [#x2070-#x218F] |
                          [#x2C00-#x2FEF] | [#x3001-#xD7FF] |
                          [#xF900-#xFDCF] | [#xFDF0-#xFFFD] |
                          [#x10000-#xEFFFF]

NameChar     ::=      NameStartChar | "-" | "." | [0-9] | #xB7 |
                        [#x0300-#x036F] | [#x203F-#x2040]

Источник: Расширяемый язык разметки (XML) 1.0 (пятое издание) 2.3

Для HTML применяется следующее:

id = name [CS]
Этот атрибут присваивает имя элементу. Это имя должно быть уникальным в документе.

Идентификаторы идентификатора и NAME должны начинаться с письмо ([A-Za-z]) и может быть выполнено любым количеством букв, цифр ([0-9]), дефис (" - "), подчеркивание (" _ "), двоеточия (": ") и периоды (" ").

Источник: Спецификация HTML 4, глава 6, токен идентификатора

Ответ 2

Спецификация W3C Основные типы данных HTML говорит, что токены ID и NAME должны начинаться с буквы ([A-Za-z]) и может следовать любое количество букв, цифр ([0-9]), дефис ( "-" ), подчеркивание ( "_" ), двоеточия ( ":" ) и периоды ( "." ) ".

Ответ 3

Если мы берем название вашего вопроса буквально, то не применяются ни правила HTML, ни правила XHTML. Вместо этого соответствующий spec является DOM.

Принимая DOM Level 3 как наш источник и предполагая, что под "DOM ID" вы подразумеваете атрибут с установленным флагом "ID", тогда это значение "DOMString", символами которого могут быть любые UTF-16 кодируемый символ.

16-разрядная единица

Базовый блок DOMString. Это указывает на то, что индексирование на DOMString происходит в единицах 16 бит. Это должно не следует понимать неправильно, чтобы DOMString может хранить произвольные 16-битные единицы. DOMString - символ строка, закодированная в UTF-16; это означает что ограничения UTF-16 как а также другие соответствующие ограничения на символьные строки должны поддерживаться. Один символ для пример в виде числового символьная ссылка, может соответствовать один или два 16-битных блока.

Конечно, это, вероятно, не то, что вы хотите, и что ответ Людвига Вайнцьера - это то, что вы искали. Однако разумно понять, что не все DOM могут быть сериализованы как HTML или XHTML и что DOM имеет собственный набор правил.

Ответ 4

В соответствии со спецификациями HTML 4.0

Идентификаторы ID и NAME должны начинаться с буквы ([A-Za-z]), за которой может следовать любое количество букв, цифр ([0-9]), дефис ( "-" ), подчеркивание ( "_" ), двоеточие ( ":" ) и периоды ( "." ).

Ответ 5

Для правильного html aka xhtml, Филипп прав. Нет пробелов или специальных символов (конечно, не требующих экранирования) для атрибутов id. Только 52-символьный алфавит, верхний и нижний регистр, цифры 0-9, дефисы ( "-" ), подчеркивания ( "_" ), двоеточия ( ":" ) и периоды ( "." )