Adakah HTML5 membenarkan teg tutup sendiri yang tidak kosong?
P粉680487967
2023-08-21 18:20:11
<p>Pengesah W3C (Wikipedia) tidak menyukai penggunaan teg menutup sendiri (teg berakhir dengan "<kod>/></kod>") pada elemen bukan kosong. (Elemen kosong ialah elemen yang tidak pernah mengandungi sebarang kandungan.) Adakah ia masih sah dalam HTML5? </p>
<p>Beberapa contoh elemen kosong yang diterima: </p>
<pre class="brush:html;toolbar:false;"><br />
<img src="" />
<input type="text" name="username" />
</pra>
<p>Beberapa contoh elemen bukan kosong yang ditolak: </p>
<pre class="brush:html;toolbar:false;"><div id="myDiv" />
<span id="mySpan" />
<textarea id="someTextMessage" />
</pra>
<sub> <b>Nota: </b>
Pengesah W3C sebenarnya menerima teg penutupan diri kosong: pengarang pada mulanya menghadapi masalah kerana kesilapan menaip mudah (menggunakan <kod>></kod> bukannya <kod>/></kod> ;) ; Walau bagaimanapun, teg penutup sendiri tidak sah sepenuhnya dalam HTML5, dan jawapannya menghuraikan isu teg penutup sendiri dalam versi HTML yang berbeza. </p></sub>
Div yang menutup sendiri tidak akan disahkan. Ini kerana div ialah elemen biasa, bukan elemen kosong.
Mengikut spesifikasi HTML5, tag yang tidak boleh mengandungi sebarang kandungan (dipanggil elemen kosong) boleh menutup sendiri*. Ini termasuk tag berikut:
"/" pada teg di atas adalah pilihan sepenuhnya, jadi
<img/>
与<img>
没有区别,但<img></img>
adalah tidak sah.*Nota: Elemen luaran juga boleh menutup diri, tetapi saya rasa itu di luar skop jawapan ini.
Secara teori, HTML 4,
<foo /
(是的,没有任何>
)的意思是<foo>
(这导致<br />
的意思是<br>>
(即<br>>
)和<title/hello/
的意思是<title>hello</title>
). Saya menggunakan istilah "secara teori" kerana ini adalah peraturan SGML yang tidak disokong oleh penyemak imbas. Sokongan sangat jarang (saya hanya melihatnya berfungsi dalam emacs-w3m) sehingga spesifikasi mengesyorkan pengarang mengelak daripada menggunakan sintaks ini .Dalam XHTML,<foo></foo>. Ini ialah peraturan XML
yang digunakan pada semua dokumen XML. Iaitu, XHTML biasanya disajikan sebagai<foo />
的意思是<foo></foo>
。这是适用于所有XML文档的XML规则。也就是说,XHTML通常以text/html
的形式提供,这(至少在历史上)由浏览器使用与以application/xhtml+xml
提供的文档不同的解析器处理。W3C提供了关于XHTML作为text/html
bermaksudtext/html
, yang (sekurang-kurangnya dari segi sejarah) digunakan oleh penyemak imbas secara berbeza daripada dokumen yang disajikan sebagaiapplication/xhtml+xml
pemprosesan parser. W3C menyediakanteks/html
. (Pada asasnya: gunakan sintaks teg penutup sendiri hanya jika elemen ditakrifkan sebagai KOSONG (dan teg penutup dilarang dalam spesifikasi HTML)).<foo />
Dalam HTML5, maksudbergantung pada jenis elemen- :
Untuk elemen yang ditetapkan sebagai - kosong (pada asasnya "elemen yang wujud sebelum HTML5 dan dilarang daripada mengandungi sebarang kandungan"), tag penutup adalah dilarang. Tanda miring pada penghujung teg pembuka dibenarkan, tetapi tidak bermakna. Ini hanyalah gula sintaksis untuk orang yang biasa dengan XML (dan penyerlah sintaks).
Seperti elemen HTML yang lain, garis miring adalah - ralat
, tetapi pemulihan ralat akan menyebabkan penyemak imbas mengabaikannya dan menganggap teg sebagai teg pembukaan biasa. Ini selalunya mengakibatkan hilang teg penutup, menjadikan elemen berikutnya sebagai elemen kanak-kanak dan bukannya adik-beradik.