Spazio prima della chiusura Slash?


93

Ho visto spesso uno spazio che precede la barra di chiusura nei tag XML e HTML. L'interruzione di riga XHTML è probabilmente l'esempio canonico:

<br />

invece di:

<br/>

Lo spazio sembra superfluo. In effetti, penso che sia superfluo.

Qual è il motivo per scrivere questo spazio?

Ho letto che lo spazio risolve alcuni "problemi di compatibilità all'indietro". Quali problemi di compatibilità con le versioni precedenti? Questi problemi sono ancora rilevanti o stiamo ancora aggiungendo spazi extra per amore, ad esempio, della compatibilità con IE3? Esistono alcune specifiche con la risposta definitiva su questo?

Se non è compatibile con le versioni precedenti, è un problema di leggibilità? Simile al dibattito Great Open Curly Brace?

void it_goes_up_here() {

int no_you_fool_it_goes_down_there()
{

Posso certamente rispettare opinioni stilistiche diverse, quindi sarò felice di apprendere che scrivere lo spazio è semplicemente una questione di gusti.


5
Ci sono così abituato che <br /> sembra molto meglio di <br/>
mk12

Risposte:


64

La risposta è che le persone desiderano aderire all'Appendice C della specifica XHTML1.0 . Cosa che devi fare solo se stai servendo XHTML come testo / html . Cosa che fa la maggior parte delle persone, perché il vero tipo MIME di XHTML (application / html + xml) non funziona in Internet Explorer.

Nessun browser attuale si prende cura dello spazio. I browser tollerano molto queste cose.

Lo spazio necessario per garantire che i parser HTML trattassero la barra finale come un attributo non riconosciuto.


2
Puoi essere più specifico su "usato per essere?" L'anno e / o la versione del browser andranno bene, grazie!
Greg Mattes,

5
Penso che w3.org/TR/xhtml1/#C_2 sia un collegamento più preciso per questa risposta. Quindi, sembra che XHTML 1.0 Appendice C2 sia effettivamente obsoleto e che scrivere lo spazio sia puramente un gusto per la materia.
Greg Mattes,

1
Siamo spiacenti, usato, significa "è" - rispetto al fatto che un parser HTML tratti la barra finale come un attributo non riconosciuto, non tutti i parser HTML sono browser. Non vorrei azzardare un'ipotesi su quale versione del browser sia stata soffocata, ma non ricordo che IE4 o Netscape 4 si siano lamentati.
Lee Kowalkowski,

3
in realtà il vero tipo MIME è application / xhtml + xml.
mk12

3
@JanAagaard: Non lo so, lo ricorderei se così fosse - Ho iniziato lo sviluppo web su IE4 e Netscape 4. Anche quella risposta a cui ti sei collegato ha un commento in tal senso, dice che in realtà è Netscape 3.
Lee Kowalkowski

31

Netscape 4.80 mostra un comportamento diverso di <br/> e <br /> in HTML

Supporto della risposta di bobince con screenshot di Netscape 4.80 che mostra i documenti

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

(in alto a sinistra, interruzione di riga renderizzata) e

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

(in basso a sinistra, interruzione di riga ignorata).


Pubblicazione come risposta per mostrare l'immagine

Correlato tangenzialmente: infatti ho avuto una lunga risposta che identifica la causa di tale comportamento scorretto dei browser antichi (e la conseguente raccomandazione di includere lo spazio) in specifiche SGML fraintese, vale a dire SGML Null End Tag ( NET ) (dove 1<tag/2/3uguale a 1<tag>2</tag>3così 1<tag/>2significherebbe effettivamente 1<tag>>2), ma non solo non ero in grado di trovare una buona prova e una versione concreta dello standard, ma non ero nemmeno in grado di cogliere il corretto comportamento conforme allo standard. Così pochi link grezzi per riferimento:

(Impossibile riprodurre lì ora, ma supporta l'affermazione di Lee Kowalkowski su più browser interessati da questo.)


25

Questi problemi sono ancora rilevanti o stiamo ancora aggiungendo spazi extra per amore, ad esempio, della compatibilità con IE3?

Eri vicino: è per Netscape 4.

È interessante vedere altre razionalizzazioni, ma è tutto ciò a cui era destinato.


2
Grazie! Potete fornire un riferimento per questo?
Greg Mattes

1
Hmm, difficile trovare fonti primarie questo vecchio ... i materiali ufficiali di W3 evitano di menzionare nessuno UA, e la discussione negli elenchi sembra prendere la situazione come letta. Probabilmente c'erano anche altri UA che avevano bisogno dello spazio, ma N4 era l'ultimo, che ha causato problemi ai webmaster per anni.
bobince

Era così che il tuo documento XHTML sarebbe stato visualizzato anche su Netscape. In particolare era per tag di interruzione e tag immagine. Fonte primaria: 10 anni fa stavo codificando per la compatibilità con IE4 e NS3.
Philihp Busby

4

No, lo spazio non è richiesto ma è necessario che alcuni browser meno recenti visualizzino correttamente questi tag. Il modo corretto per farlo è senza lo spazio extra poiché questo è qualcosa che XHTML ha ereditato da XML.


1
Quali browser meno recenti in particolare? Mi interessa sapere se si tratta di browser con una quota di mercato significativa.
Greg Mattes,

Non erano. IE5 e versioni precedenti per lo più.
jmucchiello


3

Lo spazio rende i tag più leggibili. Sono un grande sostenitore della formattazione per un codice più leggibile. Piccole cose del genere fanno molta strada. Senza lo spazio, il tag di chiusura si fonde con il tag di apertura. Mi ci vuole solo un istante in più per elaborarlo mentre leggo rapidamente il codice.


0

E se ci fosse uno scrittore html molto pigro là fuori o forse avesse paura delle virgolette. Considera quanto segue se tu fossi il suo crawler di pagina robot ...

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

contro

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

Potrebbe sembrare piccolo ma guarda cosa può fare se lo spazio non è lì. Il robot non saprà se la barra fa parte dell'URL o parte del tag di chiusura.


12
Bene, ma dovrebbero comunque esserci virgolette intorno all'URL.
Florian Wendelborn

-1

Penso che lo spazio bianco sia un modo per rafforzare l'idea che questo tag è vuoto e si chiude da solo.

Oggi non uso più lo spazio bianco perché non ho mai avuto problemi con lo spazio vuoto.


1
"rinforzare" è una parola appropriata per "forte"
Hao

grazie per averlo notato. è bello vedere che qui abbiamo persone per garantire la qualità della scrittura.
nicruo
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.