Какие символы допустимы в имени атрибута HTML?

В атрибутах name = value в атрибутах HTML, каковы символы, разрешенные для части «имя»? ….. Рассматривая некоторые общие атрибуты, кажется, что используются только буквы (az и AZ), но какие другие символы могут быть разрешены? … может быть цифры (0-9), дефисы (-) и периоды (.) … есть ли спецификация для этого?

Это зависит от того, что вы подразумеваете под «разрешенным». Каждый тег имеет фиксированный список имен атрибутов, которые действительны, а в html они нечувствительны к регистру. В одном важном смысле, только эти символы в правильной последовательности «разрешены».

Другой способ взглянуть на это – это то, что символы будут рассматривать браузеры как допустимое имя атрибута. Лучший совет здесь приведен в спецификации парсера HTML 5, которую можно найти здесь: https://html.spec.whatwg.org/multipage/syntax.html#attributes-2

В нем говорится, что все символы, кроме табуляции, фида, формы, пространства, солида, больше знака, кавычки, апострофа и знака равенства будут рассматриваться как часть имени атрибута. Лично я бы не попытался надавить на это край.

Предполагая, что вы говорите о XHTML, применяются правила XML.

См. http://www.w3.org/TR/2008/REC-xml-20081126/#NT-Name

Имена и токены

 [4] NameStartChar ::= ":" | [AZ] | "_" | [az] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF] [4a] NameChar ::= NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040] [5] Name ::= NameStartChar (NameChar)* [6] Names ::= Name (#x20 Name)* [7] Nmtoken ::= (NameChar)+ [8] Nmtokens ::= Nmtoken (#x20 Nmtoken)* 

Может быть, мне что-то не хватает, но я считаю, что вопрос основан на ложном предположении. В HTML атрибуты строго определены в соответствии с фиксированной спецификацией. Если вы создаете свои собственные имена атрибутов, вы больше не пишете допустимый HTML.

Допустимые значения перечислены в w3.org . Если вы добавите пользовательский атрибут, вы больше не пишете HTML.