DOCTYPE دقیقاً چیه و این «استاندارد زنده» یعنی چی؟

تو درس ۱-۴ یه اشاره‌ی کوتاه به DOCTYPE داشتیم و گفتیم اولین خط هر فایل HTML5 باید همین باشه. تو این درس می‌خوایم عمیق‌تر بریم و ببینیم DOCTYPE دقیقاً چه نقشی داره، چرا این‌قدر ساده شده، و اون مفهوم «Living Standard» که قبلاً بهش اشاره کردیم دقیقاً چه معنایی داره.

DOCTYPE چیه؟

DOCTYPE مخفف Document Type (نوع سند) هست. این خط به مرورگر اعلام می‌کنه که سند رو با چه قوانینی باید تفسیر کنه. بدون این خط، مرورگر مطمئن نیست باید سند رو با استانداردهای مدرن بخونه یا با یه حالت قدیمی و ناسازگار به اسم Quirks Mode.

مقایسه‌ی DOCTYPE قدیم و جدید

اگه یادت باشه تو HTML 4.01 یا XHTML، DOCTYPE یه چیز خیلی طولانی و پیچیده بود، مثلاً:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

این خط به یه فایل تعریف نوع سند (DTD) اشاره می‌کرد که قوانین دقیق ساختار سند رو مشخص می‌کرد. اما تو HTML5 این خط به شکل زیر خلاصه شده:

<!DOCTYPE html>

همین. نه آدرسی، نه شماره نسخه‌ای. این سادگی عمدی بوده، چون HTML5 دیگه بر پایه‌ی DTD کار نمی‌کنه، بلکه یه پارسر مشخص و استاندارد داره که مستقل از این فایل‌های قدیمی عمل می‌کنه.

حالت Standards Mode در برابر Quirks Mode

وقتی مرورگر <!DOCTYPE html> رو ببینه، صفحه رو تو حالت Standards Mode رندر می‌کنه؛ یعنی دقیقاً طبق آخرین قوانین استاندارد وب. اما اگه این خط رو فراموش کنی یا اشتباه بنویسی، خیلی از مرورگرها صفحه رو تو Quirks Mode نمایش می‌دن؛ حالتی که برای سازگاری با سایت‌های خیلی قدیمی دهه‌ی ۹۰ طراحی شده و باعث میشه فاصله‌ها، اندازه‌ی فونت‌ها و حتی محاسبه‌ی عرض و ارتفاع المان‌ها رفتار متفاوتی داشته باشن. نتیجه‌ش میشه یه صفحه که ظاهرش با چیزی که تو ذهنت بوده فرق می‌کنه، بدون اینکه دلیلش مشخص باشه.

حالا این «HTML Living Standard» چیه؟

احتمالاً اسم دو تا مرجع رو زیاد می‌شنوی: W3C و WHATWG. قبلاً این‌طور بود که W3C نسخه‌های شماره‌دار HTML رو منتشر می‌کرد (مثل HTML 4.01 یا HTML5)، درست مثل نسخه‌های یه نرم‌افزار. اما گروه WHATWG (که از شرکت‌های بزرگ سازنده‌ی مرورگر مثل گوگل، اپل، موزیلا و مایکروسافت تشکیل شده) به این نتیجه رسید که این مدل نسخه‌بندی برای وب مناسب نیست، چون وب هر روز در حال تغییره.

به همین خاطر، استاندارد HTML الان به شکل Living Standard (استاندارد زنده) نگه‌داری میشه؛ یعنی:

  • هیچ عدد نسخه‌ی ثابتی مثل «HTML5.3» وجود نداره.
  • استاندارد به‌صورت مداوم و تدریجی به‌روزرسانی میشه.
  • وقتی یه ویژگی جدید نیاز میشه (مثلاً یه تگ جدید یا یه API جدید)، به‌جای انتظار برای «نسخه‌ی بعدی»، مستقیم به همین سند اضافه میشه.
  • مرورگرها هم به‌مرور، هر ویژگی جدید رو پیاده‌سازی می‌کنن.

در حال حاضر مرجع اصلی WHATWG هست، و W3C هم نسخه‌ای هماهنگ‌شده با اون منتشر می‌کنه؛ اما منبع اصلی تغییرات از WHATWG میاد.

این موضوع برای کدنویسی روزمره چه اهمیتی داره؟

چون HTML دائم در حال تغییره، ممکنه یه ویژگی که امروز «آزمایشی» حساب میشه، شش ماه دیگه تو همه‌ی مرورگرها پشتیبانی بشه. به همین دلیل، توسعه‌دهنده‌های حرفه‌ای عادت دارن قبل از استفاده از یه تگ یا ویژگی جدید، وضعیت پشتیبانی مرورگرها رو چک کنن (که تو درس‌های آخر دوره، درباره‌ی ابزارهای این کار هم صحبت می‌کنیم).

چند اشتباه رایج

  • فکر کردن به اینکه هنوز باید از DOCTYPEهای طولانی HTML 4.01 یا XHTML استفاده کرد.
  • گمان اینکه HTML5 یه محصول نهایی و بسته‌ست، در حالی که مدام در حال به‌روزرسانیه.
  • فراموش‌کردن DOCTYPE که باعث فعال‌شدن Quirks Mode و رفتارهای غیرمنتظره تو نمایش صفحه میشه.

بهترین روش‌ها

  • همیشه اولین خط فایلت <!DOCTYPE html> باشه، بدون هیچ فاصله یا خط اضافه قبلش.
  • هر از گاهی به مستندات به‌روز مراجعه کن، چون ممکنه ویژگی جدیدی به استاندارد اضافه شده باشه.

جمع‌بندی

DOCTYPE تو HTML5 به یه خط ساده خلاصه شده که کارش فعال کردن حالت استاندارد رندر تو مرورگره. از طرف دیگه، خود HTML5 دیگه یه نسخه‌ی ثابت نیست؛ به‌عنوان یه «استاندارد زنده» توسط WHATWG نگه‌داری میشه و به‌مرور با نیازهای جدید وب به‌روزرسانی میشه.