Що таке DOCTYPE? Згідно специфікаціям HTML і XHTML тег DOCTYPE (що означає "оголошення типу документа") повідомляє валідатора, яку саме версію (X) HTML ви використовуєте в своїй сторінці. Цей тег повинен завжди перебувати в першому рядку кожної сторінки. Тег DOCTYPE - ключовий компонент web-сторінок, які претендують на відповідність стандартам: без нього ваш код і CSS не пройдуть перевірку валідатором.
Тег DOCTYPE також важливий для правильного відображення і роботи сторінки в броузерах, які відповідають стандартам (Mozilla, IE5/Mac, і IE6/Win).
Тег DOCTYPE, в атрибутах якого вказується повний URI (повний web-адреса), повідомляє броузерам, що сторінку потрібно вивести з дотриманням певного стандарту або підвиди цього стандарту.
Якщо ви буде користуватися неповним тегом DOCTYPE, застарілим його виглядом, або взагалі забудете про нього, броузер перейде в "загадковий" режим і буде виходити з припущення, що ви писали код сторінки з помилками і вільно відступали від стандартів, тобто так, як писали в кінець 90-их років.
У цьому режимі броузер спробує розібрати вашу сторінку за правилами зворотної сумісності і виведе на екран, наприклад, CSS так, як його вивів би Internet Explorer 4-ї версії, а DOM буде працювати так, як він працював саме в цьому броузері (IE перемикається в свій старий DOM, а Mozilla і Netscape 6 переключається взагалі в бог знає що).
Зрозуміло, що для вас ці викрутаси не бажані. Але саме це ви і отримаєте, якщо будете користуватися неповним чи неправильним тегом DOCTYPE. Дана стаття спробує виправити цю вашу помилку.
(Увага: броузер Opera не грає за такими правилами; він завжди намагається відобразити сторінку так, як якщо б вона відповідала стандартам. Слава Опері! З іншого боку, Opera поки не повністю підтримує стандарт W3C DOM, але робота над цим уже ведеться.)
Де ж взяти правильний DOCTYPE?
Так як теги DOCTYPE надзвичайно важливі для роботи Web-а за стандартами, і так як консорціум W3C є провідною організацією, що створює стандарти для Web-а, слід було б очікувати, що на сайті W3C буде представлений список всіх варіантів тега DOCTYPE, і здавалося б цю інформацію на сайті W3C можна знайти швидко і просто в якомусь певному розділі. Але це не так, принаймні на момент написання цієї статті.
W3.org - це не сайт зі статтями як A List Apart, WebReference або Webmonkey. Він не створений у допомогу web-дизайнерам, розробникам та авторам сайтів, і він не займається розповсюдженням новітньої інформації та корисних порад. Це не його завдання.
Так, іноді W3C публікує серії навчальних статей, хоча більшість web-розробників про це навіть і не знає. Але в основному, сайт W3C містить зібрання пропозицій, проектів та Рекомендацій, які написані інженерами для інженерів. І коли я кажу про інженерів, я не маю на увазі простих фахівців в області web-розробок, таких спеців, як ви і я. Я маю на увазі інженерів, у порівнянні з якими ми виглядаємо повними бовдурами.
Я можу витратити весь день в пошуках правильних тегів DOCTYPE на сайті w3.org, але не знайду жодної сторінки, де вони перераховані всі разом. Якщо ж вам все-таки вдасться знайти який-небудь тег DOCTYPE (наприклад, згадуваний в якій-небудь Рекомендації або Робочому проекті), скоріше за все виявиться, що на вашому сайті він працювати не буде.
По всьому сайту W3C розкидані теги DOCTYPE, де в атрибутах відсутня URI, і теги DOCTYPE, що містять в атрибутах відносний URI, пов'язаний з документами, що знаходяться на тому ж самому сайті W3C. Якщо ви візьмете цей тег з сайту W3C, перенесете його на свій сайт і вставите в свої сторінки, відносний URI буде вказувати на неіснуючі на вашому сайті документи, отже марно пропаде вашу працю і зусилля броузера.
Наприклад, на багатьох сайтах можна зустріти на сторінках наступний варіант тега DOCTYPE, який був без будь-яких змін перенесений з сайту w3.org:
<! DOCTYPE html PUBLIC "- / / W3C / / DTD XHTML 1.0 Strict / / EN" "DTD/xhtml1-strict.dtd">
Подивіться на останню частину тега DOCTYPE ("DTD/xhtml1-strict.dtd"). Зверніть увагу, що це відносне посилання на документ, розміщений на сайті W3C. Так як цільовий документ знаходиться на сайті W3C, а не на вашому, цей URI для броузера даремний.
А виглядати DOCTYPE повинен ось так:
<! DOCTYPE html PUBLIC "- / / W3C / / DTD XHTML 1.0 Strict / / EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
Зверніть увагу, що цей варіант DOCTYPE містить в кінці повний варіант URI. А так як тег вказує на правильне розташування документа, броузер знає, де цей документ треба знайти в мережі, і отже виведе вашу сторінку в тому стандарті, який ви згадали в DOCTYPE.
Правильні варіанти тега DOCTYPE
Отже, яким же варіантом тега DOCTYPE треба користуватися? Дуже добре, що ви поставили це питання. Нижче перераховані повні варіанти тега DOCTYPE для різних потреб:
Стандарт HTML 4.01 Strict (строгий), Transitional (перехідний), Frameset (з фреймами)
<! DOCTYPE HTML PUBLIC "- / / W3C / / DTD HTML 4.01 / / EN" "http://www.w3.org/TR/html4/strict.dtd">
<! DOCTYPE HTML PUBLIC "- / / W3C / / DTD HTML 4.01 Transitional / / EN" "http://www.w3.org/TR/html4/loose.dtd">
<! DOCTYPE HTML PUBLIC "- / / W3C / / DTD HTML 4.01 Frameset / / EN" "http://www.w3.org/TR/html4/frameset.dtd">
Стандарт XHTML 1.0 Strict (строгий), Transitional (перехідний), Frameset (з фреймами)
<! DOCTYPE html PUBLIC "- / / W3C / / DTD XHTML 1.0 Strict / / EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<! DOCTYPE html PUBLIC "- / / W3C / / DTD XHTML 1.0 Transitional / / EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<! DOCTYPE html PUBLIC "- / / W3C / / DTD XHTML 1.0 Frameset / / EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
Стандарт XHTML 1.1 DTD
<! DOCTYPE html PUBLIC "- / / W3C / / DTD XHTML 1.1 / / EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
Що далі?
Як ви можете внести свій внесок у поширення стандартів у Web? Насамперед, помістіть в закладки цю сторінку (або просто збережіть її на своєму комп'ютері), а також перевірте, вставляє ваш web-редакторв у ваші сторінки тег DOCTYPE, а якщо вставляє, - чи правильний варіант тега він використовує?
Багато розроблювачів ПЗ просто скопіювали неповні варіанти тега DOCTYPE з сайту W3C у свої програми. І в результаті: ви покладаєтеся на програму, яка вставляє неправильний варіант тега, броузер впадає в "загадковий" режим, а ви безуспішно б'єтеся над загадкою, чому ваші сторінки не працюють, як треба.
Варто також написати тим хлопцям, що роблять ваш улюблений web-редактор, і показати їм, як виглядає правильний тег DOCTYPE, після чого, ввічливо попросити їх внести зміни до нової версії програми. (У деяких випадках, ви зможете навіть внести зміни в програму самі.)
У найближчому майбутньому
У нас є всі причини сподіватися, що W3C скоро викладе повний, точний і зручний список всіх варіантів тега DOCTYPE на своєму сайті, а також опублікує іншу важливу інформацію. І цю інформацію легко буде знайти. До речі, в цю статтю вніс свій внесок Карл Дабост (Karl Dubost) - менеджер W3C щодо забезпечення якості (Conformance Manager of W3C's Quality Assurance team).
Крім того, проект The Web Standards Project скоро буде перероблений (дуже скоро), і на ньому теж можна буде знайти цю інформацію.
Але так як кожен день створюються і випускаються в мережу все нові та нові сайти, ця інформація вам потрібна вже зараз, так от вона - користуйтеся.
Удачі!
При копіювані матеріалу сику на cs-yakudza.com ОБОВЯЗКОВО!