เราประกาศ Doctype ใน HTML โดยทั่วไปมีประเภทต่อไปนี้:
<! doctype html สาธารณะ -// w3c // dtd xhtml 1.0 transitional // en http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd>
<! doctype html สาธารณะ -// w3c // dtd xhtml 1.0 เข้มงวด // en http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd>
<! doctype html สาธารณะ -// w3c // dtd html 4.01 // en http://www.w3.org/tr/html4/strict.dtd>
<! doctype html สาธารณะ -// w3c // dtd html 4.01 transitional // en http://www.w3.org/tr/html4/loose.dtd>
ใช่มี HTML และ XHTML ที่นี่และยังมีการเปลี่ยนผ่านและเข้มงวด ตามชื่อแนะนำ XHTML หมายความว่าเอกสารนี้เขียนในรูปแบบ XML และ HTML หมายความว่าเอกสารนี้เขียนในรูปแบบ HTML การเปลี่ยนแปลงหมายความว่าเอกสารนี้ตรงตามข้อกำหนดของ Transitional.dtd หรือ Loose.dtd ในขณะที่เข้มงวดหมายความว่าเอกสารนี้ตรงตามข้อกำหนดของ Strict.dtd แต่ในความเป็นจริงเรามักจะมีความเข้าใจผิดดังต่อไปนี้:
(1) เอกสารของฉันได้รับการประกาศ XHTML จากนั้นเอกสารของฉันจะต้องอยู่ในรูปแบบ XML อย่างแน่นอน
(2) เอกสารของฉันมีการประกาศอย่างเข้มงวดดังนั้นเอกสารของฉันจะต้องแสดงผลในโหมดที่เข้มงวดมิฉะนั้นจะแสดงผลในโหมด Quirks
ความเข้าใจทั้งสองนี้ตรงไปตรงมามาก แต่พวกเขาผิดและเรามักจะทำผิดพลาดเช่นนั้น
ขั้นแรกเอกสารจะถูกประกาศว่าเป็น XHTML และ HTML และไม่มีความสัมพันธ์โดยตรงกับการแยกวิเคราะห์ของเอกสาร (เช่นการวิเคราะห์ของเบราว์เซอร์ของเอกสาร) ในความเป็นจริงวิธีการแยกวิเคราะห์ของเบราว์เซอร์ขึ้นอยู่กับรูปแบบใดที่เซิร์ฟเวอร์ให้เอกสาร โดยทั่วไปการพูดมีสองวิธี: ข้อความ/HTML และแอปพลิเคชัน/XHTML XML เฉพาะเอกสารที่มีให้ในเมธอดแอปพลิเคชัน/HTML XML สามารถแยกวิเคราะห์ได้ใน XML อย่างไรก็ตามเนื่องจากเหตุผลทางประวัติศาสตร์ของเบราว์เซอร์จึงไม่ใช่เบราว์เซอร์ทั้งหมดที่รองรับแอปพลิเคชัน/XHTML XML เอกสารรูปแบบ รุ่นก่อน IE7 (รวมถึง IE7) ไม่สามารถรองรับรูปแบบนี้ได้ หาก IE7 พบเอกสารในรูปแบบนี้มันจะแจ้งให้ผู้ใช้บันทึกเป็นไฟล์อื่น ๆ เมื่อพิจารณาจากการใช้งาน IE อย่างกว้างขวางเอกสารส่วนใหญ่มีให้ในข้อความ/HTML เอกสารที่ให้ไว้ในข้อความ/HTML จะถูกแยกวิเคราะห์ตามความหมายของ HTML ทุกคนรู้ว่า HTML นั้นทนต่อความผิดได้มาก แม้ว่าแท็กในเอกสารของคุณจะไม่ถูกปิดอย่างถูกต้อง HTML สามารถแสดงได้อย่างถูกต้อง ดังนั้นหาก XHTML ของคุณมีให้ในข้อความ/HTML (ในกรณีส่วนใหญ่) แม้ว่าคุณจะประกาศ XHTML ใน Doctype เอกสารของคุณจะไม่แยกวิเคราะห์ในรูปแบบ XML ดังนั้นจึงไม่สามารถรับประกันได้ว่าเอกสารของคุณเป็นไปตามข้อกำหนด XML อย่างเคร่งครัด ในความเป็นจริงผู้เชี่ยวชาญหลายคนแนะนำว่าหากเอกสารของคุณไม่ได้ระบุไว้ในรูปแบบของแอปพลิเคชัน/XHTML XML คุณควรประกาศว่าเป็น HTML
ประการที่สองวิธีที่เบราว์เซอร์แสดงเอกสารของคุณไม่ได้กำหนดโดย DTD ที่คุณประกาศ ในความเป็นจริงถ้าคุณประกาศ Doctype และ DTD เอกสารของคุณจะแสดงในโหมดเข้มงวด (หรือโหมดมาตรฐานเบราว์เซอร์จำนวนมากยังรวมถึงโหมดมาตรฐานเกือบและไม่มีความแตกต่างที่นี่) สำหรับเอกสารที่ไม่มี doctype โหมด quirks จะใช้ในการแสดงผล ดังนั้นโหมดเรนเดอร์ของเบราว์เซอร์จึงไม่มีความสัมพันธ์โดยตรงกับ DTD ที่คุณประกาศ
ในที่สุดไม่ว่าคุณจะประกาศว่าเข้มงวด. dtd หรือ transitional.dtd ดูเหมือนว่าจะไม่มีความแตกต่างในเบราว์เซอร์ปัจจุบัน เข้มงวด. dtd นั้นเข้มงวดกว่า transitional.dtd หรือ loose.dtd มากและไม่สามารถใช้องค์ประกอบหลายอย่างใน Strict.dtd อย่างไรก็ตามเนื่องจากความเข้ากันได้ของเบราว์เซอร์แม้ว่าคุณจะประกาศอย่างเข้มงวด. dtd ใน doctype เบราว์เซอร์ยังสามารถแสดงเอกสารของคุณได้อย่างถูกต้องเมื่อพบองค์ประกอบที่ไม่ได้รับอนุญาตในเข้มงวด ฉันเดาว่าเบราว์เซอร์ไม่ได้คำนึงถึง DTD ตัวอย่างเช่นแท็กของ iframe ไม่ได้มีอยู่ใน strict.dtd แต่ถึงแม้ว่า doctype ของคุณจะประกาศอย่างเข้มงวด. dtd จากนั้นใช้แท็กของ iframe, เบราว์เซอร์ (รวมถึง IE7, IE8, FF3.0, Safari 3.0) สามารถแสดงเอกสารของคุณได้อย่างถูกต้อง เบราว์เซอร์ไม่ได้แยกวิเคราะห์เอกสารของคุณตาม DTD ที่คุณประกาศ ในปัจจุบันสามารถมั่นใจได้ว่าเอกสารของคุณเป็นไปตามที่เข้มงวดกับ. dtd หรือ transitional.dtd สามารถวิเคราะห์ได้ผ่านตัวตรวจสอบความถูกต้องออนไลน์บางตัวเช่น W3C ตรวจสอบความถูกต้อง เบราว์เซอร์ไม่สามารถให้การสนับสนุนที่ดีแก่คุณได้ แน่นอนว่าถ้าคุณสามารถเขียนเอกสารของคุณได้อย่างเคร่งครัดตาม DTD ที่คุณประกาศว่าจะดีที่สุดเพื่อให้เอกสารของคุณจะไม่สร้างข้อผิดพลาดเมื่อเบราว์เซอร์ปฏิบัติตาม DTD อย่างเคร่งครัดในอนาคต
ดังนั้น,
(1) หากเอกสารของคุณมีให้ในข้อความ/HTML คุณควรประกาศว่าเป็น HTML หากคุณต้องการให้ IE7 แสดงอย่างถูกต้องคุณควรทำสิ่งนี้มากยิ่งขึ้น
(2) หากเอกสารของคุณถูกประกาศว่าเป็น XHTML คุณควรระบุไว้ในรูปแบบของแอปพลิเคชัน/HTML XML
(3) พยายามประกาศ Doctype และ DTD ต่อหน้าเอกสารของคุณเพื่อให้แน่ใจว่าคุณไม่ได้ใช้โหมด Quirks เพื่อแสดงผลเอกสาร
(4) หากคุณประกาศ DTD คุณต้องเขียนเอกสารของคุณอย่างเคร่งครัดตามข้อกำหนดของ DTD โดยเฉพาะอย่างยิ่งถ้าคุณประกาศอย่างเข้มงวด DTD คุณควรระวังว่าองค์ประกอบใดที่ไม่สามารถใช้งานได้
หมายเหตุ: เมื่อเวลาผ่านไปการสนับสนุนเบราว์เซอร์สำหรับ HTML และ XHTML, Strict.dtd และ Transitional.dtd จะดีกว่า หากเบราว์เซอร์ของคุณสูงกว่า IE7, IE8, FF 3.0 และ Safari 3.0 มากคุณควรให้ความสนใจกับการบังคับใช้ของบทความนี้