Espaço antes de fechar o Slash?


93

Freqüentemente, vejo um espaço antes da barra de fechamento em tags XML e HTML. A quebra de linha XHTML é provavelmente o exemplo canônico:

<br />

ao invés de:

<br/>

O espaço parece supérfluo. Na verdade, acho que é supérfluo.

Qual a razão de escrever este espaço?

Eu li que o espaço resolve alguns "problemas de compatibilidade com versões anteriores". Quais problemas de compatibilidade com versões anteriores? Essas questões ainda são relevantes ou ainda estamos adicionando espaços extras para, digamos, compatibilidade com o IE3? Existe alguma especificação com a resposta definitiva sobre isso?

Se não for compatibilidade com versões anteriores, é um problema de legibilidade? Semelhante ao debate do Great Open Curly Brace?

void it_goes_up_here() {

int no_you_fool_it_goes_down_there()
{

Certamente posso respeitar as diferentes opiniões estilísticas, então ficarei feliz em saber que escrever o espaço é simplesmente uma questão de gosto.


5
Estou tão acostumado com isso que <br /> parece muito melhor do que <br/>
mk12

Respostas:


64

A resposta é que as pessoas desejam aderir ao Apêndice C da especificação XHTML1.0 . O que você só precisa fazer se estiver servindo XHTML como texto / html . O que a maioria das pessoas faz, porque o tipo MIME real do XHTML (aplicativo / html + xml) não funciona no Internet Explorer.

Nenhum navegador atual se preocupa com o espaço. Os navegadores são muito tolerantes com essas coisas.

O espaço costumava ser necessário para garantir que os analisadores HTML tratassem a barra final como um atributo não reconhecido.


2
Você pode ser mais específico sobre "costumava ser?" O ano e / ou a versão do navegador bastarão, obrigado!
Greg Mattes de

5
Acho que w3.org/TR/xhtml1/#C_2 é um link mais preciso para esta resposta. Portanto, parece que o Apêndice C2 do XHTML 1.0 está efetivamente obsoleto e que escrever o espaço é puramente uma questão de gosto.
Greg Mattes

1
Desculpe, costumava ser, significa "é" - com relação a garantir que um analisador HTML trate a barra final como um atributo não reconhecido, nem todos os analisadores HTML são navegadores. Eu não gostaria de adivinhar qual versão do navegador engasgou, se houver, mas não me lembro de reclamar do IE4 ou do Netscape 4.
Lee Kowalkowski

3
na verdade, o tipo MIME real é application / xhtml + xml.
mk12,

3
@JanAagaard: Não sei, eu me lembraria disso - comecei o desenvolvimento web no IE4 e no Netscape 4. Essa resposta que você vinculou também tem um comentário a esse respeito, diz que é na verdade o Netscape 3.
Lee Kowalkowski

31

Netscape 4.80 mostrando comportamento diferente de <br/> e <br /> em HTML

Apoiando a resposta de bobince com a captura de tela do Netscape 4.80 mostrando documentos

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

(canto superior esquerdo, quebra de linha renderizado) e

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

(canto inferior esquerdo, quebra de linha ignorada).


Postando como resposta para mostrar a foto

Tangencialmente relacionados: na verdade eu tinha uma resposta longa identificar a causa de tal mau comportamento dos navegadores antigos (e recomendações resultantes de incluir espaço) em especificações incompreendido SGML, nomeadamente Tag SGML Null End ( NET ) (onde 1<tag/2/3é igual 1<tag>2</tag>3modo 1<tag/>2significaria realmente 1<tag>>2), mas não apenas fui incapaz de encontrar uma boa prova e uma versão concreta do padrão, como também não fui capaz de compreender o comportamento adequado de conformidade com o padrão. Poucos links brutos para referência:

(Não é possível reproduzir lá agora, mas apóia a declaração de Lee Kowalkowski sobre vários navegadores afetados por isso.)


25

Essas questões ainda são relevantes ou ainda estamos adicionando espaços extras para, digamos, compatibilidade com o IE3?

Você chegou perto - é para o Netscape 4.

É interessante ver outras racionalizações, mas era só para isso.


2
Obrigado! Você pode fornecer uma referência para isso?
Greg Mattes

1
Hmm, difícil encontrar fontes primárias tão antigas ... os materiais oficiais do W3 evitam mencionar qualquer UA, e a discussão nas listas parece levar a situação como lida. Provavelmente havia outros UAs que também precisavam de espaço, mas o N4 foi o último, que causou problemas aos webmasters por anos.
bobince

Era para que seu documento XHTML também fosse renderizado no Netscape. Especificamente, era para tags de quebra e tags de imagem. Fonte primária: Eu estava programando para compatibilidade com IE4 e NS3 há 10 anos.
Philihp Busby

4

Não, o espaço não é necessário, mas é necessário para alguns navegadores mais antigos renderizar essas tags corretamente. A maneira correta de fazer isso é sem o espaço extra, pois isso é algo que o XHTML herdou do XML.


1
Quais navegadores mais antigos especificamente? Estou interessado em saber se estamos falando de navegadores com participação de mercado significativa.
Greg Mattes de

Não estivessem. IE5 e mais velhos principalmente.
jmucchiello de


3

O espaço apenas torna as tags mais legíveis. Sou um grande defensor da formatação para um código mais legível. Coisas pequenas como essa vão longe. Sem o espaço, a tag de fechamento se mistura com a tag de abertura. Demoro apenas um instante a mais para processá-lo, pois estou lendo o código rapidamente.


0

E se houvesse um escritor de html muito preguiçoso por aí ou talvez ele tivesse medo de aspas? Considere o seguinte se você fosse o rastreador de página do robô dele ...

<img src=http://myunquotedurl.com/image.jpg />

versus

<img src=http://myunquotedurl.com/image.jpg/>

Pode parecer pequeno, mas veja o que pode fazer se não houver espaço. O robô não saberá se a barra faz parte do url ou da tag de fechamento.


12
Bem, mas deve haver aspas em torno do url de qualquer maneira.
Florian Wendelborn

-1

Acho que o espaço em branco é uma forma de reforçar a ideia de que essa tag está vazia e se fecha sozinha.

Hoje eu não uso mais o espaço em branco porque nunca tive um problema sem espaço em branco.


1
"reforçar" é uma palavra adequada para "forte"
Hao

obrigado por notar isso. é bom ver que aqui temos pessoas para garantir a qualidade da redação.
Nicruo de
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.