Con frecuencia he visto un espacio antes de la barra de cierre en las etiquetas XML y HTML. El salto de línea XHTML es probablemente el ejemplo canónico:
<br />
en vez de:
<br/>
El espacio parece superfluo. De hecho, creo que es superfluo.
¿Cuál es la razón para escribir este espacio?
He leído que el espacio resuelve algunos "problemas de compatibilidad con versiones anteriores". ¿Qué problemas de compatibilidad con versiones anteriores? ¿Siguen siendo relevantes esos problemas o seguimos agregando espacios adicionales por, digamos, la compatibilidad con IE3? ¿Existe alguna especificación con la respuesta definitiva sobre esto?
Si no es compatibilidad con versiones anteriores, ¿es un problema de legibilidad? ¿Similar al debate sobre el Gran Abrazo Rizado?
void it_goes_up_here() {
int no_you_fool_it_goes_down_there()
{
Ciertamente puedo respetar las diferentes opiniones estilísticas, así que me alegrará saber que escribir el espacio es simplemente una cuestión de gustos.
fuente
Respuestas:
La respuesta es que la gente desea adherirse al Apéndice C de la especificación XHTML1.0 . Lo que solo debe hacer si está sirviendo XHTML como texto / html . Lo que la mayoría de la gente hace, porque el tipo MIME real de XHTML (aplicación / html + xml) no funciona en Internet Explorer.
Ningún navegador actual se preocupa por el espacio. Los navegadores son muy tolerantes con estas cosas.
El espacio solía ser necesario para garantizar que los analizadores HTML trataran la barra inclinada como un atributo no reconocido.
fuente
Apoyando la respuesta de bobince con captura de pantalla de Netscape 4.80 mostrando documentos
(arriba a la izquierda, salto de línea renderizado) y
(abajo a la izquierda, salto de línea ignorado).
Publicando como respuesta para mostrar la imagen
Tangencialmente relacionado: de hecho, tuve una respuesta larga que identificaba la causa de tal mal comportamiento de los navegadores antiguos (y la recomendación resultante de incluir espacio) en especificaciones SGML mal entendidas, a saber, SGML Null End Tag ( NET ) (donde
1<tag/2/3
equivale a1<tag>2</tag>3
lo1<tag/>2
que en realidad significaría1<tag>>2
), pero no solo no pude encontrar una buena prueba y una versión concreta del estándar, ni siquiera fui capaz de comprender el comportamiento adecuado de cumplimiento del estándar. Tan pocos enlaces sin procesar como referencia:(No se puede reproducir allí ahora, pero es compatible con la declaración de Lee Kowalkowski sobre varios navegadores afectados por esto).
NET "/>"
fuente
Estuviste cerca, es para Netscape 4.
Es interesante ver otras racionalizaciones, pero para eso está destinado.
fuente
No, el espacio no es necesario, pero es necesario que algunos navegadores antiguos representen esas etiquetas correctamente. La forma correcta de hacerlo es sin espacio adicional, ya que es algo que XHTML hereda de XML.
fuente
En XHTML, las etiquetas br deben estar cerradas, pero el espacio no es necesario . Es una cosa estilística. En HTML, las etiquetas br no se pueden cerrar, por lo que ambas son incorrectas.
fuente
El espacio solo hace que las etiquetas sean más legibles. Soy un gran defensor del formato para un código más legible. Pequeñas cosas como esa hacen mucho. Sin el espacio, la etiqueta de cierre se mezcla con la etiqueta de apertura. Me toma solo un instante más procesarlo ya que estoy leyendo rápidamente el código.
fuente
¿Y si hubiera un escritor de HTML muy vago por ahí o tal vez tuviera miedo a las comillas? Considere lo siguiente si fuera su robot rastreador de páginas ...
<img src=http://myunquotedurl.com/image.jpg />
versus
<img src=http://myunquotedurl.com/image.jpg/>
Esto puede parecer pequeño, pero mire lo que puede hacer si el espacio no está allí. El robot no sabrá si la barra es parte de la URL o de la etiqueta de cierre.
fuente
Creo que el espacio en blanco es una forma de reforzar la idea de que esta etiqueta está vacía y se cierra sola.
Hoy ya no uso el espacio en blanco porque nunca tuve un problema sin espacios en blanco.
fuente