HTML เป็นภาษาสากลสำหรับการเผยแพร่ไฮเปอร์เท็กซ์บนเวิลด์ไวด์เว็บ [1] ตั้งแต่ปี 1982 เมื่อ Tim Berners-Lee ทำให้ SGML ง่ายขึ้นเพื่อสร้างคำจำกัดความดั้งเดิมของ HTML จนถึงการเปิดตัวข้อกำหนด XHTML1.1 ในปี 2544 HTML ได้กลายเป็นมาตรฐานสากลที่มีหลายเวอร์ชัน [2] ข้อมูลจำเพาะแต่ละเวอร์ชันถูกกำหนดในภาษาที่เครื่องอ่านได้ ซึ่งอธิบายโครงสร้างทางกฎหมาย องค์ประกอบ และคุณลักษณะ นี่คือคำจำกัดความประเภทเอกสาร (DTD)
DTD อธิบายการประกาศประเภทเอกสาร (การประกาศ DTD เรียกว่า doctype[3]) ซึ่งอยู่ที่ด้านหน้าของเอกสาร HTML มันคือการเชื่อมโยงระหว่างเอกสารและคำสั่ง DTD ตัวอย่างเช่น ประเภทเอกสารของ HTML4.01 Strict คือ:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" " http://www.w3.org/TR/html4/strict.dtd ">
โดยระบุเวอร์ชันของ HTML ที่เอกสารใช้ ซึ่งเป็นข้อมูลที่สำคัญที่สุดที่เครื่องมือ เช่น เบราว์เซอร์ ต้องใช้เมื่อแยกวิเคราะห์เอกสาร ตัวอย่างเช่น เครื่องมือตรวจสอบความถูกต้องของ W3C สามารถใช้ตรวจสอบไวยากรณ์และชี้ข้อผิดพลาดได้
การใช้มาตรฐานอย่างไม่ถูกต้องในเบราว์เซอร์รุ่นแรกๆ การแพร่กระจายของส่วนขยายส่วนตัว และความสับสนของมาตรฐานยุคแรกๆ ในเรื่องความเข้ากันได้แบบส่งต่อ ส่งผลให้เอกสารในเวลานั้นไม่มีประเภทเอกสารหรือการอ้างอิงโดยตรงไปยัง DTD ซึ่งทำให้ยากต่อการนำมาตรฐานใหม่ไปใช้ . ได้รับการยอมรับและความนิยมเนื่องจากเบราว์เซอร์ไม่สามารถแยกความแตกต่างได้ เพื่อจัดการกับหน้าเว็บที่สร้างขึ้นตามมาตรฐานของเว็บและหน้าเว็บที่สร้างขึ้นตามแนวทางปฏิบัติแบบเก่า Todd Fahrner ได้เสนอวิธี "มาด้วยการสลับ" ในปี 1998 [4] ซึ่งช่วยให้เบราว์เซอร์สามารถจัดเตรียมโหมดการเรนเดอร์ได้สองชุด : นั่นคือด้วยประเภทเอกสารที่สมบูรณ์ เอกสารจะถูกแยกวิเคราะห์โดยใช้มาตรฐาน W3C มิฉะนั้นจะถูกแยกวิเคราะห์ด้วยวิธีเก่า
วิธีนี้ใช้ได้จริง เรียบง่าย และมีประสิทธิภาพ สองปีต่อมา มีการใช้ IE เวอร์ชัน Mac เป็นครั้งแรก และผู้ผลิตเบราว์เซอร์รายอื่นๆ ก็นำมาใช้ในเร็วๆ นี้ ซึ่งทำให้เกิดการดมประเภทเอกสาร (การดมประเภทสุนัขหรือการสลับประเภทสุนัข) เบราว์เซอร์ใช้เพื่อตัดสินใจว่ากลไกของมันควรใช้โหมดมาตรฐาน โหมดกึ่งมาตรฐาน หรือโหมดแปลก ซึ่งจะมีผลกระทบอย่างมากต่อการแยกวิเคราะห์ HTML และ CSS เค้าโครง CSS และสคริปต์ JavaScript [5] ไม่ต้องสงสัยเลยว่าเราควรใช้โมเดลมาตรฐานให้มากที่สุด
แม้ว่า HTML5 จะยังอยู่ในเวอร์ชันร่าง แต่เบราว์เซอร์ล่าสุดอย่าง Firefox3.5, Chrome2, Safari4 และ IE8 ได้เริ่มรองรับคุณสมบัติบางอย่างแล้ว โดยเฉพาะอย่างยิ่งการเปิดตัว Google Wave ได้ก่อให้เกิดการเพิ่มขึ้นครั้งใหม่ในการส่งเสริมแนวปฏิบัติ HTML5 HTML5 ไม่ได้ใช้ SGML และไม่มี DTD แต่เพื่อความเข้ากันได้ในการส่งต่อ HTML5 จึงยอมรับข้อเท็จจริงของการดมประเภท doctype และกำหนดว่า doctype เป็นคำสั่งการแปลงโหมดเดียวใน text/html และไม่มีการใช้งานอื่นใด ประเภทเอกสารนั้นกระชับมาก: <!doctype html>[6]
เป็นมูลค่าการกล่าวขวัญว่า IE8 ใช้คำสั่ง X-UA-Compatible [7] เพื่อแก้ไขความเข้ากันได้แบบส่งต่อ ดังนั้น โหมดการเรนเดอร์ของเบราว์เซอร์ใน IE8 ไม่เพียงแต่ขึ้นอยู่กับการดมกลิ่นประเภทเอกสารเท่านั้น แต่ยังขึ้นอยู่กับคำสั่งนี้ด้วย ไม่เพียงแต่ทำให้การตัดสินรูปแบบซับซ้อนมากขึ้น [8] แต่ยังละเมิดแนวคิดของการปรับปรุงแบบก้าวหน้าในการออกแบบเว็บอีกด้วย [9]
บนเส้นทางสู่มาตรฐานเว็บ เราไม่เพียงแต่ต้องการความเข้ากันได้แบบไปข้างหน้าที่เต็มไปด้วยความสมจริงเท่านั้น แต่ยังต้องมีความเข้ากันได้แบบย้อนหลังที่เต็มไปด้วยอุดมคติอีกด้วย นี่คือความหวังที่จะทำให้แน่ใจว่าเว็บของเราสามารถทำงานได้อย่างถูกต้องในอนาคต ภายใต้แนวคิดเรื่องมาตรฐาน ความเรียบง่าย และการเพิ่มประสิทธิภาพแบบค่อยเป็นค่อยไป ทางออกที่ดีที่สุดสำหรับเพจของเราตอนนี้อาจเป็น:
<!doctype html> … <meta http-equiv="X-UA-Compatible" content="IE=Edge"> …
บันทึก:
[1] HTML เป็นภาษากลางสำหรับการเผยแพร่ไฮเปอร์เท็กซ์บนโลก
ไวด์เว็บ
[2] http://zh.wikipedia.org/wiki/Html
[3] การประกาศ DTD มักเรียกว่าการประกาศประเภทเอกสารในข้อกำหนดก่อนหน้านี้
มันง่ายที่จะสับสนกับ DTD
[4] http://web.archive.org/web/20030212115103/http://www.geocrawler.
com/archives/list-name.mbox/123/1998/7/0/1037920/
[5]เปิดใช้งานโหมดเบราว์เซอร์ด้วยประเภทเอกสาร
[6] http://www.w3.org/TR/html5/syntax.html#the-doctype
[7] นอกเหนือจากประเภทเอกสารแล้ว การปรับมาตรฐานเว็บไปข้างหน้ายังเข้ากันได้กับ IE8
[8] http://dancewithnet.com/2009/06/14/activating-browser-modes
-with-doctype/#ie8modes
[9] อนาคตของมาตรฐานเว็บขึ้นอยู่กับเทคโนโลยีเบราว์เซอร์หรือไม่?
ข้อความต้นฉบับ: http://ued.koubei.com/?p=928