¿Qué caracteres se permiten en un nombre de atributo HTML?


In HTML attribute name=value pairs, what are the characters allowed for the 'name' portion? ..... Mirando algunos atributos comunes parece que solo se usan letras (a-z y A-Z), pero ¿qué otros caracteres también se podrían permitir?... tal vez dígitos (0-9), guiones ( - ) y puntos (.) ... hay alguna especificación para esto?

Author: Deduplicator, 2009-05-29

4 answers

Depende de lo que quieras decir con "permitido". Cada etiqueta tiene una lista fija de nombres de atributos que son válidos, y en html no distinguen entre mayúsculas y minúsculas. En un sentido importante, solo estos caracteres en la secuencia correcta son "permitidos".

Otra forma de verlo, es qué caracteres tratarán los navegadores como un nombre de atributo válido. El mejor consejo aquí viene de la especificación del analizador de HTML 5, que se puede encontrar aquí: https://html.spec.whatwg.org/multipage/syntax.html#attributes-2

Dice que todos los caracteres excepto tab, line feed, form feed, space, solidus, greater than sign, quote mark, apostrophe y equals sign serán tratados como parte del nombre del atributo. Personalmente, no intentaría empujar los casos extremos de esto sin embargo.

 45
Author: Alohci,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-18 13:58:31

Suponiendo que esté hablando de XHTML, se aplican las reglas XML.

Véase http://www.w3.org/TR/2008/REC-xml-20081126/#NT-Name

Nombres y fichas

[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)*
 18
Author: S.Lott,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-05-29 13:39:58

Tal vez me estoy perdiendo algo, pero creo que la pregunta se basa en una suposición falsa. En HTML, los atributos se definen estrictamente de acuerdo con una especificación fija. Si 'inventas' tus propios nombres de atributo, ya no estás escribiendo HTML válido.

 9
Author: Daan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-05-29 13:44:39

Los valores permitidos se enumeran en w3.org. Si agrega un atributo personalizado, entonces ya no está escribiendo HTML.

 4
Author: Quentin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-07-12 09:08:41