Spasi Sebelum Menutup Slash?

93

Saya sering melihat spasi sebelum garis miring penutup dalam tag XML dan HTML. Hentian baris XHTML mungkin adalah contoh kanonik:

<br />

dari pada:

<br/>

Ruang tampaknya berlebihan. Faktanya, saya pikir itu tidak berguna.

Apa alasan menulis space ini?

Saya telah membaca bahwa space memecahkan beberapa "masalah kompatibilitas ke belakang." Masalah kompatibilitas mundur mana? Apakah masalah tersebut masih relevan, atau apakah kami masih menambahkan spasi ekstra demi, katakanlah, kompatibilitas IE3? Apakah ada beberapa spesifikasi dengan jawaban pasti untuk ini?

Jika bukan kompatibilitas mundur, apakah itu masalah keterbacaan? Mirip dengan debat Great Open Curly Brace?

void it_goes_up_here() {

int no_you_fool_it_goes_down_there()
{

Saya pasti dapat menghargai pendapat gaya yang berbeda, jadi saya akan senang mengetahui bahwa menulis ruang hanyalah masalah selera.

Greg Mattes
sumber
5
Saya sudah terbiasa dengan <br /> terlihat jauh lebih baik daripada <br/>
mk12

Jawaban:

64

Jawabannya adalah orang-orang ingin mematuhi Lampiran C dari spesifikasi XHTML1.0 . Yang hanya perlu Anda lakukan jika Anda menyajikan XHTML sebagai teks / html . Yang dilakukan kebanyakan orang, karena tipe MIME asli XHTML (application / html + xml) tidak berfungsi di Internet Explorer.

Tidak ada browser saat ini yang peduli dengan ruang. Browser sangat toleran terhadap hal-hal ini.

Ruang yang digunakan untuk memastikan parser HTML memperlakukan garis miring sebagai atribut yang tidak dikenali.

Lee Kowalkowski
sumber
2
Bisakah Anda lebih spesifik tentang "dulu?" Tahun dan / atau versi browser sudah cukup, terima kasih!
Greg Mattes
5
Saya pikir w3.org/TR/xhtml1/#C_2 adalah tautan yang lebih tepat untuk jawaban ini. Jadi, tampaknya XHTML 1.0 Appendix C2 secara efektif sudah usang dan menulis ruang hanyalah masalah selera.
Greg Mattes
1
Maaf, dulu, artinya "adalah" - sehubungan dengan memastikan parser HTML memperlakukan garis miring sebagai atribut yang tidak dikenali, tidak semua parser HTML adalah browser. Saya tidak ingin menebak versi browser mana yang tersedak jika ada, tetapi saya tidak ingat IE4 atau Netscape 4 mengeluh.
Lee Kowalkowski
3
sebenarnya tipe pantomim sebenarnya adalah application / xhtml + xml.
mk12
3
@ JanAagaard: Entahlah, saya akan mengingatnya jika demikian - Saya memulai pengembangan web di IE4 dan Netscape 4. Jawaban yang Anda tautkan memiliki komentar untuk efek ini juga, katanya sebenarnya Netscape 3.
Lee Kowalkowski
31

Netscape 4.80 menunjukkan perilaku <br/> dan <br /> yang berbeda dalam HTML

Mendukung jawaban bobince dengan tangkapan layar Netscape 4.80 yang memperlihatkan dokumen

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

(kiri atas, penghentian baris diberikan) dan

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

(kiri bawah, penghentian baris diabaikan).


Posting sebagai jawaban untuk menampilkan gambar

Tangensial terkait: sebenarnya saya punya jawaban yang panjang mengidentifikasi penyebab perilaku seperti browser kuno (dan rekomendasi yang dihasilkan untuk memasukkan spasi) dalam spesifikasi disalahpahami SGML, yaitu SGML Null End Tag ( NET ) (di mana 1<tag/2/3sama 1<tag>2</tag>3sehingga 1<tag/>2akan benar-benar berarti 1<tag>>2), tapi tidak hanya saya tidak dapat menemukan bukti yang baik dan versi konkret dari standar, saya bahkan tidak dapat memahami perilaku mematuhi standar yang tepat. Sangat sedikit tautan mentah untuk referensi:

(Tidak dapat mereproduksi di sana sekarang, tetapi mendukung pernyataan Lee Kowalkowski tentang beberapa browser yang terpengaruh oleh ini.)

myf
sumber
25

Apakah masalah tersebut masih relevan atau apakah kami masih menambahkan ruang ekstra demi, katakanlah, kompatibilitas IE3?

Anda sudah dekat - ini untuk Netscape 4.

Menarik untuk melihat rasionalisasi lain, tapi hanya itu yang dimaksudkan.

bobince
sumber
2
Terima kasih! Bisakah Anda memberikan referensi untuk ini?
Greg Mattes
1
Hmm, sulit untuk menemukan sumber primer lama ini ... bahan resmi W3 menghindari menyebutkan salah satu UA, dan diskusi dalam daftar tampaknya mengambil situasi seperti yang telah dibaca. Mungkin ada UA lain yang juga membutuhkan ruang, tetapi N4 adalah yang terakhir, yang menyebabkan masalah webmaster selama bertahun-tahun.
sejak
Itu agar dokumen XHTML Anda juga akan ditampilkan di Netscape. Khususnya itu untuk tag break dan tag gambar. Sumber Utama: Saya telah membuat kode untuk kompatibilitas IE4 dan NS3 10 tahun yang lalu.
Philihp Busby
4

Tidak, spasi tidak diperlukan tetapi diperlukan beberapa browser lama untuk merender tag tersebut dengan benar. Cara yang tepat untuk melakukannya adalah tanpa ruang ekstra karena ini adalah XHTML yang diwarisi dari XML.

Andrew Hare
sumber
1
Peramban lama mana yang secara spesifik? Saya tertarik untuk mempelajari apakah kita berbicara tentang browser dengan pangsa pasar yang signifikan.
Greg Mattes
Tidak. IE5 dan yang lebih tua kebanyakan.
jmucchiello
3

Dalam XHTML, tag br harus ditutup, tetapi spasi tidak diperlukan . Ini hal gaya. Di HTML, tag br tidak bisa ditutup, jadi keduanya salah.

pesto
sumber
Lampiran C dokumen itu mengatakan Anda harus memiliki spasi.
182764125216
3

Spasi membuat tag lebih mudah dibaca. Saya adalah pendukung besar pemformatan untuk kode yang lebih mudah dibaca. Hal-hal kecil seperti itu sangat bermanfaat. Tanpa spasi, tag penutup menyatu dengan tag pembuka. Hanya butuh waktu lebih lama bagi saya untuk memprosesnya karena saya membaca kodenya dengan cepat.

Jim Petkus
sumber
0

Bagaimana jika ada penulis html yang sangat malas di luar sana atau mungkin dia takut dengan tanda kutip. Pertimbangkan hal berikut jika Anda adalah perayap halaman robotnya ...

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

melawan

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

Ini mungkin tampak kecil tetapi lihat apa yang bisa dilakukannya jika ruang tidak ada. Robot tidak akan tahu apakah garis miring adalah bagian dari url atau bagian dari tag penutup.

Jim True
sumber
12
Ya, tapi harus ada tanda kutip di sekitar url.
Florian Wendelborn
-1

Menurut saya, ruang putih adalah cara untuk memperkuat gagasan bahwa tag ini kosong dan menutup sendiri.

Saat ini saya tidak lagi menggunakan white space karena saya tidak pernah mengalami masalah dengan white space.

nicruo
sumber
1
"memperkuat" adalah kata yang tepat untuk "kuat"
Hao
terima kasih atas perhatiannya. senang melihat bahwa di sini kami memiliki orang-orang untuk memastikan kualitas tulisan.
nicruo