آیا تا به حال در مورد سایت یا وبلاگ خود به مشکلاتی حل نشدنی برخورده اید که با وجود صرف ساعت ها وقت و انرژی نتوانسته باشید آنها را حل کنید؟ البته که در بیشتر موارد این چنین بوده، صرف نظر از اینکه یک برنامه نویس با تجربه یا یک کاربر عادی وب باشیم، همه به نوعی با این نوع مشکلات روبرو شده ایم و کماکان می شویم، برخی از این مسائل به دلایلی مثل خطا در کدنویسی یا جا انداختن تگ ها به فرض در ترسیم یک جدول (table) ممکن است رخ دهند، یا گاهی خطا در کدهای جاوا اسکریپت، تنظیمات نادرست خاصیت ها در css، خطاهای سرور و… ممکن است باعث ایجاد اختلال در عملکرد مورد انتظار سایت یا وبلاگمان شود، اما از همه اینها گذشته یک مورد به ظاهر ساده اما بعضا دردسرساز را هم نباید از قلم انداخت و آن دستور <DOCTYPE> در صفحات html است، این یادداشت نگاهی خواهد داشت به چرایی و چگونگی استفاده از این دستور در صفحات وب.

دستور DOCTYPE چیست؟

پیش از هر چیز بد نیست تعریفی از این دستور داشته باشیم، دستور DOCTYPE در واقع جزئی از تگ های html نیست، بلکه یک دستور راهنما برای مرورگرهای وب است، از آنجایی که کنسرسیوم جهانی وب (w3c) استاندارد های مختلفی از زبان پایه ی وب یعنی HTML یا (HyperText Markup Language) را ارائه نموده که هر کدام از آنها در مقایسه با هم دارای تفاوت هایی هرچند اندک هستند، اما این موضوع سبب می شود که مرورگرهای وب، در برخورد با صفحات مختلف نتوانند در حالت عادی، استاندارد صحیح را شناسایی کنند و لذا به جای پردازش متناسب با استاندارد اصلی، عملیات پیش فرض خود را برای نمایش صفحه انجام می دهند که این موضوع ممکن است با آنچه مورد نظر شما بوده باشد، فرق کند و یا از مرورگری به مرورگر دیگر، صفحات شما به چند شکل مختلف پردازش شوند، لذا برای جلوگیری از بروز چنین مشکلاتی، از دستور راهنمای DOCTYPE استفاده می شود تا نوع نسخه HTML استفاده شده را برای مرورگر مشخص کند.

استفاده از DOCTYPE اجباری یا اختیاری؟

در واقع استفاده از دستور DOCTYPE در صفحات وب اجباری نیست، بدین معنی که اگر هم از آن استفاده نشود، صفحه و اطلاعات آن همچنان در مرورگر بارگذاری شده و قابل استفاده است، اما کنسرسیوم جهانی وب (W3C) به طور جدی توصیه می کند که در صفحات خود از این دستور استفاده کنیم (مخصوصا در صفحاتی که از نسخه HTML 4.01 یا XHTML 1.0 استفاده می کنند)، لذا به خاطر رعایت استانداردهای توصیه شده W3C می توان گفت که استفاده از آن تقریبا الزامی است، در غیر این صورت علاوه بر اینکه ممکن است صفحات، به درستی در مرورگرهای مختلف نمایش داده نشوند، از نظر اعتبار سنجی (Validation) نیز معتبر نیستند (که این امر در امتیاز و رتبه سایت یا وبلاگ در موتورهای جستجو تاثیر منفی خواهد داشت)؛ برای اعتبار سنجی کدهای خود، می توانید به آدرس http://validator.w3.org مراجعه کنید.

انواع و ساختار مختلف دستور DOCTYPE

همانطور که پیش تر گفتیم، استفاده از دستور DOCTYPE در نسخه های HTML 4.01 و XHTML 1.0 اجباری است، اما هر کدام از این نسخه ها از سه نوع مختلف از این دستور برای سه هدف متفاوت استفاده می کنند.
– استاندارد HTML 4.01 Strict
در این نسخه، مرورگر از استاندارد یک فایل با نام strict.dtd پیروی می کند و طبق آن، استفاده از Cascading Style Sheets یا همان CSS برای کدنویسی استاندار، مجاز بوده و توصیه شده، در مقابل استفاده از تگ فرم ست (frameset)، نوشتن متون در خارج از چارچوب تگ های استاندارد، استفاده از عناصری مانند bgcolor، استفاده از برخی تگ های HTML قبیح دانسته شده (مانند Font) و… به لحاظ استاندارد کدنویسی مجاز نیست.

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

– استاندارد HTML 4.01 Transitional
نسخه Transitional در مقایسه با استاندارد Strict محدودیت کمتری دارد و استفاده از تگ های ایجاد کننده استایل (مانند bgcolor، background و…) در آن مجاز است (البته تا آنجا که می شود بهتر است از css به جای استایل html استفاده شود)، این استاندارد برای سازگاری با مرورگرهای قدیمی که از css پشتیبانی نمی کنند نیز مناسب است، البته استفاده از تگ فرم ست (frameset) در این نسخه نیز مجاز نمی باشد.

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

– استاندارد HTML 4.01 Frameset
دستورالعمل فایل DTD در این نسخه، دقیقا مشابه نسخه HTML 4.01 Transitional است، با این تفاوت که در اینجا استفاده از تگ frameset مجاز است، تگ frameset برای صفحاتی به کار می رود که مبتنی بر frame یا صفحات خارجی هستند و با قرار دادن frame ها در درون تگ frameset، امکان فرمت بندی و تنظیم موقعیت سطرها و ستون ها (rows و columns) میسر می شود، به مثال زیر توجه کنید:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>وبگو | استفاده از تگ frameset در html</title>
<!-- http://webgoo.ir -->
</head>
<frameset cols="30%,40%,30%" rows="33%,33%,33%" border="1">
<frame src="frame-1.htm" frameborder="1">
<frame src="frame-2.htm" frameborder="1">
<frame src="frame-3.htm" frameborder="1" >
</frameset>
</html>

همان طور که ملاحظه می کنید، این صفحه خود از سه فرم متفاوت استفاده می کند و در ضمن در آن از تگ body استفاده نشده است.
– استاندارد XHTML 1.0 Strict
در کنار زبان HTML ساده، زبانی ترکیبی (از HTML و XML) با نام XHTML یا (Extensible HyperText Markup Language) وجود دارد که در آن، زبان HTML ساده توسعه یافته و با XML ترکیب شده است، از آنجایی که HTML ساده خود از استاندارد SGML یا (Standard Generalized Markup Language) پیروی می کند و به این خاطر نسبت به XML محدودیت هایی دارد، استفاده از XHTML که به دلیل استفاده از XML با سیستم های مختلف سازگارتر است، توسط W3C توصیه شده است.
در استاندارد XHTML 1.0 Strict تقریبا تمام موارد HTML 4.01 Strict به طور یکسان هستند، ضمن اینکه سند XHTML باید از اصول نگارشی XML نیز پیروی کند (به طور مثال تگ های یکتا باید با یک / بسته شوند مانند </ br>).

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

– استاندارد XHTML 1.0 Transitional
این استاندارد نیز مشابه HTML 4.01 Transitional است، ضمن اینکه سند XHTML باید از اصول نگارشی XML نیز پیروی کند .

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

– استاندارد XHTML 1.0 Frameset
این استاندارد نیز مشابه  HTML 4.01 Frameset است،  ضمن اینکه سند XHTML باید از اصول نگارشی XML نیز پیروی کند.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

استفاده از DOCTYPE در HTML5

از آنجایی که نسخه HTML5 از استاندارد SGML یا (Standard Generalized Markup Language) پیروی نمی کند، لذا به فایل های DTD احتیاجی ندارد و تنها در سند HTML5 کافی است  DOCTYPE را به شکل زیر استفاده کنیم:

<!DOCTYPE html>

به طور مثال این یک نمونه از نسخه HTML5 است:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>وبگو | نمونه ای از یک سند html5</title>
<!-- http://webgoo.ir -->
</head>
<body>
<P>HTML5</P>
</body>
</html>