Leerzeichen vor dem Schließen des Schrägstrichs?

93

Ich habe häufig ein Leerzeichen vor dem abschließenden Schrägstrich in XML- und HTML-Tags gesehen. Der XHTML-Zeilenumbruch ist wahrscheinlich das kanonische Beispiel:

<br />

anstatt:

<br/>

Der Raum scheint überflüssig. Tatsächlich halte ich es für überflüssig.

Was ist der Grund, diesen Raum zu schreiben?

Ich habe gelesen, dass der Speicherplatz einige "Abwärtskompatibilitätsprobleme" löst. Welche Abwärtskompatibilitätsprobleme? Sind diese Probleme immer noch relevant oder fügen wir noch zusätzliche Leerzeichen hinzu, um beispielsweise die IE3-Kompatibilität zu gewährleisten? Gibt es eine Spezifikation mit der endgültigen Antwort darauf?

Wenn nicht Abwärtskompatibilität, ist es dann ein Lesbarkeitsproblem? Ähnlich wie bei der Debatte um die Great Open Curly Brace?

void it_goes_up_here() {

int no_you_fool_it_goes_down_there()
{

Ich kann sicherlich unterschiedliche stilistische Meinungen respektieren, daher bin ich froh zu erfahren, dass das Schreiben des Raums einfach Geschmackssache ist.

Greg Mattes
quelle
5
Ich bin so daran
gewöhnt,

Antworten:

64

Die Antwort lautet: Personen möchten Anhang C der XHTML1.0-Spezifikation einhalten . Was Sie nur tun müssen, wenn Sie XHTML als Text / HTML bereitstellen . Was die meisten Leute tun, weil der echte MIME-Typ von XHTML (application / html + xml) in Internet Explorer nicht funktioniert.

Kein aktueller Browser kümmert sich um den Speicherplatz. Browser sind sehr tolerant gegenüber diesen Dingen.

Früher war der Speicherplatz erforderlich, um sicherzustellen, dass HTML-Parser den abschließenden Schrägstrich als nicht erkanntes Attribut behandelten.

Lee Kowalkowski
quelle
2
Können Sie genauer sagen, was früher war? Jahr und / oder Browserversion reichen aus, danke!
Greg Mattes
5
Ich denke, dass w3.org/TR/xhtml1/#C_2 ein genauerer Link für diese Antwort ist. Es scheint also, dass XHTML 1.0 Anhang C2 praktisch veraltet ist und dass das Schreiben des Leerzeichens nur eine Frage des Geschmacks ist.
Greg Mattes
1
Tut mir leid, früher bedeutet "ist" - um sicherzustellen, dass ein HTML-Parser den abschließenden Schrägstrich als nicht erkanntes Attribut behandelt, sind nicht alle HTML-Parser Browser. Ich möchte nicht raten, welche Browserversion erstickt ist, aber ich kann mich nicht erinnern, dass sich IE4 oder Netscape 4 beschwert haben.
Lee Kowalkowski
3
Eigentlich ist der eigentliche MIME-Typ application / xhtml + xml.
mk12
3
@JanAagaard: Ich weiß nicht, ich würde mich daran erinnern, wenn ja - ich habe mit der Webentwicklung auf IE4 und Netscape 4 begonnen. Diese Antwort, auf die Sie verlinkt haben, hat auch einen Kommentar zu diesem Effekt. Es heißt, es ist tatsächlich Netscape 3.
Lee Kowalkowski
31

Netscape 4.80 zeigt das unterschiedliche Verhalten von <br/> und <br /> in HTML

Unterstützung der Antwort von Bobince mit einem Screenshot von Netscape 4.80 mit Dokumenten

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

(oben links, Zeilenumbruch gerendert) und

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

(unten links, Zeilenumbruch ignoriert).


Posting als Antwort, um das Bild zu zeigen

Tangential bezogen werden : in der Tat ich die Ursache eines solchen Fehlverhaltens von alten Browsern Identifizierung einer langen Antwort hatte (und die daraus resultierende Empfehlung Raum einschließen) in mißverstanden SGML - Spezifikationen, nämlich SGML Null - End - Tag ( NET ) (wo 1<tag/2/3gleich 1<tag>2</tag>3so 1<tag/>2würde tatsächlich Mittelwert 1<tag>>2), aber Ich war nicht nur nicht in der Lage, einen guten Beweis und eine konkrete Version des Standards zu finden, ich war auch nicht in der Lage, das richtige Verhalten bei der Einhaltung von Standards zu erfassen. So wenige rohe Links als Referenz:

(Kann dort derzeit nicht reproduziert werden, unterstützt jedoch Lee Kowalkowskis Aussage über mehrere davon betroffene Browser.)

myf
quelle
25

Sind diese Probleme immer noch relevant oder fügen wir noch zusätzliche Leerzeichen hinzu, um beispielsweise die IE3-Kompatibilität zu gewährleisten?

Sie waren nah dran - es ist für Netscape 4.

Es ist interessant, andere Rationalisierungen zu sehen, aber das ist alles, wofür es gedacht war.

Bobince
quelle
2
Vielen Dank! Können Sie hierfür eine Referenz angeben?
Greg Mattes
1
Hmm, es ist schwierig, Primärquellen für dieses alte ... offizielle W3-Material zu finden. Vermeiden Sie es, eine UA zu erwähnen, und die Diskussion in den Listen scheint die Situation als gelesen zu betrachten. Es gab wahrscheinlich andere UAs, die ebenfalls Platz brauchten, aber N4 war der letzte, der Webmastern jahrelang Probleme bereitete.
Bobince
Es war so, dass Ihr XHTML-Dokument auch in Netscape gerendert wurde. Speziell für Break-Tags und Image-Tags. Primärquelle: Ich habe vor 10 Jahren für IE4- und NS3-Kompatibilität programmiert.
Philihp Busby
4

Nein, der Speicherplatz wird nicht benötigt, aber einige ältere Browser müssen diese Tags korrekt rendern. Der richtige Weg, dies zu tun, ist ohne zusätzlichen Speicherplatz, da dies etwas ist, das XHTML von XML geerbt hat.

Andrew Hare
quelle
1
Welche älteren Browser speziell? Ich bin daran interessiert zu erfahren, ob es sich um Browser mit erheblichem Marktanteil handelt.
Greg Mattes
Waren nicht. IE5 und älter meistens.
jmucchiello
3

In XHTML müssen br-Tags geschlossen sein, aber der Platz ist nicht erforderlich . Es ist eine stilistische Sache. In HTML können br-Tags nicht geschlossen werden, daher sind beide falsch.

Pesto
quelle
Anhang C dieses Dokuments besagt, dass Sie ein Leerzeichen haben sollten.
182764125216
2

Der Platz macht die Tags nur lesbarer. Ich bin ein großer Befürworter der Formatierung für besser lesbaren Code. Kleinigkeiten wie diese reichen weit. Ohne Leerzeichen fügt sich das schließende Tag in das öffnende Tag ein. Die Verarbeitung dauert nur einen Augenblick länger, da ich den Code schnell lese.

Jim Petkus
quelle
0

Was wäre, wenn es da draußen einen sehr faulen HTML-Autor gäbe oder er Angst vor Anführungszeichen hätte? Betrachten Sie Folgendes, wenn Sie sein Roboterseiten-Crawler waren ...

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

gegen

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

Dies mag klein erscheinen, aber schauen Sie, was es tun kann, wenn der Platz nicht da ist. Der Roboter weiß nicht, ob der Schrägstrich Teil der URL oder Teil des schließenden Tags ist.

Jim True
quelle
12
Nun, aber es sollte trotzdem Anführungszeichen um die URL geben.
Florian Wendelborn
-1

Ich denke, dass der Leerraum eine Möglichkeit ist, die Idee zu verstärken, dass dieses Tag leer ist und sich selbst schließt.

Heute benutze ich den Leerraum nicht mehr, weil ich nie ein Problem ohne Leerraum hatte.

Nicruo
quelle
1
"verstärken" ist ein passendes Wort für "stark"
Hao
Danke, dass du das bemerkt hast. Es ist gut zu sehen, dass wir hier Leute haben, die die Qualität des Schreibens sicherstellen.
Nicruo