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

в атрибуте HTML name=value пары, какие символы разрешены для части "имя"? ..... Глядя на некоторые общие атрибуты похоже, что используются только буквы (a-z и A-Z), но какие другие символы также могут быть разрешены?... возможно, цифры (0-9), дефисы ( - ) и периоды (.) ... есть ли спец для этого?

4 ответов


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

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

в нем говорится, что все символы, кроме tab, line feed, form feed, space, solidus, greater than sign, кавычки, Апострофа и знака равенства, будут рассматриваться как часть имени атрибута. Лично я бы не стал пытаться подталкивать крайние случаи этого.


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

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

имена и знаки

[4]     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]
[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.