ساختار DOCTYPE در HTML
اعلام < DOCTYPE!> اولین چیزی است که باید در سند HTML ، قبل از تگ <html> نوشته شود. < DOCTYPE!> تعریف یک تگ HTML نیست؛ بلکه دستوری به مرورگر وب در مورد نسخه ی HTML مورد استفاده است. توجه داشته باشید که تگ <DOCTYPE!> تگ پایان ندارد.
اعتبار سنج های HTML به اعلام DOCTYPE ( اعلام نوع سند ) نیاز دارند. اگر یک سند HTML شامل اعلام DOCTYPE نباشد، مرورگرها صفحات را در حالت Quirks رندر میکنند . وظایف DOCTYPE به شرح زیر است :
۱٫هنگام انجام آزمون اعتبار سنجی HTML روی یک صفحه وب، اعلام < DOCTYPE!> به اعتبار سنج HTML اعلام میکند که از استاندارد کدام نسخه X)HTML) در کدنویسی صفحه استفاده شده است. هنگامی که شما صفحه وب خود را اعتبارسنجی میکنید، اعتبار سنج HTML، کد ها را با توجه به استاندارد قابل انطباق چک کرده و پس از آن بخش هایی از کد را که در اعتبار سنجی رد شده، گزارش میکند (کدهایی که سازگار نیستند).
۲٫به مرورگر میگوید که چگونه صفحات را در حالت استانداردهای قابل انطباق رندر کنند.
نکته : تگ DOCTYPE باید با حروف بزرگ نوشته شود .
بخش بعدی، که html(برای XHTML) یا HTML خوانده میشود ، به نام عنصر ریشه سند اشاره دارد ، این اطلاعات برای مقاصد اعتبار سنجی گنجانده شده است، چرا که DTD ، به عنصر ریشه اشاره ای نمی کند.
در این بیانیه PUBLIC به مرورگر اطلاع میدهد که DTD یک منبع عمومی در دسترس است. اگر شما می خواهید زبانی خارج از مشخصات تعیین شده گسترش دهید، می توانید برای ایجاد یک DTD سفارشی تلاش کنید. این امر به شما اجازه تعریف عناصر سفارشی را می دهد و شما را قادر می سازد که با توجه به آن DTD، اعتبارسنجی کنید. در این مورد، شما باید کلمه PUBLIC را به SYSTEM تغییر دهید:
بخش بعدی به عنوان شناسه عمومی شناخته شده و اطلاعاتی در مورد صاحب یا سرپرست DTD ارائه میکند . در این مثال ، W3C شناسه عمومی نشان داده شده است، بزرگ یا کوچک بودن حروف مهم نیست. در ادامه نیز شامل سطحی از زبان است که DTD به آن اشاره دارد (در این مثالXHTML 1.0) و زبان DTD ( نه محتوای صفحه ی وب) را شناسایی میکند. زبان به عنوان زبان انگلیسی یا EN تعریف شده است.
توجه داشته باشید که اگر DOCTYPE شامل کلمه SYSTEM باشد، بخش شناسه عمومی حذف خواهد شد.
این دو با یکدیگر ، بخشی به نام شناسه رسمی عمومی (و یا FPI) تشکیل می دهند .
در نهایت، DOCTYPE شامل یک URL است که به عنوان سیستم شناسه رسمی (FSI) شناخته شده و به محل DTD اشاره دارد:
تصویر زیر ساختار یک DOCTYPE را شرح میدهد :
اگر اعلام DOCTYPE در سند وجود نداشته و یا نادرست باشد :
۱٫شما قادر نخواهید بود از اعتبارسنج HTML برای بررسی کدنویسی صفحه استفاده کنید. اعتبار سنجی HTML نیاز به اعلام DOCTYPE دارد.
۲٫مرورگر در هنگام ارائه صفحات وب ، کدها را در حالت Quirks پردازش میکند.
۳٫ شیوه ها ممکن است طبق برنامه ریزی اجرا نشوند.
سوئیچینگ DOCTYPE
روشی که در آن مرورگر وب، که اغلب محتوای یک صفحه را ارائه میدهد ، تحت تاثیر DOCTYPE تعریف شده، قرار میگیرد. استفاده از اعلام DOCTYPE صحیح، مهم است و در این شرایط مرورگر به حالت استاندارد سوئیچ میشود. مرورگرها از حالت های مختلف برای تعیین چگونگی ارائه یک صفحه وب استفاده می کنند:
حالت Quirks
در این حالت، مرورگر مشخصات قالب معمولی وب را به عنوان راهی برای جلوگیری از رندر ضعیف (و یا به اصطلاح “شکستن” ) صفحاتی که با استفاده از روش های پیش پا افتاده ی اواخر سال ۱۹۹۰ نوشته شده است نقض میکند.حالت Quirks از مرورگری به مرورگر دیگر متفاوت است. در اینترنت اکسپلورر ۶ و ۷، حالت Quirks سند را به گونه ای نشان میدهد که در نسخه ۵٫۵ IE مشاهده شده است. در مرورگرهای دیگر، حالت Quirks شامل مجموعه ای از انحرافات است که تقریبا از حالت استاندارد گرفته شده است (توضیح در زیر).
حالت استاندارد
در این حالت، مرورگرها تلاش میکنند که اسناد را با توجه به مشخصات به طور دقیق تری مطابقت دهند. (اما هنوز به این وابسته است که تا چه حد این استانداردها در مرورگر اجرا شود).
حالت تقریبا استاندارد
فایرفاکس، سافاری و اپرا (نسخه ۷٫۵ و بالاتر) یک حالت سوم نیز اضافه کرده اند ، که حالت تقریبا استاندارد شناخته شده است. این حالت اندازه ی عمودی سلول های جدول را به طور سنتی و نه با دقت پیاده سازی میکند ، همانطور که در مشخصات CSS2 تعریف می شود. (نسخه های اینترنت اکسپلورر ۶ و ۷ به حالت تقریبا استاندارد نیاز ندارد، چرا که آنها در حالت استاندارد مربوطه اندازه عمودی سلولهای جدول را با توجه به مشخصات CSS2 با دقت پیاده سازی نمی کنند ).
بسته به نوع DOCTYPE تعریف شده و سطح جزئیات موجود در داخل DOCTYPE (به عنوان مثال، آیا شامل شناسه عمومی می باشد یا خیر)، مرورگرهای مختلف،حالت های مختلفی از لیست بالا ایجاد می کنند. سوئیچینگ DOCTYPE به وظیفه مبادله یک DOCTYPE به دیگری و یا تغییر سطح جزئیات در DOCTYPE به منظور هم محور کردن یک مرورگر برای ارائه در یکی از حالت های Quirks ، استاندارد و یا تقریبا استاندارد اشاره دارد. HTML5 این حالت را “حالت Quirks محدود شده ” می نامد.
نکته: اعلام < DOCTYPE!> همیشه باید به اسناد HTML اضافه شود، به طوری که مرورگر بداند در انتظار چه نوع سندی باید باشد .
تفاوت بین HTML 4.01 و HTML5 :
در HTML 4.01،اعلام < DOCTYPE!> به یک DTD اشاره دارد ، زیرا HTML 4.01 بر پایه SGML است. DTD قواعدی برای زبان نشانه گذاری مشخص می کند، که به مرورگر ها اطلاع میدهد، محتوا را به درستی ارائه دهند. در HTML 4.01 سه نوع اعلام <DOCTYPE! > مختلف وجود دارد. در حالیکه در HTML5 تنها یک اعلام وجود دارد. HTML5 بر پایه SGML نیست،در نتیجه به یک مرجع DTD نیاز ندارد.
چه از HTML استفاده کنید و چه از XHTML ، این ۳ حالت DOCTYPE را می بینید:
- Strict ( صریح )
- Transitional ( انتقالی )
- Frameset
معرفی DOCTYPE مورد استفاده در HTML 4.01 ، HTML 5 و XHTML
HTML 5 :
HTML 4.01 Strict
این نوع، اجازه گنجاندن نشانه گذاری های ساختاری و معنایی را میدهد ، اما شامل عناصر نمایشی و یا توصیه شده (مانند font) نمیشود . استفاده از فریم ها در این DTD امکان پذیر نیست.
HTML 4.01 Transitional
این نوع شامل تمامی نشانه گذاری های ساختاری و معنایی و همچنین عناصر نمایشی (مانند font) که استفاده از آن در DTD صریح توصیه نمیشود، می باشد ، استفاده از فریم ها در این DTD امکان پذیر نیست. نویسنده تا حد امکان باید از DTD صریح (Strict) استفاده کند. اما اگر به پشتیبانی عناصر و خاصیت های نمایشی نیاز باشد ممکن است از DTD انتقالی(Transitional) استفاده کند .
HTML 4.01 Frameset
در این DTD همان قوانین HTML 4.01 Transitional برقرار است، اما اجازه استفاده از محتوای فریم داده شده است .
XHTML 1.0 Strict
این نوع شامل نشانه گذاری های ساختاری و معنایی است، اما شامل عناصر نمایشی و یا توصیه شده (مانند font) نمیشود و برای بیان دستور العمل های HTML از CSS یا برگه های شیوه آبشاری استفاده میشود . استفاده از فریم ها در این DTD امکان پذیر نیست. نشانه گذاری نیز باید همانند ساختار XML نوشته شود. اگر شما این DTD را انتخاب می کنید برای استفاده از آن، باید بدانید که برای تائید اعتبار صفحات وب به هیچ عنوان اجازه استفاده از تگ فونت و خاصیت هایی مانند عرض و ارتفاع در جداول و عنصر border بر روی تصاویر را ندارید و برای تصاویر مجبور به استفاده از خاصیت Alt هستید. تقریبا استفاده از تمامی خاصیت های نمایشی به نفع استفاده ی گسترده تر از CSS ، محدود شده است.
XHTML 1.0 Transitional
این نوع شامل نشانه گذاری های ساختاری و معنایی و عناصر نمایشی (مانند font) است ، استفاده از فریم ها در این DTD امکان پذیر نیست. نشانه گذاری نیز باید همانند ساختار XML نوشته شود. بازدید کنندگان شما ممکن است از مرورگرهای قدیمی استفاده کنند که نمی توانند CSS را به خوبی درک کنند. در این حالت می توانید از این DTD استفاده کنید .
XHTML 1.0 Frameset
این نوع همانند XHTML 1.0 Transitional است، اما اجازه استفاده از محتوای فریم را می دهد. از این DTD زمانی استفاده کنید که می خواهید با HTML پنجره مرورگر خود را به دو یا چند قسمت تفکیک کنید
XHTML 1.1
این DTD بک فرمول بندی جدید از XHTML 1.0 Strict است، در نتیجه در بسیاری از قواعد یکی هستند. این DTD به شما اجازه اضافه کردن ماژول خواهد داد.
انتخاب DOCTYPE
اگر شما در HTML مبتدی هستید میتوانید از HTML 4.01 Transitional استفاده کنید. این نوع در هنگام انجام اعتبار سنجی برای افراد مبتدی محدودیت های کمتری دارد . همچنین اگر مخاطبان شما از مرورگری استفاده میکنند که CSS (شیوه نامه های آبشاری) را پشتیبانی نمی کند این DOCTYPE مناسب خواهد بود.
اگر شما می خواهید کدنویسی را یاد بگیرید، اما هنوز آمادگی یادگیری XHTML را ندارید میتوانید از HTML 4.01 Strict استفاده کنید. در این DOCTYPE تمام خاصیت های نمایشی به برگه های شیوه آبشاری منتقل شده اند.