Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
web - tec / HTML5.pdf
Скачиваний:
45
Добавлен:
12.06.2015
Размер:
2.87 Mб
Скачать

Не отрывая карандаша

17

Не отрывая карандаша

Со времен этой заочной беседы, в результате которой появился очень популярный общеупотребительный HTML-элемент, прошло почти 18 лет, но меня не перестают удивлять все детали ситуации. Судите сами.

До сих пор существует HTTP. Успешно развиваясь, он прошел через версии 0.9, 1.0, позднее 1.1, и его эволюция на этом не останавливается (http://www..ietf..org/ dyn/wg/charter/httpbis-charter..html).

До сих пор существует HTML. Этот второстепенный формат данных, вкотором сначала не поддерживались даже значки (!), позднее представал в версиях 2.0, 3.2 и 4.0. Историю HTML, если угодно, можно нарисовать на листе бумаги, не отрывая карандаша. Получится кривая и путаная линия с самопересечениями, «эволюционное древо» с многочисленными тупиковыми ветвями, отражающими моменты, когда мысль разработчика стандартов далеко опережала практику программирования и верстки. Но и в современных (2011 года) браузерах вебстраницы, созданные в 1990 году, отображаются корректно. Недавно со своего новенького мобильного аппарата на платформе Android я открыл в браузере одну из таких страниц. Система даже не попросила меня подождать, «пока будет загружен устаревший формат».

Лицо стандартов HTML всегда определяли не только собственно стандартизаторы, но и программисты (разработчики браузеров), и веб-мастера (создатели веб-страниц), и множество непрофессиональных любителей поговорить о гипертекстовой разметке. Успешные версии HTML были, как правило, ретроспективными и описывали существующее положение вещей, вместе с тем пытаясь направить развитие в нужное русло. Если кто-то будет доказывать вам, что надо соблюдать «чистоту» стандарта HTML (то есть, по сути, что надо игнорировать разработчиков браузеров, или веб-мастеров, или тех и других), знайте: такой человек просто некомпетентен. Никогда HTML не был чистым, и все попытки «очистить» его заканчивались провалом тех же масштабов, что и попытки чемнибудь заменить его.

Ушли со сцены не только те браузеры, которыми пользовались в 1993 году, но и все их потомки. Netscape Navigator прекратил свое существование в 1998 году. Будучи переписан с нуля, он вошел в состав Mozilla Suite, ответвлением в развитии которого стал современный Firefox. Робкий первый шаг истории Internet Explorer можно усмотреть в браузере из пакета дополнений Microsoft Plus! к операционной системе Windows 95, где содержались также игра Пинболи темы

Рабочего стола.

До сих пор сохранились некоторые операционные системы из числа тех, которыми пользовались в 1993 году, но ни одной из них не принадлежит скольконибудь значительная доля пользователей сети. Сейчас выходят в Интернет

сперсональных компьютеров из-под Windows версии 2000 или более поздней,

сMacintosh из-под Mac OS X, с компьютеров из-под разных дистрибутивов Linux, а также с устройств карманного формата вроде iPhone. Вспомним, что в1993годуверсия3.1системыWindowsсражаласьзарыноксOS/2,наMacintosh

18

Глава 1.. Как мы сюда попали?

работала System 7, а Linux распространялся среди пользователей Usenet. Это времена Trumpet Winsock и MacPPP, по которым испытывают неудержимую ностальгию старые интернет-пользователи.

К тому, что сейчас называется попросту веб-стандартами, до сих пор (почти через 20 лет!) имеют отношение некоторые из участников той беседы 1993 года. Иные из них еще в 1980-е годы и даже ранее работали над более старыми проектами, родственными HTML.

Поскольку зашла речь о проектах-предшественниках, то отмечу, что в эпоху всеобщей популярности HTML и Интернета другие (мощно повлиявшие на них)форматыисистемырубежа1980–1990-хгодовоказалисьпрочнозабытыми. Скажите, приходилось ли вам раньше слышать о проектах Andrew и Intermedia? Или о системе HyTime? А ведь HyTime — это не какая-нибудь недолговечная академическая разработка. Она была ISO-стандартизована для военных нужд, с ней связывали большие ожидания, и вокруг нее крутились большие деньги,

как вы можете прочесть в статье http://www..sgmlsource..com/history/hthist..htm.

Однако все эти теоретические рассуждения не дают ответа на самый первый наш вопрос: откуда взялся тег <img>? Почему не суждено было возникнуть тегу <icon> или <include>? Почему мы не пользуемся гиперссылками с атрибутом include или каким-либо сочетанием ссылочных отношений? Что обусловило решающий перевес именно в пользу <img>? Ответ прост: Марк Андрессен выпустил в свет программу, где была реализована поддержка именно <img>, а выпуск решает дело.

Нельзя сказать, что так происходит всегда. Ведь создатели Andrew, Intermedia и HyTime тоже выпускали приложения в свет. Работающий опубликованный код — это необходимое, но не достаточное условие успеха. Разумеется, я не хочу сказать, что выпуск программной реализации до утверждения стандарта решает все проблемы. Напротив, введенный Марком тег <img> не оговаривал единого формата графики; никак не было определено обтекание картинки текстом; не поддерживались текстовые альтернативы и заместительное содержимое для более старых браузеров. Сейчас, 18 лет спустя, мы все еще сражаемся с контентсниффингом, который продолжает служить источником большого количества уязвимостей. Историю борьбы со всеми этими проблемами можно проследить от наших дней через эпоху «великих войн браузеров» вплоть до того самого 25 февраля 1993 года, когда Марк Андрессен мимоходом заметил: «Может быть, когданибудь с помощью MIME-типов…» — и решил все-таки выпустить свою реализацию.

Основные вехи развития HTML

в 1997–2004 годах

В декабре 1997 года Консорциум Всемирной паутины (W3C) опубликовал спецификацию HTML 4.0, и почти сразу же полномочия рабочей группы, ответственной за выработку стандарта HTML, были прекращены. Менее чем через два месяца после этого другая рабочая группа Консорциума опубликовала стандарт XML 1.0.

Основные вехи развития HTML в 1997–2004 годах

19

Прошло еще месяца три, и по инициативе W3C был проведен семинар «Контуры будущего HTML», от участников которого ожидали ответа на вопрос: «Должен ли W3C остановить работу над HTML?» Участники дискуссии сошлись на таком вердикте:

Обсуждение показало, что было бы чересчур трудоемкой процедурой как расширять HTML 4..0, так и превращать его в XML-приложение.. Чтобы освободиться от сдерживающих факторов, предлагаем начать разработку нового поколения стандарта HTML на основе набора XMLтегов..

Для создания такого набора XML-тегов W3C вновь созвал рабочую группу HTML. В первую очередь в декабре 1998 года члены группы написали промежуточную спецификацию, которая переформулировала существующие элементы и атрибуты HTML в терминах XML; никаких новых элементов и атрибутов добавлено не было. Эта спецификация позднее стала известна как XHTML 1.0. Она определяла новый MIME-тип для документов XHTML: application/xhtml+xml. Упростить для уже существующих страниц (HTML4) переход на новый стандарт было призвано приложениеC,вкоторомкраткоизлагались«указанияподизайнудлявеб-мастеров, которые хотели бы, чтобы их XHTML-документы корректно отображались в пользовательскихагентах,существующихдлястандартаHTML».ПриложениеCгласит, что можно создавать страницы, условно называемые XHTML-страницами, и оснащать их MIME-типом text/html.

Следующим пунктом на повестке дня для рабочей группы HTML были вебформы. В августе 1999 года члены группы опубликовали первый вариант стандарта XHTML Extended Forms. В самых первых строках этого документа (http://www.. w3..org/TR/1999/WD-xhtml-forms-req-199 90830#intro) сказано, какие ожидания на него возлагаются.

При внимательном рассмотрении рабочая группа HTML нашла, что к задачам нового поколения веб-форм не может относиться обратная совместимость с браузерами, предназначенными для отображения документов более ранних версий HTML. Наша цель — построить ясную современную модель форм (далее расширенные формы XHTML — XHTML Extended Forms), которая была бы основана на совокупности тщательно оговоренных требований. Требования, которые описаны далее в этом документе, своей отправной точкой имеют опыт эксплуатации самых разнообразных приложений на формах.

Еще через несколько месяцев документ XHTML Extended Forms был переименован в Xforms и к его доработке приступила специально сформированная рабочая группа. Она вела свои обсуждения параллельно с рабочей группой HTML и опубликовала первую официальную версию стандарта XForms 1.0 в октябре

2003 года.

После того как переход на XML был завершен, члены рабочей группы HTML задумались о том, чтобы наконец создать «новое поколение стандарта». В мае 2001 года вышло первое издание XHTML 1.1, где поверх XHTML 1.0 было добавлено совсем немного функциональности и перестала существовать прежняя лазейка для веб-мастеров, оговоренная в приложении C. Все документы XHTML, начиная с версии 1.1, оснащаются MIME-типом application/xhtml+xml.

20

Глава 1.. Как мы сюда попали?

Все, что вы знаете об XHTML, — это ложь

Почему так важны MIME-типы? Почему я не устаю возвращаться к ним? Причиной тому «драконовская» обработка ошибок.

Браузеры всегда очень мягко обходились с ошибками в HTML-коде. Если, например, вы создали HTML-страницу без тега <title>, то браузер все равно отобразит ее, несмотря на то что всегда, во всех версиях стандарта HTML присутствие элемента <title> на странице требовалось безоговорочно. Некоторые теги нельзя вкладывать в другие теги, но, если вы создадите страницу, нарушающую это требование, браузер все равно каким-то одному ему ведомым способом сумеет отобразить ее, не выводя сообщения об ошибке.

Как нетрудно догадаться, тот факт, что «кривая» HTML-разметка все же отображается в браузерах, позволил беззаботным веб-программистам создать много «кривых» страниц. Очень много. По некоторым оценкам, сейчас в Сети свыше 99 % всех HTML-страниц содержат не менее одной ошибки верстки каждая. Но при таких ошибках браузеры не выводят предупреждения — вот почему «кривой» HTML-код никто никогда не правит.

Видя в этом одну из фундаментальных проблем современного Интернета, специалисты W3C задумались о ее решении. Опубликованный в 1997 году стандарт XML нарушил традицию мягкой обработки ошибок в клиентских программах. Согласно этому стандарту, все программы отображения и обработки XML должны воспринимать ошибки структуры документа как фатальные. Система, при которой первая же ошибка вызывает сбой, стала известна как «драконовская» обработка ошибок, названная так по имени афинского вождя Дракона (в иных источниках: Драконта). Введенные им законы предписывали карать смертью даже незначительные проступки. После того как Консорциум переформулировал HTML в терминах XML-словаря, ответственные лица постановили, чтобы обработка ошибок в документах нового MIME-типа application/xhtml+xml была «драконовской». Иными словами, если бы в код вашей XHTML-страницы закралась одна-единственная неточность, браузеру пришлось бы остановить работу и показать пользователю (посетителю страницы) сообщение об ошибке.

Эту идею приняли не все. Как уже говорилось, 99 % веб-страниц не свободно от ошибок и поэтому при использовании application/xhtml+xml есть высокие шансы, что конечный пользователь не увидит страницы. И хотя новая функциональность XHTML 1.0 и 1.1 все же очень привлекательна, веб-программисты преимущественно избегали использовать тип application/xhtml+xml. Это, разумеется, не значит, что они игнорировали также и весь стандарт XHTML. Совсем наоборот. Приложение C спецификации XHTML 1.0 предоставляло ту самую лазейку, о которой уже сказано выше. По сути, веб-мастеру говорили: «Пользуйся синтаксисом в духе XHTML, но оснащай страницу MIME-типом text/html». Многие разработчики так и поступали: фактически перейдя на XHTML-синтаксис, они по-прежнему использовали тип text/html.

В наши дни в коде очень многих веб-страниц в первой строке объявлен тип документа XHTML, имена тегов набраны строчными буквами, значения атрибутов взяты в кавычки, а при оформлении одиночных тегов применяется косая чер-

Соседние файлы в папке web - tec