2011-11-08 10 views
5

Mis preguntas son simples:Líneas nuevas y caracteres especiales en atributos HTML

¿Es válido el siguiente texto? Incluso si lo es, ¿se rompería en algunos navegadores?

<div data-text="Blah blah blah 
More blah 
And just a little extra blah to finish"> ... </div> 

Qué personajes "deben" ser codificados en valores de atributos? Sé que " debería ser &quot;, pero ¿se requiere codificar otros?

+0

¿Qué hay de HTML4? ¿Hay reglas diferentes allí? –

Respuesta

5

¿Es el siguiente válido?

Es un fragmento válido de HTML5, sí.

¿Se rompería en algunos navegadores?

Unlikely.

¿Qué caracteres "deben" codificarse en los valores de los atributos? Sé que " debería ser &quot;, pero ¿se requiere codificar otros?

Eso depende de si el valor del atributo es doble entre comillas, comillas simples o sin comillas.

Para el formulario citado doble " debe reemplazarse por su referencia de caracteres, y & puede necesitar ser reemplazado por su referencia de caracteres dependiendo de los caracteres que lo siguen. Ver attribute-value-double-quoted-state

Para la forma comillas simples ' debe ser reemplazado por su referencia de carácter, y & pueden necesitar ser reemplazado por su carácter de referencia en función de los caracteres que le siguen. Ver attribute-value-single-quoted-state

Para la forma no indicada TAB, LINEFEED, FORMFEED, SPACE, > deben ser reemplazados por sus referencias personales, y & pueden necesitar ser reemplazado por su carácter de referencia en función de los caracteres que le siguen. Ver attribute-value-unquoted-state

+0

Hay más caracteres que se deben codificar como parte de [un valor de atributo sin comillas] (http://mathiasbynens.be/notes/unquoted-attribute-values). Por ejemplo, el caracter '' 'debe codificarse, de lo contrario no será HTML5 válido. La razón para esto es que el carácter '' 'se puede usar para salir de un valor de atributo sin comillas en las versiones anteriores de IE. Aquí hay una herramienta que le dirá si un valor de atributo determinado está bien para usar sin comillas: http://mothereff.in/unquoted-attributes#foo%60bar –

+0

En cuanto a cuando '&' necesita ser codificado, vea http://mathiasbynens.be/notes/ambiguous-ampersands. –

1

HTML 5 spec

Existen diferentes requisitos para diferentes atributos por lo que no es una respuesta. Por ejemplo, los atributos de título permiten alimentaciones de líneas, pero un atributo de clase es una línea separada por espacios de tokens de cadenas.

Para los elementos de datos, aunque la especificación dice del espacio de nombres:

no contiene caracteres en el rango de U + 0041 a U + 005A (Latín básico de A a Z Letra latina mayúscula).

Aparte de eso, no hace ninguna distinción.