¿Espacio antes de cerrar barra?

93

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.

Greg Mattes
fuente
5
Estoy tan acostumbrado que <br /> se ve mucho mejor que <br/>
mk12

Respuestas:

64

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.

Lee Kowalkowski
fuente
2
¿Puede ser más específico sobre "solía ser"? Año y / o versión del navegador, ¡gracias!
Greg Mattes
5
Creo que w3.org/TR/xhtml1/#C_2 es un enlace más preciso para esta respuesta. Entonces, parece que XHTML 1.0 Apéndice C2 es efectivamente obsoleto y que escribir el espacio es puramente cuestión de gusto.
Greg Mattes
1
Lo sentimos, solía ser, significa "es" - con respecto a asegurarse de que un analizador HTML trate la barra final como un atributo no reconocido, no todos los analizadores HTML son navegadores. No me gustaría arriesgarme a adivinar qué versión del navegador se ahogó, si la hay, pero no recuerdo que IE4 o Netscape 4 se quejen.
Lee Kowalkowski
3
en realidad, el tipo de mimo real es application / xhtml + xml.
mk12
3
@JanAagaard: No sé, si es así lo recordaría. Comencé el desarrollo web en IE4 y Netscape 4. Esa respuesta a la que vinculó tiene un comentario en este sentido también, dice que en realidad es Netscape 3.
Lee Kowalkowski
31

Netscape 4.80 muestra un comportamiento diferente de <br/> y <br /> en HTML

Apoyando la respuesta de bobince con captura de pantalla de Netscape 4.80 mostrando documentos

data:text/html,<title>space</title>foo<br />bar

(arriba a la izquierda, salto de línea renderizado) y

data:text/html,<title>no space</title>foo<br/>bar

(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/3equivale a 1<tag>2</tag>3lo 1<tag/>2que en realidad significaría 1<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).

  • XML W3C Working Draft 07-Aug-97 : último borrador de especificaciones que incluye una referencia a la etiqueta de finalización nula en el fragmento de DTD:NET "/>"
mi f
fuente
25

¿Siguen siendo relevantes esos problemas o seguimos agregando espacios adicionales por, digamos, compatibilidad con IE3?

Estuviste cerca, es para Netscape 4.

Es interesante ver otras racionalizaciones, pero para eso está destinado.

bobince
fuente
2
¡Gracias! ¿Puede proporcionar una referencia para esto?
Greg Mattes
1
Mmmm, es difícil encontrar fuentes primarias tan viejas ... los materiales oficiales de W3 evitan mencionar a cualquier AU, y la discusión en las listas parece tomar la situación como se lee. Probablemente había otras UA que también necesitaban el espacio, pero N4 fue el último, que causó problemas a los webmasters durante años.
Bobince
Fue así que su documento XHTML también se renderizaría en Netscape. Específicamente fue para etiquetas de rotura y etiquetas de imagen. Fuente principal: estaba codificando para compatibilidad con IE4 y NS3 hace 10 años.
Philihp Busby
4

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.

Andrew Hare
fuente
1
¿Qué navegadores más antiguos específicamente? Me interesa saber si estamos hablando de navegadores con una participación de mercado significativa.
Greg Mattes
No eran. IE5 y mayores en su mayoría.
jmucchiello
3

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.

pesto
fuente
El Apéndice C de ese documento dice que debería tener un espacio.
182764125216
3

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.

Jim Petkus
fuente
0

¿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.

Jim True
fuente
12
Bueno, pero debería haber comillas alrededor de la URL de todos modos.
Florian Wendelborn
-1

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.

nicruo
fuente
1
"reforzar" es una palabra adecuada para "fuerte"
Hao
gracias por notar eso. es bueno ver que aquí tenemos gente para garantizar la calidad de la escritura.
nicruo