Вёрстка в Латвии: Вчера. Сегодня! Завтра?
Версия моего выступления на Web Standards Days Riga 2010 вызвавшего неоднозначную реакцию.
Много было регистраций работников различных дизайн студий, компаний занимающихся разносторонней веб-разработкой, банков, министерств, фрилансеров и просто интересующихся. Я не зря добавил в форму регистрации поле для адреса сайта. Те люди, что собрались на конференцию, скромно говоря, флагманы, пионеры латвийской веб-разработки. Поэтому не грех было покопаться в их работах и попробовать понять, что же всё-таки у нас происходит с текущим использованием технологий?
Статистика вещь интересная, но только если она связанна с интересными темами. Мне было интересно заняться небольшим статистическим анализом, результатами которого я с вами сейчас поделюсь. Конечно в дебри я не полез, из-за большой лени, но то, чего успел накопать хватает достаточно, чтобы составить небольшую рекомендацию, с чего стоит начать осовременивать свою вёрстку.
Вчера
Итак, что же можно назвать «вчера»?
- ASCII кодировка
- Не использование DOCTYPE
- DOCTYPE с указанием спецификации
- Валидация ради валидации
Список можно продолжить, но мне лениво.
Кодировка
Для начала рассмотрим какие кодировки использовались на проанализированных сайтах.

Здесь всё замечательно, почти на всех сайтов используется кодировка utf-8. Это проще, чем подбирать для каждого языка свою. Здесь могу только посоветовать, тем 7 %, кто остался переходить на uft-8. Больше говорить не о чем.
DOCTYPE
Многие до сих пор не понимают значения доктайпа. Для того, чтобы это понять, нужно сначала обратиться к истории. Ну долго копаться в ней не будем, единственно упомянем, что существует два режима отображения веб-страницы — Standards Mode и Quirks Mode, ну так исторически сложилось. Первый — это режим отображения согласно веб-стандартам W3C, второй — режим поддержки старых сайтов, написанных в 90-е годы. Чем конкретно они отличаются читайте на W3C или в Википедии, ищите в Гугле… информации полно, но я на этом зацикливаться не буду. (Ну там ещё есть almost standards, который от standards почти не отличается)
Если вы не пишете доктайп, то включается Quirks Mode. Если пишете — Standards Mode. Но есть исключения:
- Internet Explorer воспринимает декларацию HTML 4.0 и старее как Quirks Mode.
- В случае с XHTML по правилам требуется xml-декларация. И её фактически никогда не пишут, поскольку из-за неё IE6 переключается в Quirks Mode.
- Опера вообще не поддерживает Quirks Mode. Даже без DOCTYPE страница рендерится в Standards Mode.
Более подробные нюансы о QuirksMode можно почитать в Википедии.
Итог: Чтоб избежать проблем нужно использовать DOCTYPE обязательно.
DOCTYPE с указанием спецификации или валидация ради валидации
Теперь посмотрим как у нас обстоят дела с доктайпами на латвийских сайтах.

Великолепно! 68 % указывают XHTML декларацию. А теперь проверим, проходят ли они валидацию?

Внимание, вопрос! Зачем для сайтов указывать доктайпы со спецификацией, если валидацию они не проходят?
Если почитать спецификацию XHTML, то такой документ по сути должен передаваться в формате application/xhtml+xml. Это можно сказать «чистый» XHTML. Правильный. Мы все любим правильность и я в том числе, поэтому большинство сайтов написаны в формате XHTML. Там и правильные закрывающие теги и правильная вложенность и дубрирующееся написание значения атрибутов-флагов.
А на самом деле все передают такой документ в формате text/html. Почему? Во-первых многие не знают, что он должен передаваться как application, а во-вторых — незачем! Чаще всего модульные технологии расширения, для которых был создан XHTML, не используются. Ни прстранства имён, ни MathML, ни семантическая вёрстка через RDF и другие крутые вещи не нужны для создния веб-сайтов и сервисов.
Так зачем же мы пишем такой сложный Доктайп? И при чём он у всех такой разный. Он вам не нужен такой! Напишите его проще. Вот так:
<!DOCTYPE html>
Дело в том, что именно по этой части DOCTYPE браузер определяет, переходить ли ему в режим Standards Mode или нет. Указание дальнейшей спецификации и соответствующего адреса браузеру не нужно, он прекрасно справится. Спецификация нужна только для валидатора. Тем более что данная декларация, вот именно в таком виде уже включена в стандарт HTML 5 и тупые ошибки вы сможете определить W3C-валидатором.
Хорошо, допустим вы такой упрямый и всё равно считаете, что будете верстать в XHTML и указывать соответствующий доктайп, просто потому, что так правильней и можно проверить в валидаторе ту самую паранойю «disabled=”disabled”». Но на какой стадии вы это делаете? На стадии девелопинга! Так на продакшен-сервере, то он вам зачем?! Вот то-то и оно…
Холивар про «em vs. px» напишу чуть позже.





]]>ivan]]>Во-первых, ещё не родился на свет тот умник что указывает в доктайпе спецификации. Там обычно указывают схему и/или DTD. Можно конечно не придираться, хотя странно что вы ни знаете разницу между спецификацией и схемой. Во-вторых, вообще непонятен смысл, цель, главное утверждение доклада, иными словами он не о чем. Что хотел сказать автор? Что всем надо использовать “”? В чем разница, что я получу взамен?
»]]>ivan]]>в кавачках (DOCTYPE html)!
»]]>Никита]]>В DOCTYPE указывается DTD по конкретной спецификации. Я просто сократил. Все поняли, а буквоеды придираются.
Цель — разъяснить зачем нужен DOCTYPE и предложить использовать его сокращённую версию без указания DTD, потому, что большинство разработчиков его копируют из проекта в проект для включения standards mode и по привычке.
Если вы знаете, что это такое, зачем это нужно и как его использовать, то я за вас рад, а эта статья написана не для вас.
»]]>deni2s]]>Mne bila interesna statistika – prijatno osoznovatj, chto svoi sait nahoditsa ne v poslednem meste
Kstati, bilo bi klassno uvidetj spisok proverennih saitov. Bila bi tablica s ispoljzovannim doctype i validnostju, vobshe bilo bi super
Na sledujushij raz pozhalusta oglasite spisok predstavlenih saitov uchasnikami konferencii zaraneje
»I koga budet sledujushaja konferencija?
]]>Никита]]>Вам было бы интересно, а некоторым наверное не хотелось бы, чтоб их сайт был опубликован. Так, что это ещё вопрос политкорректности. Получается в регистрации нужно было добавить галочку, опубликовать список или нет. В следующий раз наверное так и сделаем.
Следующая конференция Web Standards Days будет через год. Но осенью будут другие конференции, об этом сообщим заранее.
»]]>Seleckis.lv :: журнал Никиты Селецкого » » Отчёт о конференции веб-разработчиков Web Standards Days Riga 2010]]>[...] Статья на блоге seleckis.lv [...]
»]]>ivan]]>“В DOCTYPE указывается DTD по конкретной спецификации” — по какой “конкретной спецификации”? У DTD спецификации может не быть, как впрочем и у спецификации DTD (прим. HTML5)
Вы говорите что в спецификации написано будто XHTML “по сути должен передаваться в формате aplication/xml+xhtml”, что то я такого не припомню. Там написано что XHTML может передоватся одним из трёх медиа тайпов – application/xhtml+xml, application/xml, text/html, как и HTML5. Между прочим у вас ошибка – медиа тайпа aplication/xml+xhtml нет. Так что ничего криминального в передачи xhtml как text/html нет, для паблик веба это даже лучше. Я надеюсь вы знаете какие неприятности у вас могут быть если вы будете передовать свои страницы как application/xhtml+xml?
В своём докладе вы частично обвинили разработчиков в “валидации ради валидации”, такое чувство будто этот доклад написан как “доклад ради доклада”!
»]]>Никита]]>ivan, такое ощущение, что вы нарочно пытаетесь развести холивар вокруг очевидных вещей.
Вот вы сказали: «Там обычно указывают схему и/или DTD»
Я ответил: «В DOCTYPE указывается DTD по конкретной спецификации. Я просто сократил»
Вы вырвали из контекста и развернули: «У DTD спецификации может не быть»
Перечитайте статью, я об этом и пишу. О том что указание DTD со спецификацией НЕ НУЖНО!
Спасибо, исправил на application.
Я писал о конкретных сайтах, сайтах тех людей, что зарегистрировались на конференцию. Вижу что указывают, XHTML-декларацию, а фактически пишут обычный html. Я писал о том, что нет смысла указывать xhtml декларацию, если его возможности всё-равно не используются.
«The ‘application/xhtml+xml’ media type [RFC3236] is the primary media type for XHTML Family documents. ‘application/xhtml+xml’ should be used for serving XHTML documents to XHTML user agents (agents that explicitly indicate they support this media type). This media type must be used when writing documents using XHTML Family document types that add elements and attributes from foreign namespaces, such as XHTML+MathML [XHTML+MathML].
The ‘text/html’ media type [RFC2854] is primarily for HTML, not for XHTML. In general, this media type is NOT suitable for XHTML except when the XHTML is conforms to the guidelines in Appendix A. In particular, ‘text/html’ is NOT suitable for XHTML Family document types that add elements and attributes from foreign namespaces, such as XHTML+MathML [XHTML+MathML].»
http://www.w3.org/TR/xhtml-med.....-xhtml-xml
Такое чувство, что ваши комментарии ради комментария. Продолжать будем?
»]]>ivan]]>Во-первых, я из контекста не вырывал. Я, если помните указал что в доктайпе указывают DTD (Document Type Definition – это такой файл в котором описывается схема текущего документа, используемый клиентом как драйвер для определения элементов этого же документа), но никак не спецификацию (спецификация – это такой документ описывающий технические и прочие особенности, прежде всего предназначенный для человека), так что я вроде всё по делу заметил, может быть конечно не совсем адекватно, погорячился, простите. Просто человека который достаточно долго занимался XML такой ляп, задел.
Медиа тайп вы исправили а вот сабтайп всё ещё неверный, не xml+xhtml, a xhtml+xml. Внимательность, лучшее качество веб-разработчика.
Что ж, теперь о последних двух параграфах что вы привели в своей аргументации. Либо вы читаете между строк, либо у вас проблемы с английским. Я даже не знаю, видимо придётся перевести для вас:
“Медиа тип ‘application/xhtml+xml’ является первичным медиа типом для семейства XHTML документов. ‘application/xhtml+xml’ должен использоваться для передачи XHTML документов – XHTML клиентам (клиенты которые явно поддерживают данный медиа тип). Этот медиа тип обязан использоваться если вы пишите документы семейства XHTML в которых используются другие пространства имён, например: XHTML+MathML (xmlns=”http://www.w3.org/1998/Math/MathML”).
Медиа тип ‘text/html’ является первичным для HTML, не для XHTML. В основном, данный медиа тип не предназначен для XHTML за исключением случаев когда XHTML соответствует директивам в Дополнении А. В свою очередь, ‘text/html’ не годится для XHTML документов которые используют атрибуты и элементы из других пространств имён.”
а вообще, как бы советую почитать не TR а сам RFC.
http://datatracker.ietf.org/doc/rfc3236/
Как видите, первичный медиа тип это не значит единственный, а единственный случай когда ‘application/xhtml+xml’ должен использоваться обязательно это использование дополнительных пространств имён. Есть конечно преимущества в использовании родного XML парсера вместо анализатора tagsoap, но более строгая разметка и скрипт, Internet Explorer опять таки, а также отсутствие индексаций как то не оставляют выбора между text/html и application/xhtml+xml. А использовать экспериментальные фичи как например HTML 5 в современных браузерах, считается плохим тоном. Максимум на своём сайте, но никак не в повседневной работе.
»]]>Никита]]>ivan, какая разница как это называется? Если хотите DTD пишется согласно спецификации или кастомно описывается разработчиком. Вам так принципиально, чтоб я это назвал «драйвером для определения элементов». Смысл статьи вы поняли? Такое ощущение, что вы занимаетесь, только копанием документации, а веб-разработкой не занимались. Когда браузер общал внимание на это: «…используемый клиентом как драйвер для определения элементов этого же документа…»? Ему ни жарко, ни холодно от того, что вы там понапишете.
спасибо, медиа-тайп исправил. Не внимательно отношусь именно к этой части, поскольку не использую я этот медиатайп. Потому что бессмысленно.
А смысл мне читать RCF по application/xhtml+xml если там описывается только этот медиа-тип? Я же говорю о том, какой медиа-тип использовать с рекомендацией XHTML. И опять же повторяю, он не нужен в большинстве случаев, достаточно text/html.
«Как видите, первичный медиа тип это не значит единственный, а единственный случай когда ‘application/xhtml+xml’ должен использоваться обязательно это использование дополнительных пространств имён.»
Я об этом и пишу. Меня повторяете?
«А использовать экспериментальные фичи как например HTML 5 в современных браузерах, считается плохим тоном.»
Опа! А кто это придумал? Кто регламентирует плохой и хороший тон? Вы? Вы взяли на себя роль мирового веб-судьи? Почитайте Юру Артюха, посмотрите его презентацию (26 слайд). И может, что-то измените в своей жизни, опять почувствуете веру в человечество…
Я не знаю, вы наверное впервые на моём блоге, почитайте мои предыдущие статьи, уже много было всяких умников, которые пытались со мной спорить насчёт тех мелочей (только не надо говорить что это не мелочи), которые не противоречат основной идее статьи, но придираются к моему упрощённому изложению.
»]]>ivan]]>Я в отличии от вас слежу за развитием HTML 5, и прекрасно вижу что использовать его в продакшн ещё очень рано, много ежедневных исправлений и как минимум одно критическое в неделю, а это значит что веб-клиенты будут также менять своё поведение. И не надо ёрничать, подводные камни долго всплывали и после публикаций W3C главной рекомендаций XHTML 1.0. Для себя, ради обучения – экспериментов, конечно HTML 5 использовать можно и даже интересно, но для клиентов на работе, увы пока рано.
Спорить с вами я смотрю действительно бесполезно, потому что вы не упрощаете, вы пустословите.
Удачи.
»]]>Никита]]>Ну конечно, вы у нас во Всемирной паутине самый знающий и всё в тему пишущий, совершенно не пустословящий (только в результате ни одного коммента по теме)! Только скажите мне пожалуйста, а при чём тут вообще экспериментальные фичи HTML 5? Покажите мне в статье хоть одно упоминание об этом? И после этого вы меня упрекаете в пустословии? Уже сами не знаете к чему бы прикопаться.
Даже если бы я и упоминал, то у W3C (ну раз вы следите за его развитием, то знаете) есть разные статусы утверждения рекомендации. Сейчас HTML 5 имеет статус Last Call. Но судя по тому как вы категоричны вы не признаёте CSS 2.1 и наверное ни в коем случае не используете display: inline-block? Вам нужно работать в компании Microsoft.
»