Kami mendeklarasikan Doctype dalam HTML umumnya memiliki jenis berikut:
<! Doctype html public -// w3c // dtd xhtml 1.0 transisi // en http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd>
<! Doctype html public -// w3c // dtd xhtml 1.0 strict // en http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd>
<! Doctype html public -// w3c // dtd html 4.01 // en http://www.w3.org/tr/html4/strict.dtd>
<! Doctype html public -// w3c // dtd html 4.01 transisi // en http://www.w3.org/tr/html4/loose.dtd>
Ya, ada HTML dan XHTML di sini, dan ada juga transisi dan ketat. Seperti namanya, XHTML berarti bahwa dokumen ini ditulis dalam format XML, dan HTML berarti bahwa dokumen ini ditulis dalam format HTML. Transisi berarti bahwa dokumen ini memenuhi persyaratan transisi.dtd atau loose.dtd, sementara ketat berarti bahwa dokumen ini memenuhi persyaratan strict.dtd. Namun pada kenyataannya, kita sering memiliki kesalahpahaman berikut:
(1) Dokumen saya dinyatakan xhtml, maka dokumen saya harus tepat dalam format XML.
(2) Dokumen saya dinyatakan ketat, jadi dokumen saya harus diterjemahkan dengan cara mode yang ketat, jika tidak, itu diterjemahkan dengan cara mode quirks.
Kedua pemahaman ini sangat langsung, tetapi mereka salah, dan kami sering membuat kesalahan seperti itu.
Pertama, dokumen ini dinyatakan sebagai XHTML dan HTML, dan tidak memiliki korelasi langsung dengan parse dokumen (mis., Analisis browser tentang dokumen). Bahkan, bagaimana dokumen parse browser tergantung pada format apa yang disediakan server. Secara umum, ada dua cara: teks/html dan aplikasi/xhtml xml. Hanya dokumen yang disediakan dalam aplikasi/html XML yang dapat diuraikan dalam XML. Namun, karena alasan historis browser, tidak semua browser mendukung aplikasi format XHTML XML. Versi sebelum IE7 (termasuk IE7) tidak dapat mendukung format ini. Jika IE7 menemukan dokumen dalam format ini, itu akan meminta pengguna untuk menyimpan sebagai file lain. Mempertimbangkan penggunaan IE yang tersebar luas, sebagian besar dokumen saat ini disediakan dalam teks/html. Dokumen yang disediakan dalam teks/html parse sesuai dengan semantik HTML. Semua orang tahu bahwa HTML sangat toleran terhadap kesalahan. Bahkan jika tag dalam dokumen Anda tidak ditutup dengan benar, HTML dapat ditampilkan dengan benar. Oleh karena itu, jika XHTML Anda disediakan dalam teks/html (dalam kebanyakan kasus), bahkan jika Anda menyatakan XHTML di Doctype, dokumen Anda tidak diuraikan dalam format XML, sehingga tidak dapat menjamin bahwa dokumen Anda sepenuhnya sesuai dengan spesifikasi XML. Bahkan, banyak ahli menyarankan bahwa jika dokumen Anda tidak disediakan dalam bentuk aplikasi/xhtml xml, maka Anda harus menyatakannya sebagai html.
Kedua, cara browser membuat dokumen Anda tidak ditentukan oleh DTD yang Anda nyatakan. Bahkan, jika Anda menyatakan Doctype dan DTD, dokumen Anda diterjemahkan dalam mode ketat (atau mode standar, banyak browser juga menyertakan mode hampir standar, dan tidak ada perbedaan di sini). Untuk dokumen tanpa Doctype, mode quirks digunakan untuk diterjemahkan. Oleh karena itu, mode render browser tidak memiliki hubungan langsung dengan DTD yang Anda nyatakan.
Akhirnya, apakah Anda menyatakannya sebagai Strict.dtd atau Transitional.dtd, tampaknya tidak ada perbedaan dalam browser saat ini. Strict.dtd jauh lebih ketat daripada transisional.dtd atau loose.dtd, dan banyak elemen tidak dapat digunakan dalam strict.dtd. Namun, karena kompatibilitas browser, bahkan jika Anda menyatakan Strict.dtd di Doctype, browser masih dapat menampilkan dokumen Anda dengan benar ketika menemukan elemen yang tidak diizinkan di Strict.dtd. Saya kira browser tidak mempertimbangkan DTD. Misalnya, tag iframe tidak ada di Strict.dtd, tetapi bahkan jika dokter Anda menyatakan Strict.dtd dan kemudian menggunakan tag iframe, browser (termasuk IE7, IE8, FF3.0, Safari 3.0) dapat menampilkan dokumen Anda dengan benar. Browser tidak mengurai dokumen Anda sesuai dengan DTD yang Anda nyatakan. Saat ini, dapat memastikan bahwa dokumen Anda sesuai dengan Strict.dtd atau Transitional.dtd. Ini hanya dapat dianalisis melalui beberapa validator online, seperti validator W3C. Browser tidak dapat memberi Anda dukungan yang baik. Tentu saja, pada kenyataannya, jika Anda dapat menulis dokumen Anda secara ketat sesuai dengan DTD yang Anda nyatakan, itu yang terbaik, sehingga dokumen Anda tidak akan menghasilkan kesalahan ketika browser secara ketat mematuhi DTD di masa depan.
Karena itu,
(1) Jika dokumen Anda disediakan dalam teks/html, maka Anda harus menyatakannya sebagai HTML. Jika Anda ingin IE7 ditampilkan dengan benar, maka Anda harus melakukan ini lebih banyak lagi.
(2) Jika dokumen Anda dinyatakan sebagai xhtml, maka Anda harus menyediakannya dalam bentuk aplikasi/html xml.
(3) Cobalah untuk mendeklarasikan Doctype dan DTD di depan dokumen Anda, untuk memastikan bahwa Anda tidak menggunakan mode Quirks untuk membuat dokumen.
(4) Jika Anda mendeklarasikan DTD, maka Anda harus menulis dokumen Anda secara ketat sesuai dengan persyaratan DTD. Terutama jika Anda menyatakan Strict.dtd, maka Anda harus berhati -hati tentang elemen mana yang tidak dapat digunakan.
Catatan: Seiring waktu, dukungan browser untuk HTML dan XHTML, Strict.dtd dan Transitional.dtd akan lebih baik. Jika browser Anda jauh lebih tinggi dari IE7, IE8, FF 3.0 dan Safari 3.0, maka Anda harus memperhatikan penerapan artikel ini.