23:09

DOCTYPE

alhames.ru

Элемент <!DOCTYPE> предназначен для указания типа текущего документа — DTD (document type definition, описание типа документа). Это необходимо, чтобы браузер понимал, как следует интерпретировать текущую веб-страницу, ведь HTML существует в нескольких версиях, кроме того, имеется XHTML (EXtensible HyperText Markup Language, расширенный язык разметки гипертекста), похожий на HTML, но различающийся с ним по синтаксису. Чтобы браузер «не путался» и понимал, согласно какому стандарту отображать веб-страницу и необходимо в первой строке кода задавать <!DOCTYPE>.


Существует несколько видов <!DOCTYPE>, они различаются в зависимости от версии HTML, на которую ориентированы. В табл. приведены основные типы документов с их описанием.


Таблица



Как я понимаю, самым лучшим вариантом является использование <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "www.w3.org/TR/html4/strict.dtd">;?

Так ли это, и насколько необходим этот тег?

@темы: HTML, Оптимизация, Синтаксис

Комментарии
19.05.2008 в 23:13

> Так ли это, и насколько необходим этот тег?

У меня однажды было, что этот тег напрямую влиял на отступы между дивами и таблицами - на относительность положения двух элементов.
19.05.2008 в 23:30

alhames.ru
Trotil т.е. ты использовал именно строгий синтаксис?
19.05.2008 в 23:36

Даже среди сильной бури есть маленькая полоска света!
В блочной верстке - почти обязателен.
www.quirksmode.org/css/quirksmode.html

Самым распространенным является
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
(как на этой странице)

В основном, потому что многие форумные системы и WYSIWYG-редакторы перешли на него. Кроме того, на него перешел и сам Photoshop(в частности ImageReady), что упростило создание подобных страниц неопытными пользователями.

Без этого тега браузер работает в quirks mode. иначе - соблюдается соответствие стандартам.

Что касается меня, я пишу..
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN">

И короче и понятнее. Кстати, верно писать вот так:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml11.dtd">
20.05.2008 в 00:00

Вопрос "самого лучшего варианта" тут не совсем применим... Скажем так - ты объявляешь браузеру, что будешь играть по каким-то правилам. За это получаешь более управляемый и предсказуемый результат при отображении, либо ататат, если где-то правил не придерживаешься. Браузер, конечно, не компилятор, при несоответствии страница не навернётся, то искривиться может )
20.05.2008 в 00:16

alhames.ru
lynx i.i. насколько я понимаю XHTML - это расширение стандартного html. Если я ограничиваюсь лишь html - то указывать xhtml ни к чему? Или оно никак не повредит?

Tzota
Браузер, конечно, не компилятор, при несоответствии страница не навернётся, то искривиться может )
Т.е. все решается путем тестирования? =))
20.05.2008 в 00:31

alhames Извиняюсь, что отвечаю за lynx, но если ограничиваешься html, то указывать надо именно его, а не xhtml. Потому что по html, например, у "br" нет закрывающего тега, а xhtml требует закрывать все теги. Поэтому всё-таки не расширение, а скорее другие правила, хотя и на 95% похожие.

Как ни странно, да. Ну или большого и толстого опыта. Я, например, знаю, что в таком режиме height:100% не сработает, а в таком - запросто. Но сталкивался с кучей примеров, когда стоит у отлично выглядящей верстки заменить доктайп - и "шеф, всё пропало".
20.05.2008 в 01:09

Даже среди сильной бури есть маленькая полоска света!
Tzota
Извиняюсь, что отвечаю за lynx, но если ограничиваешься html, то указывать надо именно его, а не xhtml. Потому что по html, например, у "br" нет закрывающего тега, а xhtml требует закрывать все теги. Поэтому всё-таки не расширение, а скорее другие правила, хотя и на 95% похожие.

Ничего, я не против :)

XHTML - это стандарт, основанный на правилах XML.
HTML - это стандарт, основанный на правилах SGML.
XML - это тоже стандарт, основанный на правилах SGML.

HTML стоит использовать лишь там, где его нужно использовать.
Когда много работаешь с XML(при написании XSLT шаблонов, к примеру) - на выходе уже автоматически, по привычке выходит XHTML. Потому что иначе сайт не отобразится, PHP вызовет Exception и придется долго курить где же там ошибка :) Долго - это секунд 10, которые тратятся на ффтыкание в монитор и непонимание того, почему сайт не отобразился.

хотя в обычном echo можно использовать и самый обычный HTML.
20.05.2008 в 22:55

alhames.ru
Из выше приведенной дисскусии понял, что лучшим для меня вариантом будет использование XHTML, так как в будущем это дает больше возможностей для модификации сайта.
Так же понял, что наиболее рациональным будет использование переходного синтаксиса (который используется фактически везде (но, почемут яша использует html 4.01, а, к примеру, на гугл.сом доктайпа я вообще не нашел..)).

Теперь такие вопросы:
1) Использование XHTML 1.0, а не XHTML 1.1 - это издержки прошлого, или в 1.1 есть проблемы с поддержкой браузеров? Почему на тех же дайри, ли.ру и т.д. используют 1.0?
2) Где можно найти спецификацию xhtml на русском языке? Т.е. основные отличия в написании кода от html какие? Вот, говорили, все теги должны быть закрытыми - т.е. имелись ввиду теги <br>, <img>, <hr> - еще какие?
20.05.2008 в 23:21

100% sabiko. Please, hug, hold, feed, care for.
alhames,
статья о doctype
рекомендация по xhtml 1.0, по1.1

гугл вообще не валидный) теги в xhtml закрываются все, не требующие закрывающего (т.е. пишем
и т.д., смотрите сами на месте), не используются сокращённые формы записи.

и на сладкое html vs xhtml, правда, когда это было..)
20.05.2008 в 23:31

1. Отличия описаны в www.w3.org/TR/xhtml11/changes.html#a_changes
По ходу пьесы их не так много, всё стало ишшо мальца строже )))) Основная цель - никакого наследия нестрогого html ) Так что если писать новый сайт - то без разницы. А если старый переводить - то запаришься из-за мелочёвки тонну шаблонов прочёсывать. Видимо, потому и не переводят на этих ресурсах.
То же на русском: www.ipm.kstu.ru/it/doc/xhtml11/changes.html#a_c...

2. Уау. Не думал, что такое есть. Сто лет не пользовался русской документацией )))
Яндекс, на первой странице:
www.internet-technologies.ru/specifications.htm...
www2.stack.ru/~julia/XHTML/xhtml1.phtml
21.05.2008 в 00:18

alhames.ru
Сабико Tzota спасибо! В ближаешее время со всем ознакомлюсь ))

P.S.
Уау. Не думал, что такое есть. Сто лет не пользовался русской документацией )))Ага ) Отсутствие русской документации - весьма актуальная тема в наше время ))
21.05.2008 в 01:11

Даже среди сильной бури есть маленькая полоска света!
1) Использование XHTML 1.0, а не XHTML 1.1 - это издержки прошлого, или в 1.1 есть проблемы с поддержкой браузеров?
XHTML 1.1 должен обрабатываться как application/xhtml+xml в режиме XML. это порождает проблемы с отображением сайта в случае ошибки. Можно засервить как text/html - тогда проблем не будет.
Да, ИЕ7 не поддерживает application/xhtml+xml.
Кроме того, существуют проблемы с другими W3C стандартами. WCAG 1.0 в частности.
В каждом элементе атрибут lang удалён в пользу атрибута xml:lang (как определено в [XHTMLMOD]).
Насколько я помню, в WCAG 1.0 определен только атрибут lang.
Еще стоит упомянуть про то, что в XHTML 1.1 убрали атрибут target и пока ничем его не заменили.
a href="http://" является невалидным посему.
пока что это танцы с бубном через a rel="external" или Javasсript. Это тоже фактор сдерживающий распространение.
(в XHTML 1.0 Strict, извиняюсь)

В конце концов, XHTML 1.1 это пока Working Draft.

Другие ограничения XHTML:
a не должен содержать других элементов.
pre не должен содержать img, object, big, small, sub, sup
button не должен содержать input, select, textarea, label, button, form, fieldset, iframe,isindex(в html это была недокументированная фича ))
label не должен содержать других label
form не должен содержать других form.

Вроде все )

Почему на тех же дайри, ли.ру и т.д. используют 1.0?
мне кажется еще и потому что при переходе на www.w3.org/TR/html мы видим XHTML 1.0.
как бы добровольно-принудительный переход..
22.05.2008 в 01:25

мой опыт говорит о том, что у наличия доктайпа и у его отсутствия свои преимущества.
если нужна надежность в верстке и в скриптах, то лучше с доктайпом (переходным или жестким).
если готовы хитрить и изварачиваться, то можно и без доктайпа ) *тут уже полет фантазии*
гугл, кстати, живет со стриктом:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"www.w3.org/TR/html4/strict.dtd"> (google.com)
то, что отступы у кого-то разные были. так это надо было занулить их и назначать по необходимости. ибо можно рассматривать только 2 типа браузеров: нормальные и ИЕ раньше 7-го. хотя и 7-ка без доктайпа живет своей жизнью.
все надо учитывать.
30.05.2008 в 20:02

Как я понимаю - для меня этот элемент обычно говорит - мы писали не руками а использовали дримвивер или ворд.
ну что ж не плохо но почему тогда
"-//W3C//DTD HTML 4.01//EN"
хотя для наших неплохо было бы так :
"-//W3C//DTD HTML 4.01//RU"
30.05.2008 в 20:12

Даже среди сильной бури есть маленькая полоска света!
нет такого доктайпа "-//W3C//DTD HTML 4.01//RU". Пока не создали :)
31.05.2008 в 01:34

(старчески бурчит) этот элемент обычно говорит "Мы писали, стараясь придерживаться стандартов. И спасибо, что даже программы вёрстки пытаются нам его подсунуть и приучить нас к хорошему кодированию."
31.05.2008 в 02:09

вообще добрые люди плюют на старые браузеры, которые не поддерживают стандарты. и правильно делают, мотивируя это тем, что минимально число людей, их использующее, и тем, что сайты/порталы создаются не для тех, кто пользует IE5.
31.05.2008 в 02:24

Даже среди сильной бури есть маленькая полоска света!
если сконструировано по стандартам, то не должно быть никаких проблем. html он везде html.
31.05.2008 в 03:03

alhames.ru
finntroll плевать на владельцев доисторических браузеров - это уже дискриминация по браузерному признаку :-D
Я так и не нашел пока что времени во всем разобраться..
29.07.2008 в 17:43

alhames.ru
Наконец-то руки (точнее глаза) дошли до доктайпа.
Теперь такие вопросы:

1. Избегайте помещения разрывов строк и нескольких пробельных символов в значения атрибутов. Они обрабатываются пользовательскими агентами по-разному.
У кого нибудь есть опыт в подобных "разных отображениях"?

2. Для указания кодировки символов в документе используйте как спецификацию атрибута кодировки в объявлении xml (например, <?xml version="1.0" encoding="EUC-JP"?>;), так и выражение meta http-equiv (например, <meta http-equiv="Content-type" content='text/html; charset="EUC-JP"' />;).
Т.е., так как по умолчанию кодировка UTF-8, а я использую windows-1251, то мне необходимо дважды её объявлять (через xml и meta)? Тогда почему на дайри только через мета-тег?

3. Некоторые пользовательские агенты HTML неспособны интерпретировать булевы атрибуты в полной (ненормализованной) форме, как это требуется в XML 1.0. Обратите внимание, что эта проблема не затрагивает пользовательские агенты, совместимые с HTML 4. Это относится к следующим атрибутам: compact, nowrap, ismap, declare, noshade, checked, disabled, readonly, multiple, selected, noresize, defer.
Т.е. теперь вместо <option checked> мне нужно писать <option checked="checked"> и т.д.?

4. Если значение атрибута содержит амперсанд, он должен быть представлен в виде ссылки на символьный объект (например, "&amp;"). Например, если атрибут href элемента a ссылается на CGI-скрипт, которому передаются параметры, он должен передавать их в виде http://my.site.dom/cgi-bin/myscript.pl?class=guest&amp;name=user, а не http://my.site.dom/cgi-bin/myscript.pl?class=guest&name=user.
Вот это меня вообще смутило.. Благо у меня нет таких внутренних ссылок, но как быть со ссылками на счетчики и т.д.?

Вот, вроде все..
30.07.2008 в 01:53

Даже среди сильной бури есть маленькая полоска света!
Т.е., так как по умолчанию кодировка UTF-8, а я использую windows-1251, то мне необходимо дважды её объявлять (через xml и meta)? Тогда почему на дайри только через мета-тег?
нет, единожды, через заголовок желательно.
Content-Type: text/html; charset=windows-1251
или мета-эквивалент
meta http-equiv="Content-Type" value="text/html; charset=windows-1251"
другой вариант - через htaccess.
CharsetSourceEnc windows-1251
Да, с объявлением xml нужно быть осторожными. кроме того факта, что это должен быть well-formed xml, теги должны обязательно иметь начальный и оконечный теги. особенно это касается <script> и </script>.
если написать <script/> - то ИЕ покажет лишь белую страницу.
Также все скрипты должны быть заключены в CDATA.

Т.е. теперь вместо мне нужно писать и т.д.?

Да, именно так.

Вот это меня вообще смутило.. Благо у меня нет таких внутренних ссылок, но как быть со ссылками на счетчики и т.д.?
И внутренние и внешние. Хотя, если счетчик находится в Javasсript, экранированным CDATA - амперсанды заменять не обязательно.
30.07.2008 в 05:09

alhames.ru
lynx i.i. поставил я, значит, себе в доктайп XHTML, посмотрел как съехала моя табличная структура (на которую пришлось перейти из-за недостатков div-ов), и решил, что лучше я всеже поставлю HTML 4.01 =)
К тому же статья html vs xhtml меня окончательно убедила в этом )

Тем неменее валидатор упоро придерается к коду счетчика - надо будет его подредактировать, или вообще отказаться..
30.07.2008 в 06:09

Даже среди сильной бури есть маленькая полоска света!
К тому же статья html vs xhtml меня окончательно убедила в этом )

Статья явно устарела.
тип должен быть xml'ным: application/xml, text/xml или рекомендуемый именно для XHTML -- application/xhtml+xml

Новая редакция гласит:
XHTML 1.1 documents SHOULD be labeled with the Internet Media Type text/html as defined in [RFC2854] or application/xhtml+xml as defined in [RFC3236].

элементы должны принадлежать зарегистрированному для XHTML пространству имен -- это вот та штука xmlns="www.w3.org/1999/xhtml"

Не обязательно. Если уж по всем правилам, то тег html должен выглядеть примерно так:
html xmlns="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/MarkUp/SCHEMA/xhtml11.xsd" xml:lang="en"

Если так сделать, то как я уже сказал, IE, у которого специального XHTML-парсера нет, будет просто показывать дерево элементов, а новые браузеры действительно включатся в XHTML-режим.

Не совсем так. При application/xhtml+xml, IE будет обрабатывать страницу как text/html.

Загвоздка тут в том, что браузеры выясняют тип документа не по DOCTYPE. Вместо этого они смотрят на то, что указано в заголовках HTTP-ответа, с которым пришел документ. А написано там в подавляющем большинстве случаев:

Content-type: text/html


Еще довольно сильно влияет поле Accept. Оно определяет приоритетность.
к примеру в Firefox 3:
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Значит, наивысший приоритет будет у text/html(1.0), далее у application/xhtml+xml(1.0), application/xml(0.9), все остальные(0.8)

Напомню, что кардинальное отличие XHTML от HTML состоит в том, что XHTML подчиняется жестким XML'ным правилам well-formed'ности. То есть, если в документе хоть чуть-чуть что-то неправильно, то браузер обязан бросить парсить документ и сообщить пользователю об ошибке.

Тогда еще не было Firefox 3 )

Кстати, со скриптами не все так сложно. Можно оставить и обычное комментирование.

Самое главное - что при шаблонизации в XSLT xhtml шаблон не придется переверстывать с нуля. Все теги аккуратно и правильно закрыты, нету недопонимания.
Пожалуй, основная проблема браузеров состоит в том, что они додумывают за юзера, что именно он имел в виду. С xhtml подобная проблема исчезает - все теги явно закрыты, все правила парсинга значительно упрощаются.

Конечно, проще верстать как придется, но качество от этого страдает. К примеру, верстальщик мне сказал, что лучше было бы верстать таблицами, я возразила что это неправильно. Таблицы должны быть таблицами и использовать их в верстке кощунственно. Кроме того, у нас стояла конкретная задача с "подвижными" блоками - один блок удалили, на его место должен стать тот, который рядом. С таблицами этого не сделать.

Тем неменее валидатор упоро придерается к коду счетчика - надо будет его подредактировать, или вообще отказаться..
Я обычно облегчаю счетчик до минимально функционального состояния.
30.07.2008 в 06:15

Даже среди сильной бури есть маленькая полоска света!
Другими словами, в следующий раз, когда вам нужно будет сверстать страницу для веба, отриньте суету и начните ее так:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> Страница <p>Текст
Это совершенно валидный HTML 4.01 strict.


Еще добавлю. Это невалидный html. root-элемент html (указанный после слова DOCTYPE) в документе отсутствует, поэтому доктайп оказывается привязанным к воздуху.
30.07.2008 в 06:58

alhames.ru
lynx i.i. Тогда еще не было Firefox 3 )
Ну, однако события "есть FF3" и "есть FF2" являются соместными, т.е. одно не исключает другое =)

Я обычно облегчаю счетчик до минимально функционального состояния.
О счетчиках я открою отдельную тему, ибо меня сильно раздражает то, что он замедляет загрузку страницы, тем самым нижний бордюр грузится со значительной задержкой =(
Надо будет че-нибудь придумать..

А в HTML 4.01 можно ведь закрывать все теги (в том числе и <br />, и т.д.)) для собственного удобства? Или будут опять придирки к валидности?
30.07.2008 в 07:08

Даже среди сильной бури есть маленькая полоска света!
Ну, однако события "есть FF3" и "есть FF2" являются соместными, т.е. одно не исключает другое =)
В FF2 не было последовательной загрузки XML документа, он отражал ошибку, если находил хоть где-то в документе несоответствие. В FF3 это появилось. Теперь XML можно посмотреть даже неполностью загрузив его, как и было с html.

О счетчиках я открою отдельную тему, ибо меня сильно раздражает то, что он замедляет загрузку страницы, тем самым нижний бордюр грузится со значительной задержкой =( Надо будет че-нибудь придумать..

Это скорость отклика от сервера со счетчиком.. У меня тоже такое было.

А в HTML 4.01 можно ведь закрывать все теги (в том числе и
, и т.д.)) для собственного удобства? Или будут опять придирки к валидности?


Возможно и будут. В чем тогда разница между HTML и XHTML 1.0 Transitional? только в том, что закрытые через косую черту теги естестественны для XHTML.

Вот когда все стили выносятся из html кода, используется strong и em вместо b и i, и при этом стоит доктайп html - вот этого я не понимаю, хотя и встречала.
30.07.2008 в 07:19

alhames.ru
lynx i.i.
В чем тогда разница между HTML и XHTML 1.0 Transitional?
Ну, закрытые теги - это далеко не главное отличие =)
К примеру, все теги и атрибуты я всегда пишу в нижнем регистре, все значения атрибутов у меня всегда в кавычках, скрипты и стили вынесены во внешнии файлы и т.д. - т.е. особого труда перейти к XHTML не будет, и всеже вертикальная растяжка таблицы будет утеряна =(

используется strong и em вместо b и i
Если честно, я не то что strong и em не использую, я и b и i обычно игнорирую и задаю все через span с вынесением стиля в класс =)
30.07.2008 в 12:36

Даже среди сильной бури есть маленькая полоска света!
Если честно, я не то что strong и em не использую, я и b и i обычно игнорирую и задаю все через span с вынесением стиля в класс =)

зря ) для поисковиков это важно )

Ну, закрытые теги - это далеко не главное отличие =) К примеру, все теги и атрибуты я всегда пишу в нижнем регистре, все значения атрибутов у меня всегда в кавычках, скрипты и стили вынесены во внешнии файлы и т.д. - т.е. особого труда перейти к XHTML не будет, и всеже вертикальная растяжка таблицы будет утеряна =(

Не думаю, что что-то будет утеряно. У меня пока ничего не терялось )
30.07.2008 в 13:29

alhames.ru
lynx i.i. специально для поисков я решил всеже использовать <h1> - <h6> =)
А коим образом i и b влияют на индексацию?

Не думаю, что что-то будет утеряно. У меня пока ничего не терялось )
А у меня потерялась(
Вот теперь и думаю - опять убить день на поиск оптимального варианта и пока страничка не сильно загружена, переделать ее под xhtml, или плюнуть и остаться на hml'е.. Просто я не вижу преимуществ, которые мне могли быть необходимы..
30.07.2008 в 13:36

Даже среди сильной бури есть маленькая полоска света!
специально для поисков я решил всеже использовать

- =) А коим образом i и b влияют на индексацию?



И это тоже верно. b и i выделяют слова для поисковика в общем потоке слов. иначе говоря, они имеют больший вес чем просто текст, но меньший чем h6

А у меня потерялась( Вот теперь и думаю - опять убить день на поиск оптимального варианта и пока страничка не сильно загружена, переделать ее под xhtml, или плюнуть и остаться на hml'е.. Просто я не вижу преимуществ, которые мне могли быть необходимы..

можно перейти и позже. не в том суть.

Расширенная форма

Редактировать

Подписаться на новые комментарии
Получать уведомления о новых комментариях на E-mail