خیلی جالبه با این که تگ <!DOCTYPE> بسیار با اهمیت هست ولی در منابع فارسی بحث خاصی روی این تگ نشده !!!!!!!!! که در نوع خودش خیلی جالبه.؟  در واقع این مبحث راز طراحان حرفه ای ایران شده که من امروز می خوام اون رو فاش کنم 

معنی <!DOCTYPE> : نوع سند را معرفی می کنه (خوب یعنی چی ؟) یعنی به مرورگر می فهماند صفحه وبی که شما طراحی کردید از چه نوعی است (از چه سندی است) مثلا : html4 , html1 , html5 و …

کاربرد <!DOCTYPE> : خیلی خلاصه و مفید بخوام بگم ، این تگ باعث استاندارد شدن صفحه و نمایش یکسان صفحه در تمام مرورگر ها (Internet Explorer,Mozilla Firefox و …) خواهد شد.خوب اگه از خودتون می پرسید چطور ؟؟؟ باید بگم شما با قرار دادن تگ در سطر اول کد خودتون ،  در واقع به تمام مرورگر ها می فهمانید که نوع کد شما چی هست ، در این صورت مرورگر ها معمولا این صفحه را به یک شکل رندر می کنند (می خوانند).این تگ برای سئو هم موثر است ، در کل اگر می خواهید یک صفحه وب استاندارد بنویسید حتما این تگ را استفاده کنید.


با کلیک بر روی عکس آن را در اندازه واقعی ببینید


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 تمام خاصیت های نمایشی به برگه های شیوه آبشاری منتقل شده اند.


ساختار کلی HTML استاندارد :



اعتبار سنج های HTML به اعلام  DOCTYPE ( اعلام نوع سند ) نیاز دارند. اگر یک سند HTML شامل اعلام DOCTYPE نباشد، مرورگرها صفحات را در حالت Quirks رندر میکنند . وظایف DOCTYPE به شرح زیر است :

اول اینکه : هنگام انجام آزمون اعتبار سنجی HTML روی یک صفحه وب، اعلام < DOCTYPE!> به اعتبار سنج HTML اعلام میکند که از استاندارد کدام نسخه X)HTML) در کدنویسی صفحه استفاده شده  است. هنگامی که شما صفحه وب خود را اعتبارسنجی میکنید، اعتبار سنج HTML، کد ها را با توجه به استاندارد قابل انطباق چک کرده و پس از آن بخش هایی از کد را که در اعتبار سنجی رد شده، گزارش میکند  (کدهایی که سازگار نیستند).

دوم اینکه : به مرورگر میگوید که چگونه صفحات را در حالت استانداردهای قابل انطباق رندر کنند.

نکته : تگ  DOCTYPE باید با حروف بزرگ نوشته شود .

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


بخش بعدی، که  html(برای XHTML) یا HTML خوانده میشود ، به نام عنصر ریشه سند اشاره دارد ، این اطلاعات برای مقاصد اعتبار سنجی گنجانده شده است، چرا که DTD ، به عنصر ریشه اشاره ای نمی کند.

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


در این بیانیه PUBLIC به مرورگر اطلاع میدهد که DTD یک منبع عمومی در دسترس است. اگر شما می خواهید زبانی خارج از مشخصات تعیین شده گسترش دهید، می توانید برای ایجاد یک DTD سفارشی تلاش کنید. این امر به شما اجازه تعریف عناصر سفارشی را می دهد و شما را قادر می سازد که با توجه به آن DTD، اعتبارسنجی کنید. در این مورد، شما باید کلمه PUBLIC  را به  SYSTEM تغییر دهید:


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


بخش بعدی به عنوان شناسه عمومی شناخته شده و اطلاعاتی در مورد صاحب یا سرپرست   DTD ارائه میکند . در این مثال ، W3C شناسه عمومی نشان داده شده است، بزرگ یا کوچک بودن حروف مهم نیست. در ادامه نیز شامل سطحی از زبان است که DTD به آن اشاره دارد (در این مثالXHTML 1.0) و زبان DTD ( نه محتوای صفحه ی وب) را شناسایی میکند. زبان به عنوان زبان انگلیسی یا EN تعریف شده است.

توجه داشته باشید که اگر DOCTYPE شامل کلمه SYSTEM  باشد، بخش شناسه عمومی حذف خواهد شد.


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


این دو با یکدیگر ، بخشی به نام شناسه رسمی عمومی (و یا FPI) تشکیل می دهند .

در نهایت، DOCTYPE شامل یک  URL است که به عنوان سیستم شناسه رسمی (FSI) شناخته شده و به محل DTD اشاره دارد:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.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 را می بینید:

  1. Strict ( صریح )
  2. Transitional ( انتقالی )
  3. Frameset



DOCTYPE HTML 4.01 tutorial

What is DOCTYPE?

Document Type Declaration or DOCTYPE declares which version of HTML is being followed by the document in question. Each version of HTML has its own set of rules, exclusions and inclusions. If an HTML document follows the rules specified in a particular version of HTML, then it is called valid HTML document. It is always a good practice to design valid HTML pages. An invalid HTML page, fails to be read properly by a search engine, causing it a unpopular website.

In HTML version 4, there are three types of DOCTYPES can be used : strict,transitional and frameset.

In this tutorial, we will discuss all these categories with adequate examples to help you to understand how to declare a doctype in an HTML page and how a valid HTML page looks like. We will also see how to check the validity of an HTML page. But before that, we will discuss the doctype itself, rather than categories of doctype.

DOCTYPE comes at the top of an HTML document. all other elements come after it. In an HTML page, doctype declaration can come once only.

Here is a graphical representation of different sections of a Doctype declaration:

Pictorial presentation of HTML DOCTYPE

Click here to see the enlarged image.

dtd diagram

Example of HTML doctype declaration

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
  2. "http://www.w3.org/TR/html4/strict.dtd">  
  3. <html>  
  4. <head><title>w3resource tutorial</title></head>  
  5. <body>  
  6. <h1>we are learning html</h1>  
  7. <h2>we are learning html at w3resource.com.</h2>  
  8. <p>This section covers the introduction to html</p>  
  9. <p><a href="/index.php">Look here to get a list of the topics covered in  
  10. w3resource.com</a></p>  
  11. </body>  
  12. </html>  

In this example HTML code, at the top of the document, doctype is being declared.

We will see now, what are the different parts of the doctype means (each of the keywords mentioned in the left hand side of the : delimiter expresses a placeholder or field which may vary according to the declaration, and the description given on the right hand side of the : delimiter states about what does that field or place in the doctype declaration mean):

">HTML : This indicates the top level element type declared in the Doctype declaration.

Since this is an HTML document, so the top-level element is <html>.

PUBLIC : This indicates whether the identifier is a publicly accessible object (PUBLIC) or a system resource (SYSTEM) such as a local file or URL. HTML/XHTML DTDs are specified by PUBLIC identifiers, where as XML DTDs can be PUBLIC or SYSTEM.

- : A plus symbol indicates that the organization name that follows is ISO-registered. A minus sign indicates the organization name is not registered. The IETF and W3C are not registered ISO organizations and thus use a "-".

W3C : This is the "OwnerID" - a unique label indicating the name of the entity or organization responsible for the creation and/or maintenance of the DTD referenced by the DOCTYPE. The IETF and W3C are the two originating organizations of the official HTML/XHTML DTDs.

DTD: This is the "Public Text Class" - the type of object being referenced. There are many different keywords possible here, but in the case of an HTML/XHTML DTD, it is "DTD" - a Document Type Definition.

HTML 4.01 Transitional : This is the "Public Text Description" - a unique descriptive name for the public text (DTD) being referenced. If the public text changes for any reason, a new Public Text Description string should be created for it.

EN : This is the "Public Text Language"; the natural language encoding system used in the creation of the referenced object. It is written as an ISO 639 language code (uppercase, two letters.) HTML/XHTML DTDs are usually (always?) written in English ("EN".)

URL : This is the optional explicit URL to the DTD being referenced.

HTML 4.01 strict doctype

Description

This is strict version of HTML 4.01 doctype. HTML 4.01 Strict Doctype does not allow presentational attributes to be written within HTML Elements.It also does not support inclusion of Frames.

Example of HTML 4.01 strict doctype

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

HTML 4.01 strict doctype declaration does not allow frameset, target link to be included in the HTML document.

HTML 4.01 transitional doctype

Description

HTML 4.01 Transitional is a derivative of HTML 4.01 Strict doctype declaration, allowing users to use certain elements and attributes which are not allowed to be used in strict doctype.

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

This is a doc type declaration for transitional doctype declaration.

HTML 4.01 frameset doctype

HTML 4.01 Frameset is a derivative of HTML 4.01 Transitional doctype declaration, allowing users to use frames. In an HTML document using Frameset doctype, body element is replaced by frameset element.

Here is how you can declare a frameset doctype in an HTML document.

Example of HTML 4.01 frameset doctype

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

HTML 4.01 Validation

Description

If your HTML document contains HTML codes according to the rules specified by w3c, then your HTML document is called as a valid HTML document.

w3resource always encourage you to write valid HTML codes. Infact all the pages of w3resource.com are valid xhtml 1.0 pages.

There are several ways to check if your HTML code is valid.

If you search using "w3c validation ", it takes you to the validation service offered by w3c. There are three ways to check if your HTML code is valid in w3c validation service.

1) You can provide the url of your HTML document.

2) You can directly input the HTML code to be validated.

3.) You can upload the HTML file and check validation

w3c validation service not only checks if your HTML code is validated, but also offers suggestions to rectify if any portion of your HTML code is not satisfying the validation.