и другой «мусор», но использовать сжатие кода с помощью mod_zip, размер страницы можно будет также уменьшить до 20 Кб. Таким образом, можно добиться сокращения размера кода, не прибегая к технике, описанной в этой книге. Однако, как выяснилось, Amazon не использует mod_zip. На самом деле эта возможность вообще используется довольно редко в коммерческих сайтах, быть может, из-за того, что это создает дополнительную нагрузку на сервер. Но если подумать - чем меньше файл, тем меньше он становится при сжатии. Если можно сэкономить, снизив размер страницы с 80 Кб до 40 Кб, используя компактный современный код, то, сжав страницу с 40 Кб до 20 Кб, мы сэкономим еще больше. Экономия на одном сеансе может показаться ничтожной, но суммарный трафик уменьшится невероятно. С течением времени экономия окажется довольно внушительной и предотвратит возникновение незапланированных расходов. (Например, вы сможете отказаться от аренды еще одной линии Т1.) Экономия на трафике является только одной из многих причин использовать четкий, совместимый со стандартами код для создания Web-сайтов, и это оценят как менеджеры, так и посетители сайта.
Обратная совместимость Что имеют в виду дизайнеры под обратной совместимостью? Если спросить их об этом, они, вероятно, ответят, что доступность сайта для всех наших пользователей. Ну что же, с таким аргументом вряд ли кто-то не согласится. На практике же обратная совместимость зачастую сводится к использованию устаревшего кода, не соответствующего стандартам, лишь для того, чтобы обеспечить идентичное отображение сайта во всех браузерах, будь это
48
Глава 1. 9 9 3 % сайтов устарели
Netscape Navigator 7 или IE 2. Святой Грааль Web-дизайна, обратная совместимость хорошо выглядит лишь в теории. Но стоимость ее воплощения в жизнь слишком высока и на практике часто оборачивается обманом. Не существует настоящей обратной совместимости. Всегда приходится чем-то жертвовать. К примеру, ни Mosaic (первый графический браузер), ни Netscape 1.0 не поддерживают табличную разметку. По определению, пользователи этих браузеров просто не в состоянии увидеть сайты такими же, как они отображаются на экранах пользователей чуть более поздних версий Netscape 1.1 или MSIE 2. Разработчики и заказчики, ориентирующиеся на обратную совместимость, обычно выбирают какую-то версию браузера, скажем, Netscape 3, и соглашаются, что это самая старая версия браузера, которую они принимают в расчет. (Пользователям же Netscape 2 в таком случае не повезло.) Для претворения в жизнь своей преданности принципам обратной совместимости разработчики используют на страницах различные приемы и хитрости, которые, конечно, утяжеляют сайт. В то же время разработчики пишут несколько версий сайта для каждого браузера и сценарии для определения версии браузера пользователя, чтобы предоставить браузеру оптимизированный под него код. Делая это, разработчики еще больше усугубляют положение своего сайта, увеличивают нагрузку на серверы и вносят свой вклад в то, чтобы борьба с практикой создания устаревающих сайтов продолжалась до тех пор, пока у них не закончатся средства на создание очередной версии сайта.
Блокировка доступа пользователей к сайту плохо влияет на бизнес В то время как некоторые компании стараются сделать так, чтобы их сайт одинаково отображался в новых и старых браузерах, другие полагают, что следует брать в расчет только новые версии браузеров. Придерживаясь стратегии по снижению расходов, они создают сайты, работающие только в Internet Explorer и иногда только под Windows, таким образом лишаясь 15-25% потенциальных посетителей и клиентов (рис. 1.5-1.9). Не будем притворяться, что мы понимаем бизнес-модель компании, отказывающей во внимании почти четверти потенциальных клиентов. Такое число потерянных клиентов должно беспокоить любого мыслящего руководителя компании. Ведь, согласно статистике NUA Internet Surveys (www.nua.ie/surveys), по состоянию на сентябрь 2002 года число пользователей Internet составило 650,6 млн. человек.
Устаревшее мышяеиие
49
Рис. 1.5. Домашняя страница KPMG (www.kpmg.com), кое-как отображаемая, а точнее, не отображаемая в Navigator, благодаря коду, ориентированному только на IE
Допустим, что вы не против потерять до 25% потенциальных посетителей вашего сайта. Но даже и в этом случае ориентация только на IE может не оправдать себя, так как нет никакой гарантии, что этот браузер (или вообще браузер для персонального компьютера как вид) и в дальнейшем будет сохранять лидирующее место на рынке. За несколько лет до написания этой книги рыночная доля Netscape Navigator намного превышала позиции Microsoft Internet Explorer, занимаемые им сегодня. Соответственно, разработчики полагали, что принимать во внимание следует только Navigator, и создавали сайты, оптимизированные именно под этот программный продукт. Спустя некоторое время ситуация резко изменилась, и заточенные под Netscape сайты остались за бортом. Может ли такая же судьба ждать современные Web-сайты, оптимизированные под IE? Однозначного ответа нет. В Web единственное постоянство - это переменчивость. Использование мобильных устройств с доступом в Internet набирает обороты, и создание сайтов, ориентированных только на отдельные браузеры в ущерб другим продуктам, все больше напоминает решение безумца.
50
Рис. 1.6. В Navigator 7 страница также не отображается
Кроме того, благодаря нашей книге вы поймете, что с помощью стандартов создать сайт, одинаково хорошо работающий во всех браузерах, так же легко, как и для одного. На фоне попыток сохранить обратную совместимость и практики создания сайта лишь для одного браузера Web-стандарты являются единственным разумным способом разработки сайтов. Ни требующий финансовых затрат способ создания нескольких версий для каждого сайта, ни узколобое решение сделать сайт доступным только для одного браузера не могут гарантировать работоспособность сайта в будущем. Если эти методы не изживут себя, расходы на Web-сайты будут продолжать расти до тех пор, пока не наступит время, когда лишь крупнейшие компании смогут позволить себе иметь сайты. При попытке создать идентичное отображение сайта в разных браузерах и на всех платформах добиться, чтобы он выглядел, как напечатанное издание, и работал как компьютерные приложения, мы упустили из виду основной потенциал Web-сайтов - мультимедийную многоуровневую информационную среду, доступную каждому.
51
Это произошло, когда дизайнеры и разработчики во времена кратковременного Internet-бума пытались справиться с нахлынувшей работой и принялись за создание ориентированных на отдельные браузеры Web-сайтов, не обращая внимания на стандарты, что привело нас к непрерывному процессу устаревания. Но этот период устаревающего Web-дизайна заканчивается по мере того, как вы читаете эти строки. Если вы владеете, управляете или разрабатываете дизайн сайтов - это относится к вам.
Дорога в город дураков В начале 1997 года обычной практикой было использовать JavaScript для браузеров Netscape и JScript (схожий с JavaScript язык) для браузеров Microsoft. Также было принято использовать JavaScript (работавший только в Netscape) и технологию
52
Глава 1. 99,9% i
гстарели
Рис. 1.8. Этот же сайт в IE6/Windows, где он наконец-то начинает работать
ActiveX (работавший только под IE/Windows) для отправки каждому браузеру подходящего кода. Все это делалось для браузеров третьей (3.0) версии. Такие приемы оставляли за бортом пользователей браузеров других фирм, например Opera, созданные сайты неверно работали на других платформах, скажем, Macintosh, но тем не менее это подходило для «большинства» пользователей и быстро стало нормой. При необходимости создать динамическую Web-страницу, которая не просто хорошо выглядела и была статичной, приходилось следовать данному порядку. В конце 1997 года Netscape и Microsoft выпустили браузеры версии 4.0, которые поддерживали динамический HTML (DHTML), но каждый по-своему. Они также были несовместимы и со своими же более ранними версиями. То, что работало в Netscape 4, не выполнялось в Netscape 3. И, естественно, эти браузеры были абсолютно несовместимы с менее известными коллегами, которые просто поддерживали стандарт HTML, а не придумывали собственные языки.
ICaic написать кед для сайта
53
Рис. 1.9. Нужно отметить, что сайт работает в Opera 7, но только когда браузер идентифицирует себя как IE
Большинство дизайнеров приняли это как данное, несогласным же ничего не оставалось, как, стиснув зубы, создавать сайты исходя из требований и спецификаций браузеров Netscape и Microsoft.
Как написать код для сайта Итак, у нас был DHTML для Netscape .4. Совершенно с ним несовместимый DHTML для Internet Explorer 4, работавший, по сути, только под Windows. Был не поддерживающий DHTML JavaScript для Netscape 3 и такая же ситуация с IE 3. Также можно было еще создать версию для менее популярных программных продуктов и более ранних версий браузеров. Таким образом, код даже самого простого сайта был неимоверно разветвленным.
54 Г лава 1 * § 9 3 % с
мели
Некоторые разработчики ограничивали себя лишь двумя версиями сайта для IE 4 и Netscape 4, а посетителям предлагали либо установить один из этих браузеров, либо покинуть их сайт. Другие компании, с меньшим бюджетом, делали ставку лишь на один браузер и обычно проигрывали. Участники проекта Web Standards, созданного вскоре после выхода браузеров 4 версии, установили, что из-за необходимости создания четырех или более несовместимых версий сайта расходы на его создание вырастали минимум на 25%, что, естественно, отражалось на клиентах. Некоторые разработчики ответили на данное утверждение очень просто: популярность Web на пике, клиенты желают платить сколько угодно, так почему Web-агентства должны беспокоиться о стоимости создания нескольких версий одного сайта. Когда же Internet-бум прошел и бюджеты уменьшились, уже ни одно агентство не могло себе позволить такую роскошь, как раньше. По мере сокращения рабочих мест и закрытия Web-агентств один за другим на свет появились браузеры, поддерживающие DOM, созданный W3C. Это означало, что эра дизайна по Web-стандартам наконец-то началась. И какова же была реакция Web-индустрии на данное благое известие? Продолжалось создание разветвленного кода, сайтов, работающих только в IE/Windows, и переход на Macromedia Flash - все это абсолютно недальновидный подход.
Когда с плохим кодом происходят хорошие вещи В самом начале обучения компьютерному программированию студенты узнают о принципе GIGO (Garbage In Garbage Out) «мусор на входе - мусор на выходе». Ведь языки вроде С и Java не просто поощряют правильную технику создания кода, они ее требуют. Точно так же начинающие графические дизайнеры узнают, что качество конечного продукта зависит от качества исходных материалов. При грамотной работе готовая Web-графика (качественные фотографии с высоким разрешением) будет выглядеть отлично. Если попробовать создать дизайн с низкокачественным изображением, вряд ли результат получится сколько-либо привлекательным. Можно оптимизировать для Web изображение в формате EPS с высоким разрешением, но нельзя из низкокачественного файла GIF сделать что-либо приемлемое. Запомните: «мусор на входе - мусор на выходе».
т происходят хорошие вещи
55
Но традиционные браузеры работают по другому принципу. Они собирают воедино кривой код и неработающие ссылки и в большинстве случаев отображают сайты довольно приемлемо. Такое послабление привело к тому, что многие разработчики и дизайнеры обзавелись вредными привычками, о которых они даже не догадываются. В свою очередь дизайнеры среднего уровня стали относиться к технологиям, подобным CSS, XHTML и JavaScript, как к довольно примитивным. Ну а если вы не уважаете инструмент, вряд ли вы будете использовать его надлежащим образом. Обратите внимание на следующий пример кода дорогостоящего сайта электронной коммерции, приведенный здесь в оригинале:
Бессмысленный тег происходит от столь нелюбимого нами , этот тег повторяется в коде сайта тысячи раз благодаря мощной системе публикаций сайта. Если бы не эта ошибка, данный код, возможно, показался бы вам очень знакомым. Он даже может вам напоминать код вашего собственного сайта. На самом деле в контексте Web-страницы предыдущий фрагмент кода можно было заменить следующим: Join now! Имея соответствующее правило, указанное в таблице стилей, эта строка выполнит те же функции, что и предыдущий отрывок кода, но заметно сэкономив трафик и облегчив переход на более гибкий код XML. Код того же сайта включает в себя и следующую нерабочую ссылку на языке JavaScript: <script language=JavaScriptl.lsrc= "http://foo.com/params.richmedia^yes&etc"
>
Сложный и запутанный код страницы приводит к появлению ошибок и опечаток, в итоге браузер пользователя просит выполнить код на несуществующем языке (JavaScriptl.lsrc). По логике, сайт в этом случае не должен был бы работать, что указало бы разработчикам на их ошибки и необходимость их исправления. Тем не менее до недавнего времени JavaScript на этом сайте исправно работал во всех популярных браузерах, лишь расширяя круг ужасно сделанных сайтов и поддерживающих их браузеров.
56
Глава 1. 9 9 3 % сайтов устарели
Плохой код может быть опасен для «жизни» вашего сайта , По мере того как современные браузеры все лучше поддерживают стандарты, они становятся более требовательными к качеству кода сайтов и менее терпимыми к плохому коду и разметке. Правило «мусор на входе - мусор на выходе» становится все более очевидным в мире Web-дизайна, а знакомство с Web-стандартами становится все более обязательным для дизайнеров и разработчиков. Мы можем создавать сайты, совместимые со всем платформами, браузерами и устройствами, предоставив пользователям более развитые, доступные и функциональные продукты. Изменить ситуацию можно с помощью общепринятых технологий, называемых Web-стандартами. Научившись создавать сайты с использованием стандартов, мы можем гарантировать работоспособность наших сайтов в будущем.
Решение всех проблем После долгого противостояния дизайнеров и разработчиков с производителями браузеров мы наконец-то можем использовать приемы, гарантирующие корректное отображение и поведение наших сайтов не только в одном браузере, а во всех. Технологии вроде CSS, XHTML, ECMAScript (стандартная версия JavaScript) и W3C DOM позволяют дизайнерам следующее: • обрести более четкий контроль над разметкой, размещением элементов и управлением текстом в графических браузерах и одновременно дать возможность пользователям изменять облик сайта на свой вкус; • создавать функциональные сайты, работающие на всех платформах и во всех браузерах; • создавать сайты, отвечающие требованиям доступности без необходимости жертвовать внешним видом или функциональностью; • тратить на редизайн несколько часов вместо дней или недель и таким образом снижать расходы; • поддерживать множество браузеров без создания отдельных версий сайта для каждого из них; • поддерживать нетрадиционные устройства доступа к Internet;
, •
• • • •
57
создавать превосходные версии страниц сайта для печати без необходимости использовать отдельные варианты страниц специально для вывода на принтер; отделять стиль от структуры и поведения; перейти от HTML, языка прошлого, к использующим XML современным языкам; создавать по Web-стандартам браузеры, которые будут работать как в сегодняшних браузерах, так и в их будущих версиях; и многое другое.
Прежде чем познакомиться с Web-стандартами и тем, как они работают, давайте вспомним об устаревших методах и приемах создания сайтов. Об этом мы поговорим в главе 2.
Г1ШМ 1. Разработка и дизайн по стандартам
К
аким образом создавались Web-сайты до того, как были приняты Webстандарты и браузеры научились поддерживать их? Ответ -любым возможным способом. В качестве примера можем рассмотреть сайт одного из первых и интереснейших периодических изданий Suck.com (рис. 2.1). Авторы Suck.com писали необычным стилем и придумали публиковать ежедневные статьи и новости прямо на главной странице. Сегодня в этом нет ничего удивительного, однако в середине девяностых, когда появился проект Suck, такой подход был нетипичен и большинство сайтов скрывали свое содержимое за страничками приветствия, навязчивой графикой и запутанным оглавлением. Такой прямолинейный, ориентированный на текст подход выглядел новаторским на фоне остальных сайтов, использовавших излишне метафоричный и изысканный стиль. В то время было очень популярно использование бесполезной графики, в стиле high-tech или готическом стиле. Многие сайты были оптимизированы под примитивный Netscape 1.1, активно использовали тег < c e n t e r > , а для фона применяли небольшое повторяющееся изображение. Некоторые сайты (рис. 2.2), кстати говоря, до сих пор используют эти приемы. И даже для создания такой простой концепции сайта Suck.com его соавторам Карлу Стедману (Carl Steadman) и Джоуи Энаффу (Joey Anuff) пришлось преодолеть немало трудностей. HTML недоставало средств оформления дизайна, и на то была своя причина: создатель Internet Тим Бернерс-Ли (Tim Berners-Lee) полагал, что HTML является структурированным языком разметки (http:// www.w3c.org/MarkUp/html-spec), произошедшим от SGML, а не языком для дизайна, как, например, Adobe PostScript или CSS. (CSS еще только предстояло быть одобренным W3C как стандарт. Пройдет еще 4 года, прежде чем браузеры начнут достаточно приемлемо поддерживать его.) Так каким же образом Стедман и Энафф управляли внешним видом своего сайта? Для этого им понадобились сообразительность, мастерство и, конечно, творческий подход.
59
Рис. 2.1. Suck.com, несомненно, выдающийся сайт своего времени (www.suck.com)
Через тернии к звездам Для создания своего собственного стиля Стедман и Энафф написали сценарий на Perl, который подсчитывал число символов в строке и вставлял закрывающий тег <р> после того, как было достигнуто определенное число: 0ne of the strange-but-truisms of
minor peddling is that using the
computer and other Fetish fodder
somehow empowers children - plug
in, log on, attend a good
college on full scholarship, and
get the hell out of the house.
Затем весь текст заключался в теги < t t > , чтобы заставить ранние версии графических браузеров, например Netscape 1.1, отображать текст в моноширинном шрифте вроде Courier или Monaco. Такие ухищрения в 1995 году были единственным способом достигнуть желаемого эффекта. (На рис. 2.1 показана
60
Тшта 2, Разработка и дизайн но стандартам
обновленная в 1996 году страница сайта. Оригинальная минималистская версия дизайна больше недоступна.) Подобные HTML-приемы были широко распространены среди Web-дизайнеров и даже описывались в ранних руководствах по дизайну Линды Вейнмен (Lynda Weinman) и Дэвида Сигела (David Siegel). Создатели HTML были недовольны, наблюдая подобное искажение языка, но дизайнерам ничего не оставалось, как прибегать к подобным приемам, так как клиенты требовали красивых сайтов. Многие дизайнеры до сих пор используют аналогичные методы в своей практике, а во многих книгах продолжают обучать таким приемам, которые не просто архаичны, но и непродуктивны. Например, в 2002 году мне попалась под руку одна довольно неплохая книга, в которой, тем не менее, советовалось управлять оформлением текста с помощью тегов font и HTML-скриптов. Теги font давно устарели, а словосочетание «HTML-скрипты» вообще звучит дико, однако подобные советы появляются в публикациях с завидной регулярностью.
Цена дизайна до появления стандартов Благодаря манипуляциям с HTML создатели Suck добились нужного им внешнего вида, но какой ценой? Сайт стал недоступен для некоторых пользователей, и его содержимое было довольно проблематично обновлять. В ранних версиях программ для считывания текста с экрана (для людей с ограниченными физическими способностями) голос, озвучивающий текст с сайта Suck, делал паузу каждые несколько секунд, когда доходил до конца строки: One of the strange-but-truisms of ... minor peddling is that using the ... computer and other Fetish fodder ... somehow empowers children- - plug ...
(пауза) (пауза) (пауза) (пауза)
in, log on, attend a good ... (пауза) college on full scholarship, and ... (пауза) get the hell out of the house.
Такое повествование разобрать на слух довольно сложно. Благодаря этим паузам и заминкам великолепное содержание сайта Suck.com стало недоступно пользователям программ для считывания текста с экрана. Но, помимо того что сайт был недоступен для пользователей с ограниченными физическими возможностями из-за используемых уловок HTML, обновлять содержимое сайта было тоже довольно проблематично.
Цена дизайна цо п
арт#в
61
62
Глава 2. Разработка и дизайн по стандартам
Так как в основе дизайна лежит взаимодействие Perl и HTML, использовать шаблоны было невозможно. Для ежедневного обновления сайта требовалось несколько часов работы. По мере роста популярности сайта, которая, кстати, затем привела к его покупке более крупной компанией, создателям Suck пришлось нанять целый штат авторов и технических сотрудников для поддержания сайта. В идеальном мире подобные методы стали бы лишь приметой своей эпохи и канули бы в лету с появлением стандартов. Они бы превратились в анекдоты и мы просто улыбнулись бы, подумав, что когда-то создание сайтов было таким нелепым. Но, несмотря на появление Web-стандартов, подобная практика создания сайтов до сих пор существует и все еще применяются подобные уловки, требующие гораздо большего времени на дальнейшее обслуживание. Такая практика настолько распространена, что некоторые дизайнеры даже думать не хотят о чем-то другом.
Современный сайт и устаревшие методы Перенесемся из 1995 года в 2001. Перед нами современный сайт, рекламирующий Gilmore Keyboard Festival (www.thegilmore.com), - рис. 2.3. Красивый сайт с табличной разметкой, на которую потрачено немало времени.
Рис. 2.3. Web-сайт Gilmore Keyboard Festival (www.thegilmore.com). Есть на что посмотреть, но сложно обновлять и обслуживать
fe;.-i ;
.
;
•
•-
•
г
.
-
.
.
-
г
;
.
-
: ; • ' • : • • ' • : • • :
-
:
>
•
;
;
,
.
•
• • , • • . = • ; • , / ; • - • :
: • : • . - : •
"
Л
-
:
;
•
-
У
-
.
63
Что не так с этим сайтом, помимо того что он определяет разрешение монитора посетителя? Очевидно, что его владельцев должны беспокоить следующие два момента: • финансовые затраты, вызванные необходимостью внесения изменений: если потребуется внести любые изменения в сайт фестиваля, допустим, будет слегка изменена его программа, сделать это через простую текстовую ссылку не удастся. Также не получится добавить дополнительные ссылки и в изображение GIF, выполняющее функции навигационного меню. Таблица HTML, которая собирает воедино разные фрагменты изображения (рис. 2.4), просто развалится на куски, если размер хоть одного рисунка будет изменен. Таким образом, даже небольшие изменения повлекут за собой значительные расходы времени и сил. Придется переделывать графику, вновь нарезать изображения на кусочки, повторно оптимизировать их, а код таблицы переписывать вместе с кодом разметки изображений и JavaScript.
64
Глава 2. Разработка и дизайн но стандартам
Если добавление текстовой ссылки требует нескольких часов работы, стоит пересмотреть используемые методы дизайна; • невозможность просмотра сайта множеством потенциальных посетителей: менее очевидная причина, но от этого не менее важная - сайт, созданный таким образом, совершенно недоступен для пользователей программ считывания с экрана и текстовых браузеров, устройств вроде Palm Pilot и сотовых телефонов, а также для пользователей обычных браузеров, но с отключенной опцией показа изображений. Такие пользователи не получат от посещения сайта абсолютно никакой информации, что может, например, негативно сказаться на продажах билетов. При просмотре в браузере без отображения картинок (рис. 2.5) все содержание сайта сводится к следующему: [INLINE] [INLINE] [INLINE] [INLINE] [usemap] [INLINE] [INLINE] Contact Us [INLINE] Privacy Statement Copyright 2001 Сомнительно, что цель сайта - донести до публики сообщение INLINE INLINE INLINE. Вряд ли INLINE INLINE INLINE чем-то поможет потенциальным клиентам. Однако, помимо этого, теоретически любой пользователь с ограниченными физическими возможностями может увидеть в данном сайте дискриминацию по отношению к себе. Мы, конечно, не юристы и не собираемся подавать в суд на сайт, который, несомненно, был создан с самыми лучшими намерениями. Мы не хотим сказать, что графика - это плохо или красота - это плохо. Напротив, создатели сайта Gilmore проделали отличную работу для придания сайту великолепной формы. Такая красота не должна быть недоступной. Сайт может выглядеть точно так же, но быть доступным для всех посетителей. Несмотря на привлекательный внешний вид, сайт Gilmore является очень типичным по способу создания и дизайну. Соответственно, проблемы, с которыми сталкиваются создатели сайта, тоже очень типичны. В большинстве случаев, когда заказчик захочет внести какие-то изменения в страницу, наш отточенный дизайн и выверенные таблицы разваливаются на куски. Придется либо выставлять счет клиенту, либо нести расходы самим. При ограниченном бюджете клиент может потребовать быстрого и простого решения, что полностью уничтожит созданную красоту и четкость разметки.
Современный сайт и устаревшее методы
65
Например, можно просто добавить три гипертекстовые ссылки вверху или внизу страницы сайта Gilmore, что позволит получить доступ к новому содержимому, но также вызовет некоторое непонимание со стороны посетителей. (Почему эти ссылки отделены от других? Они более важные, чем другие? А может, наоборот.) Добавление таких ссылок также внесет дисбаланс в эстетический облик сайта, что понизит его ценность как маркетингового инструмента. Так же как и создатели сайта Gilmore, многие из нас зачастую обнаруживают, что старые методы дизайна больше не работают. Конечно, они могут неплохо смотреться в популярных браузерах при «обычных» условиях и «нормальных» настройках. Но за пределами этой тепличной среды наши сайты могут оказаться нефункционирующими, что как минимум ведет к сокращению числа посетителей. Владельцы и создатели сайта Gilmore не одиноки в своем заблуждении. Они лишь следуют установленным в Web-индустрии нормам. Вызванные соблюдением этих норм проблемы стоят перед очень большим числом сайтов, созданных
66
Г пава 2. Разработка и дизайн пи стандартам
с оглядкой лишь на популярные модели браузеров и не использующих стандарты для увеличения числа потенциальных посетителей. Эти трудности также неотступно следуют и за теми, кто создает внешний вид сайтов, используя возможности H T M L . *
Три кита Web-стандартов На рис. 2.6 показано, как можно решить описанные выше трудности с помощью Web-стандартов, разбив любую страницу на три составные части: структура, внешний вид и поведение.
Структура Язык разметки (XHTML:http://www.w3.org/TR/xhtmll) содержит текстовые данные, отформатированные согласно их смысловому значению: заголовок, подзаголовок, абзац, нумерованный список, список определений и так далее. Опубликованный в Сети текст, который вы читаете, скорее всего, будет частью списка определений, заключенных в
. Подзаголовок «Структура» будет помечен тегом заголовка определений . Данный абзац будет заключен в теги данных определения :
Три кита Web-стандартов
67
68
Глава 2» Разработка и дизайн и© стандартам
сосредоточимся на XHTML, переходном языке, который, согласно рекомендациям W3C, работает как HTML практически во всех браузерах и Internet-устройствах. При корректном написании (без ошибок, запрещенных тегов и атрибутов) код XHTML полностью пригоден к переносу на другую платформу. Он работает в Web-браузерах, программах чтения текста с экрана, текстовых браузерах и беспроводных устройствах. По усмотрению разработчика код также может содержать дополнительные структуры. Например, контент PI навигация могут быть помечены определенным образом и помещены в соответствующие теги: [Сюда поместить данные.]
[Меню навигации по сайту.]
Код может содержать вложенные объекты, например изображения, ролики Flash или фильмы QuickTime, а также теги и атрибуты, представляющие текст сайта в специальном виде для тех, кто не может просмотреть эти объекты в своем браузере.
Внешний вид Языки оформления внешнего вида сайта - два поколения языка CSS (CSSlrhttp:// www.w3.org/TR/REC-CSSl; CSS2:http://www.w3.org/TR/REC-CSS2) - позволяют задать формат страницы, управлять шрифтами, расположением элементов, цветом и так далее. В большинстве случаев CSS может занять место устаревшей табличной разметки на HTML. В любом случае с помощью CSS можно отказаться от использования тегов шрифта и другого устаревшего «мусора», только увеличивающего трафик вроде этого примера: td>
Такой «замусоренный» код можно заменить простой ячейкой таблицы, ячейкой таблицы с атрибутом класса или просто удалить. Благодаря отделению структуры от внешнего вида можно изменять эти элементы независимо друг от друга. Например, можно присвоить одинаковое оформление нескольким страницам или внести изменения в текст и ссылки без нарушения разметки. Вы или ваш клиент можете в любое время внести нужные изменения в XHTML, не боясь разрушить оформление страницы, так как текст остается лишь текстом, он не несет ответственности за дизайн. . Точно так же можно изменить оформление страницы, сохранив разметку. Посетители вашего сайта жалуются на слишком маленький размер текста?
В
действии
69
Измените одно правило в глобальной таблице стилей, и перемены немедленно вступят в силу на всем сайте. Необходимо создать версию, оптимизированную для печати? Создайте таблицу стилей для печати, и все страницы будут прекрасно выглядеть на бумаге, независимо от их отображения на экране.
Поведение Стандартная объектная модель (W3C DOM, http://www.w3.org/DOM/ DOMTR#doml) работает с CSS, XHTML и ECMAScript 262 (http://www.ecma.ch/ ecmal/STAND/ECMA-262.HTM), стандартной версией JavaScript, что позволяет создавать разнообразные варианты поведения страницы и эффектов на ней, работающих на разных платформах и в разных браузерах. Больше не нужен JavaScript только для Netscape или технологии ActiveX и JScript только для IE/Windows. В зависимости от цели создания сайта и его аудитории, дизайнеры и разработчики могут использовать всю мощь Web-стандартов для полного разделения структуры, внешнего вида и поведения. Либо можно создать переходный сайт, комбинируя старые и новые приемы и используя простую табличную разметку XHTML и технологию CSS для оформления сайта.
В действии Если бы проект Suck функционировал до сих пор благодаря таким Web-стандартам, как XHTML и CSS, авторы смогли бы сосредоточиться на творчестве. Структуру документа обеспечивал бы простой шаблон XHTML. С помощью CSS можно было бы управлять оформлением сайта. Отпала бы необходимость доработки сайта при каждом обновлении, кроме обработки изображений, связанных с публикуемым материалом. Благодаря таблицам стилей в графических браузерах типа IE, Mozilla/ Netscape и Opera, сайт Suck.com выглядел бы именно так, как задумали его создатели. С помощью структурированного XHTML содержимое сайта можно было бы прочитать не только в этих браузерах, но и в карманных компьютерах (PDA), программах для чтения информации с экрана и текстовых браузерах. Так как сайт Suck.com ориентирован в первую очередь на содержание, он стал бы главным кандидатом на использование технологии XHTML/CSS, где оформление и содержание реализовывались на разных языках: CSS отвечает за разметку, а XHTML - за контент. Но владельцы Suck также могли бы добиться успеха и используя переходную модель: простые таблицы XHTML для задания расположения основных элементов страницы, a CSS для оформления внешнего вида сайта.
70
Глава 2. Разработка и дизайн по стандартам
Создатели сайта Gilmore вряд ли смогут извлечь выгоду из использования шаблонов, по крайней мере, если будет сохранена главная страница сайта в ее теперешнем виде. Однако они могли бы создать такую же разметку с помощью CSS, сэкономив на трафике и позволив дизайнерам изменять отдельные секции страницы без нужды переделывать всю разметку. Создатели Gilmore могли использовать свойство фона в CSS, чтобы расположить основное изображение в виде единого файла JPEG, а не резать его на девять мелких кусочков (см. рис. 2.4). Меню можно было наложить сверху, используя один из проверенных приемов CSS, поддерживаемых даже в браузерах версии 4.0. Дизайнеры сайта Gilmore также могли бы использовать XHTML и атрибуты a l t , t i t l e или longdesc, чтобы обеспечить доступность сайта более широкому кругу пользователей (см.,рис. 2.5). Менее насыщенные графикой остальные страницы сайта можно было создать переходным методом (CSS и таблицы) или только CSS-разметкой.
Преимущества переходной модели Использование переходного метода создания сайтов с помощью XHTML и CSS стало бы значительным улучшением общего положения в Сети и помогло бы решить обсуждаемые в данной книге проблемы. Используя переходный метод - CSS для шрифтов, управления цветом, границами и другими подобными элементами, а таблицы XHTML для основной разметки, - можно улучшить удобство использования сайтом, доступность, совместимость и долгосрочную работу сайта, хотя при этом потребуется больше человеческих ресурсов и трафик будет не таким низким, как при использовании одного лишь CSS. Сайт Web-агентства автора, Happy Cog (www.happycog.com), создан на основе переходной технологии (рис. 2.7-2.9). Он сочетает в себе табличную разметку XHTML с CSS 1 и CSS 2, а также скрипты, основанные на объектной модели документа W3C DOM. Данный сайт соответствует стандартам XHTML1.0 Transitional и CSS, требованиям доступности Section 508 и WAI Priority I Guidelines. Благодаря соответствию требованиям XHTML, CSS и Section 508 сайту обеспечена долгая жизнь по мере развития браузеров и стандартов. Благодаря использованию испытанных методов (табличной разметки) он хорошо смотрится
Преимущества ш
лш
71
Рис. 2.7. Happy Cog (www.happycog.com) является примером переходной модели сайта, сочетающего в себе табличную разметку XHTML с CSS и скрипты, использующие D0M
в современных браузерах (см. рис. 2.7) и неплохо отображается в браузерах девяностых годов вроде Netscape 4 (см. рис. 2.8), которые довольно посредственно поддерживали CSS. В то же время использование простой структурной разметки на сайте Happy Cog позволяет просматривать его как пользователям текстовых браузеров (см. рис. 2.9) и программ чтения информации с экрана, так и пользователям появляющихся новых моделей беспроводных устройств. Используемая Happy Cog переходная стратегия обеспечивает совместимость как со старыми моделями браузеров, так и с новыми, и является наиболее правильным выбором для большинства сайтов. Однако, чтобы насладиться всеми возможностями Web-стандартов, необходимо кардинальным образом изменить способ мышления дизайнеров и используемую методологию.
72
Глава 2» Разработка и цизайн я® ста
Рис. 2.8. При открытии в старом браузере (Netscape 4) большая часть содержимого сайта отображается как положено. Некоторые тонкости дизайна пропали, но ни мы, ни пользователи Netscape 4, привыкшие к отсутствию совершенства на большинстве просматриваемых ими сайтов, не возражаем
Оптимальные методы разработки сайтов, сохранение целостности и совместимости, удовлетворительный уровень дизайна во всех пользовательских продуктах - это не просто недостижимый эталон; это пример того, как сайты могут работать уже сейчас при использовании Web-стандартов. Краеугольным камнем нового подхода к дизайну является возможность отделения структуры от оформления и поведения сайта. Именно так будут создаваться все сайты в будущем (за исключением Flash-сайтов) и уже создаются такие бескомпромиссные сайты, ориентированные на будущее. Некоторые из них мы рассмотрим в этой книге.
Web Standards Project: совместимость в'действии
73
Рис. 2.9. Сайт Happy Cog, открытый в текстовом браузере Lynx. Как и должно быть, все содержимое сайта оказалось доступным, в отличие от изображенного на рис. 2.5. Создатели сайта Happy Cog не.умнее или хитрее создателей сайта Gilmore, они просто используют стандарты
Web Standards Project: совместимость в действии Созданный в 1998 году Web Standards Project (WaSP) - рис. 2.10 - помог убедить Netscape, Microsoft и других производителей браузеров внедрять в свою продукцию поддержку обсуждаемых в данной книге стандартов. Потребовались время, настойчивость и стратегия, но в конце концов производители браузеров осознали, что совместимость со стандартами является жизненно необходимой для дальнейшего развития Web.
74
Глава 2* Разработка и дизайн 㧫* стандартам
Парадокс. Интересно, что в борьбе за создание Web-стандартов принимали участие и Netscape с Microsoft, являющиеся членами W3C, однако затем потребовалось приложить немалые усилия, чтобы они стали создавать продукцию, поддерживающую созданные ими же стандарты.
Когда же браузеры наконец научились поддерживать стандарты (см. главу 3), проект Web Standards Project был перезапущен в 2002 году, чтобы донести до дизайнеров и разработчиков очевидность преимуществ данных технологий. Сайт проекта был переработан в связи с изменением его миссии с лоббистской на образовательную. Как того требовала миссия проекта, дизайн сайта отлично отображался в совместимых со стандартами браузерах (рис. 2.10). Он также хорошо смотрелся
Рис. 2.10. Домашняя страничка Web Standards Project (www.webstandards.org), открытая в браузере Chimera (основан на коде Gecko) для Mac OS X. CSS-разметка сайта выглядит одинаково во всех современных браузерах
Web Sir
шесть в
75
Рис. 2.11. Этот же сайт выглядит и работает вполне нормально в Netscape 4. Специальной версии для Netscape 4 создано не было
и в более старых браузерах (рис. 2.11). И все это без использования альтернативной или дополнительной разметки и определения браузера пользователя.
Один документ для всех Сайт Web Standards Project создан с использованием только XHTML 1.0. CSS применяется для разметки и оформления. Нет отдельных версий для Palm или WAP. Создание нескольких версий PI не требуется - при работе по стандартам один документ подходит для всех. На рис. 2.12 слева мы видим сайт webstandards.org на экране карманного компьютера Palm Pilot, а справа - тот же сайт в Microsoft PocketPC. Самое
76
Глава 2* Разработка и дизайн «о стандартам
Рис. 2.12. Тот же сайт, открытый на другой день в Palm Pilot. Скриншот предоставлен Porter Glendinning - www.serve.com/apg, справа - этот же сайт в Microsoft Pocket PC. Скриншот предоставлен Энил Дэшом (Anil Dash) - www.dashes.com/anil
интересное показано на рис. 2.13 - мы видим работающий сайт на карманном компьютере Newton, давнем предшественнике Palm Pilot от компании Apple. Грант Хатчинсон, предоставивший нам этой снимок, отметил, что сравниться с современным сайтом, открытым в устаревшем браузере на допотопном компьютере, не может ничто. Эти слова звучат как музыка для любого дизайнера или разработчика, который хочет охватить как можно большую аудиторию с минимальными усилиями. Строгое соответствие нормам XHTML и правильное использование CSS освобождает дизайнеров от создания нескольких версий одного сайта.
A List Apart: одна страница, много видов
77
Обратите внимание, что на рис. 2.12-2.13 меню, использующее DHTML и отображаемое в левой части экрана, превращается в обычный маркированный список на Palm, PocketPC или Newton. Как это произошло? Ответ прост. Меню DHTML на самом деле является простым маркированным списком. CSS изменяет его внешний вид в совместимых браузерах. Меню добавляется на страницы с помощью технологии Server Side Includes (SSI).
Рис. 2.13. Снова Webstandards.org, на этот раз открытый в «наладоннике» Apple Newton. Скриншот предоставлен Грантом Хатчинсоном (Grant Hutchinson) -www.splorp.com
A List Apart: одна страница, много видов Сайт принадлежащего автору данной книги электронного журнала "A List Apart" (www.alistapart.com), предназначенного для людей, создающих Web-сайты, был полностью переведен на разметку CSS в феврале 2001 года. Дизайн сайта (рис. 2.14) сохранил привычный дух HTML минимализма, который ранее достигался с помощью таблиц HTML.
78
Ттава 2» Р а з р а б о т к а и д и з а й н по стандарта»
Посетители ALA, которым не нравится мелкий шрифт сайта, используемый по умолчанию, могут переключиться на более крупный с помощью переключателя таблиц стилей, созданного Полом СоуДеном (Paul Sowden). В 126 номере ALA (www.alistapart.com/issues/126) объясняется, как работает переключатель, и приводится открытый код, который вы можете использовать по своему усмотрению. (Дополнительные сведения можно найти в главах 15 и 16.) На рис. 2.14 показан сайт ALA, открытый в совместимом с CSS браузере вроде IE5+, Mozilla, Netscape 6+ и Opera 5+. В другой среде сайт выглядит совершенно иначе. Мы видим тот же сайт, но открытый в несовместимом с CSS браузере - Netscape Navigator 4 (рис. 2.15). Сайт по-прежнему полностью доступен и функционален.
A List Apart: «дна страница, много видев
79
к
Несомненно, многие читатели предпочтут именно такой вариант. Сразу после перехода сайта на CSS-разметку число посетителей с браузером Netscape 4 возросло. Похоже, эти пользователи предпочли более простой внешний вид, доступный их браузерам, прежнему сложному дизайну, лишь подчеркивавшему слабость их браузеров. Те же, кто считает, что стандарты ущемляют пользователей старых версий браузеров, могут считать эту историю примером обратного утверждения: при правильном использовании стандарты помогают всем. Глядя на рис. 2.15, вы можете подумать, что панель, навигации исчезла. На самом деле она просто переместилась вниз страницы. Размер и шрифт текста определяются настройками браузера пользователя. Для отображения упрощенного формата сайта не применяется определение используемого пользователем браузера. Вместо этого таблица стилей, контролирующая вид сайта, подключена таким образом, что несовместимые браузеры просто игнорируют ее. (Мы объясним, как это сделать во второй части книги.)
80
Гтввв 2. Разработка и дизайн по стандартам
Рис. 2.15. Этот же сайт в браузере версии 4.0. Нет поддержки CSS, но нет и проблем. Сайт полностью доступен
Мы не использовали таблицы и другой «мусор» в создании страниц. Единственное - атрибут цвета фона в теге , чтобы графика сочеталась с остальной страницей в несовместимых с CSS браузерах.
Дизайн за пределами экрана И наконец, на рис. 2.16 мы видим напечатанную на принтере страницу с сайта A List Apart. Как видно, боковая панель была удалена, шрифт и цвета оптимизированы для печати, и URL каждой ссылки отображены для большего удобства. Это «волшебство» работает за счет отдельной таблицы стилей для печати, созданной Эриком Майером (Eric Meyer) на базе старой таблицы стилей печати, созданной автором этой книги и Тоддом Фарнером (Todd Fahrner). Майер является признанным экспертом по CSS и автором книги "Eric Meyer on CSS: Mastering the Language of Web Design" (издательство New Rider, 2002). В его статье "Going To Print" (www.alistapart.com/stories/goingtoprint/) для журнала "ALA' объясняются способы создания таблицы стилей для печати. Мы также обсудим этот вопрос во второй части книги.
•
:
.
,
•
•
"
.
.
•
•
;
•
,
-
.
;
Э
Д
^
:
.
е
- • • • •
;
-
-
s
;
-
-
-
.
-
:
'
•
•
"
:
•
:
:
'
-
.
.
8
1
Рис. 2.16. Из Сети на бумагу. Статья ALA оптимизируется для печати «на лету» благодаря таблице стилей для печати
Самое главное, о чем мы хотим сказать, - благодаря одному небольшому документу - таблице стилей для печати - 'A List Apart" больше не нуждается в создании отдельной, оптимизированной для печати версии. То же самое можно сделать и с вашим сайтом. Исключением станут лишь сайты, статьи которых расположены на нескольких страницах (вроде www.wired.com или www.oreilly.com). Создание отдельных версий для печати необходимо, чтобы соединить страницы статьи в один
82
Глава 2.
пишш^г
о стандартам
документ. Но и они могут также использовать данный прием, так как для печати соединенной воедино статьи опять же можно воспользоваться одной таблицей стилей. Давайте еще раз взглянем на положительные стороны двух сайтов, рассмотренных выше.
Экономия времени и расходов, рост аудитории Если дизайн и разработка сайтов по стандартам означает отказ от необходимости создания нескольких версий одного сайта, легко понять, почему экономия времени и расходов станет значительной: • • • • • •
больше никаких версий только для Netscape; больше никаких версий только для Internet Explorer; больше нет «простых» версий для старых браузеров; во многих случаях нет нужды в отдельных версиях для WAP или WML; нет необходимости в оптимизированных для печати версиях; не нужно прибегать к определению браузера или платформы, можно избежать лишней нагрузки на сервер, не используя оптимизированные под отдельные браузеры или платформы компоненты.
Несмотря на все желание включить в круг своей аудитории пользователей беспроводных устройств и сотовых телефонов, многие компании просто не могут позволить себе раскошелиться еще и на создание отдельных версий сайта для них. Благодаря стандартам XHTML и CSS, в этом нет необходимости. Даже не пошевелив пальцем, все эти компании, используя стандарты, сделают свои сайты доступными для таких пользователей, число которых стремительно растет.
Куда двигаться дальше? Созданные на базе XML языки разметки (см. главу 4) превратят Сеть в детский сад. Но мы не можем двигаться вперед, используя устаревшие нормы дизайна и разработки. Есть два способа движения вперед: переходная совместимость, при которой используется сочетание традиционных и основанных на стандартах техник, и строгая совместимость, основанная на полном (или почти полном) разделении структуры, оформления и поведения.
Куда двигаться даныне?
83
Переходная модель учитывает реалии современной смешанной сетевой среды. Она является оптимальным вариантом для компаний, значительная часть аудитории которых пользуется устаревшими браузерами. Строгая совместимость нацелена на будущее, имеет больший уклон в сторону стандартов и позволяет получить большую выгоду от их правильного использования. Давайте рассмотрим эти подходы более подробно.
Переходная модель совместимости Составляющие: • правильный XHTML-код. (Также допустимо использовать HTML 4.01.); • CSS для управления шрифтами, цветом, границами и другими элементами; • легкое использование таблиц XHTML для разметки. Следует избегать вложенных таблиц, возлагая эту работу на CSS; • дополнительно: можно применять структурные метки к значащим ячейкам таблицы (полезно для CSS и при создании скриптов, поможет в переходе к разметке CSS без таблиц); • JavaScript/ECMAScript на базе DOM, допустимо разветвление кода с учетом IE и Netscape версии 4.0; • атрибуты для повышения доступности и тестирование. Рекомендации Переходная модель рекомендована для сайтов, значительная часть посетителей которых пользуется браузерами версии 4.0 и более старыми, которые просто не в состоянии адекватно поддерживать CSS и DOM. Также рекомендуется для тех случаев, когда таблицы справляются с разметкой лучше/чем CSS. Переходный метод использован при создании сайта Нью-йоркской общественной библиотеки (рис. 2.17), чтобы сохранить огромную базу пользователей Netscape 4.0, внедрить совместимость с XHTML и CSS и обеспечить доступность в будущем. Преимущества: • рациональная совместимость со старыми браузерами. Сайты смотрятся достаточно неплохо даже в невероятно старых версиях браузеров. Естественно, в новых браузерах они будут выглядеть гораздо привлекательнее (в некотором смысле это даже лучше, так как может побудить некоторых пользователей сменить свои древние1 браузеры на новые); 1
Подобный термин все чаще применяется к устаревшему программному обеспечению. Прим. науч. ред.
84
Глава 2. Разработка if дизайн но стандартам
Рис. 2.17. Сайт Общественной библиотеки Нью-Йорка (www.nypl.org/branch) создан по переходной технологии: XHTML и умеренное использование таблиц для разметки, доступность WAI Priority 1, CSS для оформления. Совместимый с новыми и старыми устройствами, такой метод является оптимальным для некоторых организаций
• совместимость с новыми продуктами - такие сайты будут отлично работать в новых браузерах и устройствах; • начало пути к окончательному переходу сайта на XML-код и CSS-разметку; • обслуживание сайта вызывает меньше головной боли благодаря отсутствию устаревшего кода; • повышение доступности сайта, снижение риска потери части посетителей, соответствие нормам и требованиям по доступности; • частичное разделение содержания и дизайна (код все же содержит некоторые элементы дизайна); • элегантность, четкость и простота кода, снижение размера файлов, уменьшение трафика и снижение расходов на производство, обслуживание и поддержку сайта.
85 Недостатки: • структура и внешний вид по-прежнему связаны, что несколько осложняет обслуживание и обновление сайта; • по этой же причине в будущем поддерживать такие сайты будет все труднее, если учесть распространение основанных на XML систем управления контентом (Content-management System - CMS). Вряд ли это станет проблемой для маленьких сайтов, но для крупномасштабных сайтов, содер' жащих сотни и тысячи динамических страниц, это может обернуться большой головной болью.
Строгая совместимость Составляющие: • полное отделение структуры от оформления и поведения; • для разметки используется CSS. Таблицы применяются лишь по прямому назначению - для отображения табличных данных, например адресных книг, списков событий, учетных записей, электронных таблиц; • создание структуры * страниц на XHTML 1.0 Strict или XHTML 1.0 Transitional; • акцент на структуре. В коде не содержится уловок по оформлению сайта (строгий подход Strict) или их число сведено к минимуму (переходный подход Transitional); • структурные метки элементов дизайна; • для придания динамики сайту используются скрипты, основанные на объектной модели DOM. Разветвление кода только в случае крайней необходимости; • атрибут повышения доступности и тестирование. Рекомендации Строгая совместимость рекомендуется для всех сайтов с малым числом посетителей, использующих браузеры версии 4.0 или ниже. При этом содержимое сайта все равно останется доступным даже для таких пользователей, но может несколько пострадать модель поведения и внешний вид. Преимущества: • более высокая степень совместимости с существующими PI будущими браузерами и беспроводными устройствами; • легкий переход к более продвинутым формам основанного на XML кода; • рост аудитории при меньших трудозатратах;
86
Глава 2* Разработка и д
^таш
• нет необходимости в создании отдельных версий; • почти полное отсутствие проблем с доступностью. Контент созданного таким образом сайта обычно доступен все пользователям; • элегантный, простой,и логичный код; • более легкое, быстрое и дешевое создание и обслуживание. Благодаря снижению затрат на создание и поддержку сайта, маленькие бюджеты можно уберечь от истощения, а большие использовать для наполнения сайта контентом, дизайна, программирования, графики, фотографий, редактирования и тестирования юзабилити; • проще интегрировать сайт с системами управления контентом на базе шаблонов и динамической публикации; • благодаря CSS можно создавать дизайн, который невозможен при разметке с помощью таблиц HTML; • сайты будут работать в еще не созданных браузерах и устройствах. Недостатки: • в старых браузерах сайты будут выглядеть довольно просто; • поддержка браузерами CSS еще не идеальна. Могут потребоваться некоторые доработки; \ • некоторые приемы, легко выполняемые с помощью таблиц HTML, невоз' можно осуществить с помощью CSS. Поэтому, возможно, потребуется переосмыслить определенные дизайнерские идеи; • некоторые в целом совместимые со стандартами браузеры (например, Opera до 7 версии) могут некорректно обрабатывать скрипты, основанные на модели DOM; • динамические модели сайта на базе DOM не будут работать в браузерах 4.0 и более ранних версиях, а также в программах для чтения информации с экрана, текстовых браузерах и в большинстве беспроводных устройств. Для обеспечения функциональности в этих устройствах и браузерах потребуется использовать теги < n o s c r i p t > и возможности CGI. Во второй части книги объяснены принципы работы стандартов (отдельно или совместно друг с другом), а также предложены советы и приемы для решения дизайнерских и финансовых проблем, связанных с различными путями развития Сети. Но, перед тем как погрузиться в этот вопрос, давайте сделаем небольшую паузу и рассмотрим некоторые вопросы, наверняка уже назревшие у вас.
Куда двигать
мое?
87
Если стандарты повышают совместимость сайтов с различными платформами и устройствами, улучшают доступность, облегчают создание и обслуживание сайтов, понижают трафик и расходы, то почему не все дизайнеры используют их в своей работе? Почему не все клиенты требуют от дизайнеров использования стандартов при создании сайтов? Зачем вообще нам понадобилось писать данную книгу, а вам читать ее? Почему Web-стандарты не так широко распространены и применяемы? Ответ на эти вопросы находится как раз в следующей главе.
Г Я Ш 1. Неприятности со стандартами eb-стандарты являются ключевым фактором в разработке доступных, экономически эффективных Web-сайтов. Однако изучение значительной части существующих в течение последних нескольких лет сайтов не натолкнет вас на такую мысль. В этой главе мы попытаемся рассмотреть, почему использование Web-стандартов не стало повсеместно распространенной практикой среди Web-дизайнеров. Если вы хотите прежде познакомиться с историей успешных Web-стандартов, перейдите к главе 4. Если вы уже сейчас поняли преимущества стандартов и готовы приступить к работе, переходите к главе 5. Если же вы хотите набраться побольше сведений о стандартах для дальнейшей их пропаганды среди ваших коллег, или просто желаете понять, как Web-индустрия может принимать стандарты, но не использовать их - эта глава для вас.
W
Красивый сайт, ужасный код В середине 2002 года я вместе с шестью другими специалистами входил в жюри восьмой ежегодной церемонии награждения Communication Arts Interactive Awards (www.commarts.com), одного из наиболее престижных конкурсов в Webиндустрии. Представленные на конкурсе сайты и проекты были одними из лучших образцов дизайна и разработки. В качестве жюри мы провели 10 недель, просматривая тысячи Web-сайтов и компакт-дисков и сводя число участников до сотни финалистов, из которых получить награды должны были менее 50 участников. Отбор победителей проходил в Сан-Франциско, где мы попали в своеобразное недельное заточение нам нельзя было покидать город до объявления победителей. В конце недели мы назвали 47 победителей и были отпущены на свободу.
Красивый сайт, ужасный коц
89
Чтобы отпраздновать это событие (и вновь обретенную свободу), я решил встретиться со своим другом, проживающим в этих местах. Мой приятель заинтересовался этим конкурсом, так как в некоторой степени интересовался развитием Web. Он спросил, снижали ли мы оценки сайтам, не совместимым со стандартами. Я ответил, что абсолютно все представленные на конкурс сайты не были совместимы со стандартами. Это правда. Из тысяч рассмотренных Web-сайтов ни один не был создан с помощью верного, структурного HTML-кода. Многие сайты обладали великолепным визуальным дизайном (рис. 3.1) и были виртуозно запрограммированы (рис. 3.2), некоторые отличались выдающимся контентом, а другие были просто оригинальны до невозможности. Но ни один сайт не мог похвастаться структурным кодом, компактным CSS или написанными на основе стандартов скриптами. Более половины рассмотренных нами сайтов были полностью созданы на Flash. Остальные полнофункционально работали только в IE 4 и Netscape 4. Многие были оптимизированы под Windows. Сто лучших сайтов, большинство из которых обошлись своим создателям в кругленькую сумму, с пренебрежением отнеслись к существующим Web-стандартам. И это были лучшие профессиональные сайты отрасли.
Общие цели - общие средства Представленные на конкурс Communication Arts Web-сайты отличались друг от друга своими творческими и маркетинговыми задачами. Но у всех была одинаковая цель - такая же, как и у моего или вашего сайта. Мы все хотим, чтобы наши сайты привлекли внимание потенциальной аудитории, подтолкнули посетителей на определенные действия, были легкими для понимания и использования, формировали у посетителя хорошее мнение о нашей организации, продукте или услуге не только на словах, но и благодаря тому, как выглядит и работает сам сайт. Большинство из нас стремится получить по максимуму в обмен на потраченные средства. Мы хотим, чтобы наш сайт работал в как можно больших средах и был доступен для максимального количества пользователей. Мы стараемся избежать появления возможной несовместимости с различными браузерами и платформами и быть хотя бы на шаг впереди технологического прогресса. Большинство из нас надеется создать сайт, который продолжит работать и в браузерах будущего без необходимости дополнительной настройки и
90
Глава 3. Неприятности С0 стандартами
переработки, как описано в главе 2. Уж лучше мы потратим свое драгоценное время на обновление контента и добавление новых функций, чем на перекодировку сайта при появлении нового браузера или устройства. Стандарты являются ключом для достижения всех этих целей. Так почему же они до сих пор не применяются активно и регулярно?
Восприятие против реальности По какой-то причине некоторые дизайнеры, так же как и в случае с обеспечением доступности сайта (глава 14), ошибочно полагают, что Web-стандарты какимто образом противоречат или являются противоположностью хорошему графическому дизайну. Кроме того, сами создатели стандартов прикладывают очень
91
Рис. З.2. Еще один победитель -Web-сайт World Resources Institute (http://earthtrends.wri.org) обладает неплохим дизайном, грамотно запрограммирован, но опять же не использует Web-стандарты
мало усилий для их пропаганды. Довольно ущербные сайты W3C или ЕСМА (European Computer Manufactyrers Association) - рис. 3.3 - вряд ли смогут вдохновить художников и дизайнеров. Соответственно, внешний вид W3C или ЕСМА не способен развеять миф о том, что стандарты противоречат визуальному дизайну. Изменить такую точку зрения под силу только красивым Web-сайтам, созданным по стандартам (рис. 3.4). Еще одной причиной малого распространения Web-стандартов является то, что дизайнеры и разработчики, изучившие всевозможные традиционные средства создания сайтов и использования запатентованных технологий, не видят смысла в изучении чего-то нового. Либо они просто слишком заняты, чтобы учить JSP, ASP или .NET. У тех же дизайнеров, кто привык использовать WYSIWYG-редакторы для создания сайтов, имеются свои причины.
92
Глава 3« I
эта»!и
Рис. 3.3. Организация ЕСМА является создателем стандартов и домом для многих гениальных умов. Тем не менее сайт ассоциации далек от совершенства в плане графика, структуры и удобства для пользователя. Таким образом, сайт ЕСМА (www.ecma.ch) вряд ли вдохновит многих разработчиков на изучение ECMAScript
А именно - их зависимость от WYSIWYG-редакторов. Они могут даже не знать о том, что последние версии таких программ уже поддерживают стандарты. Естественно, такими программами, как Dreamweaver и GoLive, пользуются многие квалифицированные дизайнеры, однако они популярны и среди полуобразованных создателей сайтов, которые не смогут создать даже самую простую страницу без помощи подобных средств. И наконец, еще одной причиной является то, что популярные браузеры только относительно недавно предложили пользователям серьезную поддержку стандартов. Многие Web-дизайнеры настолько привыкли делать свою работу старыми методами, что они просто не заметили, как браузеры изменились. Давайте рассмотрим эту причину в первую очередь.
2000: год появлении новым I
эв
93
Рис. 3.4. Сайт Kaliber 10000 (КЮк) является популярным порталом о дизайне (www.k10k.net), построенным с помощью XHTML, CSS и W3C DOM. Использование стандартов сайтом с достойным дизайном является хорошим примером при пропаганде Web-стандарта в
2000: год появления новых браузеров С появлением в марте 2000 года IE 5 Macintosh Edition мир (по крайней мере, часть мира, использующая Мае) наконец-то получил нечто большее, чем дразнящий призрак стандартов. IE 5/Мас поддерживал XHTML, ECMAScript, почти все спецификации CSS1, многие спецификации CSS2 и большую часть модели DOM. Также 1Е5/Мас мог отображать сырой код XML, хотя непонятно, кому это могло понадобиться. (Дополнительные сведения об этом можно найти в главе 5 или на сайте Bugzilla - http://bugzilla.mozilla.org/show_bug.cgi?id=64945).
IE 5/IVIac: переключение и увеличение IE 5/Мас был настолько приспособлен к стандартам, что он мог изменять отображение и выполнение страницы согласно < ! DOCTYPE>, указанному в начале
94
Fnaea 1. Неприятности со стандартами
кода страницы. Такая техника получила название «переключение DOCTYPE». Более подробно этот прием мы обсудим в главе 11. В целом, благодаря корректному использованию DOCTYPE, страница будет отображаться и функционировать, как ей указывают Web-стандарты. При использовании старого или частичного DOCTYPE страница будет отображаться в обратно-совместимом режиме, позволяющем избежать ошибок работы устаревших, несовместимых со стандартами сайтов, число которых в Сети составляет порядка 99,9% (рис. 3.5).
Рис. З.5. Здравствуй мир, это IE 5 Macintosh Edition, первый в мире браузер, практически безошибочно поддерживающий Web-стандарты. Некоторые использованные в нем инновации затем были применены в конкурирующих продуктах (www.microsoft.com), но, к сожалению, не все
В IE 5/Мас также была применена опция Text Zoom (рис. 3.6), позволяющая пользователям увеличить или уменьшить любой текст на странице, независимо от того, каким образом задан его размер. Это решало одну из важнейших проблем доступности. До IE 5/Мас подобной возможностью обладал лишь браузер Opera, позволявший увеличить всю страницу, включая изображения. Такой подход также имел свои плюсы, так как давал возможность избежать разрыва страницы при изменении масштаба и сохранить дизайнерскую задумку (рис. 3.7-3.9).
2000: год к&
юв
95
Рис. 3.6. IE 5/Mac Text Zoom в действии. С помощью выпадающего меню или «горячей» клавиши пользователи могли приблизить либо отдалить любой текст на странице, независимо от способа, которым был задан размер шрифта. Размер изображений и других элементов при этом не менялся
Смелый шаг Netscape Вслед за появлением IE 5/Мас было выпущено множество совместимых со стандартами браузеров. Netscape б и Mozilla поддерживали XML, XHTML, CSS, ECMAScript и DGM на всех платформах. Netscape также использовал переключение DOCTYPE и Text Zoom и был переписан с нуля как полностью совместимый со стандартами браузер. Для достижения полной совместимости со стандартами компания Netscape решительно отмела в сторону имеющийся код браузера Navigator/ Communicator 4.0 и решила начать создание новой версии с нуля. Естественно, этот процесс занял гораздо больше времени, чем простое обновление имеющегося браузера. Netscape потеряла значительную рыночную долю за период разработки Mozilla/Netscape б, начавшейся в 1998 году и закончившейся релизом браузера в 2000 году (на самом деле жизнеспособный продукт появился лишь в 2002 году).
96
Глава 3, I
гнбсти со стандартами
Рис. 3.7. Сайт популярного портала о дизайне PixelSurgeon (www.pixelsurgeon.com/news), открытый в Opera 7 в натуральную величину
Менеджеры и разработчики компании далеко не безумцы. Очевидно, они полагали, что новый браузер будет готов в течение года. Когда один год сменялся вторым, й затем третьим, они уже не отступились от своего героического намерения довести работу до конца. Многие компании на PIX месте отказались бы от продолжения проекта и выпустили версию 5.0, воспользовавшись имеющимся кодом старого браузера. Тем не менее специалисты Netscape заслуживают благодарности и уважения за то, что пожертвовали долей рынка и прибылью ради создания совместимого браузера, хотя акционеры компании могут и не согласиться с этим.
Путь открыт Затем появился браузер Opera б - без переключений DOCTYPE и DOM, однако с поддержкой других основных стандартов. В Opera отсутствовала поддержка переключений DOCTYPE, так как ее создатели всегда придерживались намерения отображать страницы согласно спецификациям W3C. Поэтому
2000; год появлении новым браузеров
97
Рис. З.8. Тот же сайт с увеличением 200% при помощи инновационных возможностей Opera. Эта опция позволяет приблизить не только текст, но и графические элементы, например небольшие кнопки, и прочитать надписи
производители Opera не позаботились о поддержке режимов обратной совместимости. (Opera 5 и 6 не поддерживали W3C DOM, Opera 7 2002 года выпуска поддерживает этот стандарт.) Наконец Microsoft выпустил IE б под Windows. Браузер очень похож на коллегу под Macintosh в плане поддержки CSS, XML, ECMAScript и DOM и, так же как и IE5/Mac, Mozilla и Netscape 6+, поддерживает переключение DOCTYPE. В IE 6/Windows отсутствует функция Text Zoom, но, несмотря на всю привлекательность с точки зрения доступности, эта функция является скорее новшеством, чем стандартом. ВIE6/Windows была неправильно реализована функция фона CSS и требовала исправлений ошибка, вызывавшая сбой разметки CSS при использовании свойства f l o a t . Тем не менее браузер IE6/Windows был сделан довольно неплохо, соответствовал стандартам, а его предшественник IE5.x/Windows также стал довольно популярным продуктом. Ни один их этих браузеров не был идеальным, как не бывает таковым ни один программный продукт, но каждый из них демонстрировал огромные достижения
98
Глава 3, i
мшшш
и желание добиться совместимости через Web-стандарты. Никто из нас, даже в Web Standards Project, не мог представить себе, что эти компании сделают так много. После того как популярные браузеры наконец-то достигли соответствия в поддержке стандартов, дизайнеры и разработчики могут более уверенно пользоваться CSS и другими стандартными технологиями. 2 0 0 0 - 2 0 0 1 : авангард стандартов. Еще до выпуска IE 6 / W i n d o w s многие дизайнеры и разработчики начали создавать сайты с разметкой CSS и другими стандартными приемами, включая скрипты на базе D O M . Некоторые делали это, используя некоторые ухищрения, позволяющие IE 5 / W i n d o w s корректно отображать CSS, и отключая CSS в браузерах четвертой версии. Другие создавали разметку, позволявшую всем браузерам отобразить хоть что-то, но сохраняя полную версию для новых версий браузеров. Более подробно об этом авангарде дизайнеров мы узнаем из главы 4, а о методах их работы и приемах - из второй части книги.
Слишком шало, слишком поздно?
99
Слишком мало, слишком поздно? Выпуск совместимых со стандартами браузеров стал отличным событием для пользователей и создателей Сети. Но ко времени появления этой благой вести многие дизайнеры и разработчики были убеждены, что Web-стандарты это всего лишь несбыточная мечта, и многие из них перестали даже пытаться использовать стандарты в своей работе. Не нужно долго думать, чтобы понять причину такого отношения - оно сформировалось за годы ожидания.
CSS: первый сбой бесплатно Впервые описание CSS 1 было опубликовано в канун Рождества 1996 года. Спустя несколько месяцев на свет появился IE3, среди прочих особенностей которого можно отметить зачаточную поддержку CSS. Учитывая это, а также полное отсутствие поддержки CSS в Netscape 3, браузер от Microsoft получил первые лестные отзывы в свой адрес на фоне полного господства в сети Netscape Navigator. Поддержка CSS в IE 3 позволяла отказаться от устаревших тегов и начать экспериментировать с разметкой CSS. Вдохновленные демонстрационной страницей от Microsoft (рис. 3.10), показавшей возможности CSS, многие дизайнеры совершили первый заплыв в мир CSS и вскоре были вынуждены вернуться из-за нехватки воздуха. Поддержка CSS в IE 3 была первым шагом, и, как это обычно бывает, он оказался неполным и не лишенным недостатков. Энтузиазм, вызванный новыми возможностями CSS, довольно быстро сошел на нет, так как ошибки в IE 3 могли привести к тому, что страница попросту не будет отображаться. Например, при некоторых обстоятельствах изображения на страницах с CSS отображались не рядом с текстом, а накладывались на него, что делало просмотр страницы невозможным. Чтобы представить себе такую ситуацию, положите*руку на страницу и попробуйте прочитать текст сквозь нее. Решением этой проблемы было размещение текста и каждого изображения в отдельной ячейке таблицы, что увеличивало размер страницы, тогда как предназначением CSS был совершенно противоположный результат. Вскоре дизайнеры пришли к выводу, что CSS не является готовым к употреблению продуктом, что стало логичным объяснением полного отсутствия поддержки CSS в безусловном лидере - Netscape 3.
100
Глава 3
I си станд
Рис. 3.10. Страница галереи Microsoft CSS 1998 года (http://www.microsoft.com/typography/css/ gallery). Текст и изображения внахлест были созданы только с помощью CSS, без GIF- или JPEG-файлов. Несмотря на то что совместимость IE 3 со стандартом CSS практически отсутствовала и для создания демонстрационной страницы использовались некорректные значения, тем не менее джин был выпущен из бутылки. Увидев возможности CSS, многие из нас уже никогда не оглядывались назад
Плохие браузеры - плохие сайты Затем появились браузеры версии 4.0. Поддержка CSS в IE 4 по сравнению с IE 3 значительно улучшилась, хотя и оставалась неполной и вызывала ошибки. Создатели Netscape 4 ввели в свое творение поддержку CSS в самую последнюю минуту, поэтому она оказалась на уровне двухлетней давности. Справедливости ради следует отметить, что поддержка CSS в Netscape 4 намного превосходила IE 3 (http://www.webreview.com/style/cssl/leaderboard.shtml). Учитывая то, что уже никто не пользуется IE3, но число поклонников Netscape 4 довольно велико, многие владельцы сайтов считают своим долгом обеспечить их совместимость с Netscape 4. Однако, вместо того чтобы обеспечить
Плохие браузеры ~ плохие сайты
101
обратную совместимость, что является хорошим стремлением, они пытаются создать версию сайта, абсолютно идентично отображаемую в Netscape 4 и новых браузерах, что в итоге связывает дизайнерам руки и заставляет их использовать плохой код и устаревшую разметку.
Проклятие устаревшего отображения Имея цель абстрагировать оформление от структуры, CSS не делает предположений о том, как должны быть расположены элементы на экране или какой язык разметки вы собираетесь использовать, несмотря на то что браузеры и другие программы пользователей обычно делают такие суждения. (Некоторые современные браузеры с помощью CSS создают подобные предположения и позволяют таблицам стилей дизайнеров управлять ими.) По умолчанию в большинстве браузеров заголовок будет отображен крупным и жирным с вертикальными отступами сверху и снизу, если иное не описано в таблице стилей. С помощью CSS все это можно изменить. Описанный в CSS-таблице заголовок может быть мелким, выделен курсивом и без отступов, если так захочет дизайнер. Но только не в Netscape 4, который добавляет свое правило отображения для каждого CSS-параметра, использованного дизайнером. Если CSS говорит, что вокруг заголовка не должно быть отступов, Netscape 4 все равно вставит их туда. В процессе работы дизайнеры быстро обнаружили, что при добавлении CSS к коду HTML IE 3 показывает то, что от него требуется, тогда как Netscape 4 делает из их разметки полную неразбериху. В связи с этим некоторые дизайнеры отказались от использования CSS. Другие (включая меня) вначале пытались решить подобные проблемы, используя конструкции вроде вместо
. Это помогало решить проблему в ущерб структуры документа и его семантики, таким образом создавая первые проблемы на пути к будущей совместимости сайта и вызывая множественные сопутствующие неприятности. Автор книги уже давно отказался от практики создания нелогичной структуры всего документа, но многие дизайнеры и разработчики и по-прежнему создают кривой код в угоду совместимости с Netscape 4. Эта распространенная практика ведет к фатальным ошибкам, создает проблемы с удобством использования и мешает попыткам нормализовать и стабилизировать обмен данными в Сети. Системы управления контентом, средства публикации и визуальные Web-редакторы (WYSIWYG), разработанные в эпоху браузеров четвертой версии, заставляют использовать устаревший бессмысленный код, повышая сложность и стоимость процесса приведения сайтов к совместимости с современными
102
" Гнаеа 3. Ш-
спя со о
стандартами и базами данных XML. Над созданием крупных сайтов часто трудятся несколько дизайнеров, каждый из которых использует свои любимые нестандартные теги, из-за чего просто невозможно собрать все данные и отформатировать их для более удобного использования. (Такое положение вещей можно сравнить с библиотекой, в которой книги рассортированы не по алфавитному порядку, а по разным системам каталогизации нескольких людей.) За пределами области графических браузеров такой неструктурный код также делает страницу менее доступной. Для пользователей Palm Pilot, мобильного телефона или программы для чтения текста с экрана является простым текстом, а не заголовком* Таким образом, мы создаем или покупаем систему управления контентом, которая заменяет одни теги на другие, тогда как мы могли бы обойтись использованием одного набора стандартных тегов. Или же мы обрекаем пользователей Palm Pilot, сотовых телефонов и программ для чтения информации с экрана на просмотр нашего запутанного кода и гадание, что бы он мог значить. Во всех этих неурядицах мы могли бы обвинить Netscape 4 и наше собственное желание приспособиться к его ошибкам. Неудивительно, что специалисты Netscape и Mozilla работали четыре года над созданием нового продукта с нуля достойного браузера, на который можно было бы опереться, у них просто не было.
Наследование Создателям Netscape 4 также не удалось осознать всю важность и воплотить в жизнь поддержку наследования - замечательной концепции, лежащей в основе могущества CSS. Ведь CSS облегчает производство сайтов и снижает трафик, позволяя использовать общие правила во всех документах по нисходящей, если дизайнером не будет указано иначе. Например, с помощью CSS можно назначить шрифт, размер и цвет тега документа, и эти же параметры будут применены ко всем дочерним элементам этого тега начиная с
и заканчивая <р>, но только не в Netscape 4. В Netscape 42 + 2 = 2 + 2,а не 4. Некоторые дизайнеры обошли этот недостаток, используя устаревшие правила такого типа: body, td, serif; }
hi, p
{font-family: verdana,
a r i a l , helvetica,
sans-
В этом примере параметры td, hi и р являются ненужными, так как любой современный браузер автоматически присвоит данный стиль всем дочерним структурам элемента.body.
Плохие браузеры - плохие сайты
'
103
Менее находчивые дизайнеры записывали данное правило в несколько строк, еще более «замусоривая» код и увеличивая трафик: body td hi p
{font-family: {font-family: {font-family: {font-family:
verdana, verdana, verdana, verdana,
arial, arial, arial, arial,
helvetica, helvetica, helvetica, helvetica,
sans-serif;} sans-serif;} sans-serif;} sans-serif;}
и так далее. Естественно, трафик возрастал, но задача была выполнена. Другие разработчики сделали вывод, что CSS попросту не работал в Netscape 4 (что имело смысл) или CSS был недоделан (что было неверно, но объяснимо). Помимо перечисленного, у Netscape 4 имелись и другие огрехи в поддержке CSS, однако и описанного нами достаточно для общего представления ситуации. Этого также было достаточно, чтобы заметно отсрочить повсеместное распространение стандарта CSS.
Поведение Помимо неразберихи с CSS, ранние версии браузеров по-разному интерпретировали динамическую модель сайта, реализованную на скриптах. Каждый браузер обладал свойством Объектная Модель (Object Model), определяющим, какой тип поведения можно присвоить каждому объекту на странице. Netscape 4 использовал запатентованную модель document. l a y e r s . В IE 4 применялась собственная модель document . a l l . Ни один из браузеров не поддерживал спецификацию W3C DOM, потому что она еще не была создана. Соответственно, разработчикам, желавшим присвоить странице определенную модель поведения, приходилось делать это двумя способами, чтобы подстроиться под IE 4 и Netscape 4. Поддержка более ранних версий требовала дополнительных уловок. Ранние версии браузеров не могли достигнуть согласия даже относительно используемого языка написания скриптов. Например, когда в Netscape изобрели JavaScript, они обещали сделать его стандартом, доступным для всех. Однако по какой-то причине компания несколько лет удерживала спецификации JavaScript в секрете, считая это своим тайным оружием и коммерческим преимуществом перед конкурентами. (Они полагали, что если Navigator останется единственным поддерживающим JavaScript браузером, то зачем кому-то понадобится создавать сайты для других браузеров. Кстати говоря, спустя некоторое время Microsoft прибегла к такой же тактике со своей технологией ActiveX.) Компания Microsoft в ответ создала свой язык, назвав его JScript. Он работал почти так же, как JavaScript, но все же не совсем так. Новый язык отличался от JavaScript достаточно сильно, чтобы запутать дизайнеров. Одновременно
104
Глава 3. Неприятности се ст
ами
с этим появилась и технология ActiveX, которая, как предполагалось, будет работать во всех браузерах Microsoft на всех платформах. Однако на практике она оказалась работоспособной лишь под Windows. JScript, JavaScript, ActiveX - в свете кросс-браузерности и обратной совместимости дизайнеры оказались в положении, которое можно сравнить с танцами с несколькими партнерами, каждый из которых предпочитает разную музыку.
Время стандартных скриптов пришло В конце концов ЕСМА приняла за стандарт JavaScript, который они скромно назвали ECMAScript (www.ecma.ch/ecmal/STAND/ECMA-262.htm). Затем W3C приняла стандарт DOM. Наконец-то Microsoft и Netscape стали поддерживать одинаковые стандарты! Однако этому предшествовало длительное противостояние, из-за которого многие дизайнеры превратились в экспертов по запатентованным технологиям и несовместимым скриптам, а Web-дизайн стал ассоциироваться с непрекращающейся головной болью. Появились сайты «только для IE», не работающие скрипты определения версии браузера пользователя и отказ от стандартов в пользу запатентованных технологий вроде Flash. Кстати, если вы хотите узнать, как расшифровывается аббревиатура ЕСМА, не пытайтесь найти ответ на запутанном сайте организации (рис. 3.3). ЕСМА означает Европейская ассоциация производителей компьютеров (European Computer Manufacturers Association). Она устанавливает стандарты в мире компьютеров, в отличие от проекта W3C, который называет некоторые технологии всего лишь рекомендациями, а не стандартами.
Сбивающие с толку сайты и ставящие в тупик названия Посмотрите на описание CSS 2 на сайте W3C (рис. 3.11). CSS 2 является мощным средством для дизайнеров, позволяющим облегчить их труд, однако такая мысль не придет в голову при просмотре этой страницы. Эта страница настолько же не впечатляет, насколько и домашняя страничка вашего соседа, которую он сделал за одно утро, воспользовавшись Microsoft FrontPage и редактором картинок за $50. Но, допустим, что вы, не обращая внимания на растущее неприятное чувство, все же решили прочитать и понять приведенные на сайте спецификации,
Civ
сайты ш ставящие е тупим твзшшмшш
105
Рис. 3.11. Описание CSS 2 на сайте W3C (www.w3..Grg/TR/REC-CSS2)
несмотря на непривлекательный внешний вид страницы. Все-таки W3C объединяет ученых, а не дизайнеров, так ведь? Главное - это информация. После двадцати минут чтения, вздыхая и потирая глаза, вы, скорее всего, откроете сайт Internet-магазина и купите Macromedia Flash. По правде говоря, специалисты W3C не только не могут создать хороший графический дизайн, удобный для использования сайт или хорошую структуру информации, но они также и не способны написать руководства, ориентированные на дизайнеров. Сайт W3C является лишь подборкой сухих научных спецификаций и описаний технологий. В статье «Как читать спецификации W3C» (www.alistapart.com/stories/ readspec) Дэвид Эйзенберг объясняет это так: «Когда вы ищете ответы и хотите научиться использовать технологию, вам требуется руководство пользователя или справочник. Но это не является целью спецификаций W3C. Задача
106
Глава 3L Неприятности С0 с
ами
спецификации - объяснить программистам, которые будут внедрять данную технологию в браузеры, какие функции она должна содержать и как их следует внедрять. В этом отличие спецификации от руководства пользователя». По определению, информация на сайте W3C предназначена разработчикам программного обеспечения, а не широкой общественности. Организация не пытается красиво преподнести или доступно объяснить стандарты, которые она создает. Она даже не называет их стандартами, хотя именно ими они и являются. В отличие от коммерческих организаций, W3C не получает прибыль или дивиденды от использования Web-стандартов и даже порицает компанийучастников проекта за подобные попытки (http://www.w3.org/TR/2002/ WD-patent-policy-20021114).
Академичность против экономики Абстрагировавшись от внешнего мира с его жестокой конкуренцией, W3C может сосредоточиться на развитие потенциала Web, а не на конкурентоспособности, а сайт организации лишь подчеркивает ее ориентированность на науку. Однако проблема в том, что дизайнеры, разработчики и владельцы сайтов заботятся скорее о стиле и удобстве использования своих сайтов. Они не станут специально публиковать заумные тексты и смущать посетителей; никогда не разместят самые горячие материалы в потаенных уголках сайта и никогда не станут намеренно создавать сайт с неинтересным, скучным дизайном, чтобы быстрее заставить посетителя нажать кнопку Назад. Поэтому с чисто психологической точки зрения люди, стремящиеся придать своим сайтам как можно больший блеск, вряд ли поверят, что будущее скрывается в материалах непрофессионально выглядящего сайта. Эти люди скорее поверят блестящим презентациям корпораций-гигантов.
Консорциум предполагает, компании предлагают В реальном мире, когда перед нами стоит проблема или задача, обычно мы открываем подходящее программное обеспечение и начинаем решать проблему (задачу). Владельцы сайтов наблюдают за посетителями сайта, просматривая статистику, отформатированную в Microsoft Excel, дизайнеры создают логотипы в Adobe Illustrator, анимацию - в Macromedia Flash, изображения и разметку - в Adobe Photoshop. Для каждой задачи существует определенная категория программ, и в каждой категории есть свой признанный лидер.
Сби
ч названия
107
Несмотря на то что многие дизайнеры-пионеры индустрии создавали свои сайты в программах Notepad или SimpleText, многие их последователи стали полагаться на визуальные редакторы (средства WYSIWYG-разработки). По мере того как создание сайтов становилось все более сложным процессом из-за появления запатентованных языков и несовместимых объектных моделей, такие программы, как Macromedia Dreamweaver и Adobe GoLive, помогали многим дизайнерам создавать прекрасные сайты любой сложности. Каким образом достигалась совместимость с разными браузерами? Нажатием той или иной кнопки. Всю остальную работу проделает сама программа. Эти признанные визуальные редакторы были очень мощными и функциональными. Но до недавнего времени создаваемый ими код имел очень слабое отношение к стандартам. Так же как и сами разработчики, программы типа Dreamweaver и GoLive создавали ориентированные на конкретные браузеры скрипты и нестандартные семантические структуры кода. Dreamweaver MX и GoLive б являются гораздо более совместимыми со стандартами, чем предыдущие версии, хотя они и требуют некоторых навыков разработки сайтов. А откуда берут знания пользователи подобных программ? Они обращаются за примером к привлекательным, хорошо написанным сайтам, служащим руководством пользователя и одновременно фактором, способствующим росту сообщества почитателей Dreamweaver и GoLive. Давайте более подробно поговорим о таких сайтах.
Результат против стандартов По мере того как компании старались предоставить пользователям готовые решения для создания сайтов высочайшего уровня, то же самое происходило и на более низком уровне. Запатентованные средства публикации и базы данных от крупнейших производителей вроде IBM, Sun, Lotus и Microsoft и небольших компаний вроде Allaire (ставшей частью Macromedia) предлагали необходимые функции в то время, когда стандарты типа XML и DOM еще только обсуждались и не были приняты. Для того чтобы обзавестись автомобилем, не обязательно проектировать его с нуля, так зачем же создавать ваш сайт подобным образом? Зарегистрируйтесь, купите его, и, если что-то не работает, это будет исправлено при следующем обновлении. Для дизайнеров, перед которыми проявляются крайние сроки завершения работы, такой подход может быть вполне привлекательным, так же как когда-то имело смысл обращаться с HTML как с дизайнерским инструментом - иными словами, этот подход немедленно решает все пожелания заказчика.
108
Глава 3, Неприятности со стандартами
Таким образом, Web-разработчиков, а тем более Web-дизайнеров, скорее волновал конечный результат, а не Web-стандарты. На каждого дизайнера, посетившего и прочитавшего сайт W3C, было 10, почерпнувших свои знания с сайтов Netscape, Microsoft, Macromedia (рис. 3.12), Adobe (рис. 3.13) и других крупных (и умных) компаний.
Рис. 3.12. Так же как и W3C, Macromedia создает бесценные инструменты для дизайнеров и разработчиков (www.macromedia.com). Однако, в отличие от\Л/ЗС, Macromedia продает и прикладывает усилия для развития их популярности
В отличие от w3.org, эти сайты созданы для потребителей (профессиональных дизайнеров и разработчиков), для укрепления связи между компанией и клиентом, для поддержания брэнда компании. Эти сайты обладают неплохим дизайном, выполненным по корпоративным стандартам, и их руководства написаны человеческим языком и доступны для понимания широкому кругу публики.
цщие с толпу сайты и ставящие в тупим mas
109
Рис. 3.13. Так же как и Macromedia, конкурирующая с ней компания Adobe (www.adobe.com) постоянно общается со своими потребителями, узнавая об их нуждах и потребностях. Компания также старается говорить на языке дизайнеров
Понятно, что подобные руководства повышают привлекательность и популярность продукции компаний. Когда же такие компании упоминают о Webстандартах, это происходит в контексте заявлений, что их продукция более совместима с ними, чем продукция конкурентов. В конце концов, цель таких сайтов - повысить вашу оценку их продукции, купить ее и дождаться появления обновлений в следующем году и также приобрести их. В целом многие профессиональные дизайнеры и разработчики знают достаточно много о запатентованных средствах и технологиях и гораздо меньше о стандартах. Многие из них могут не осознавать, что, связывая себя с определенной линейкой продуктов одной компании, они обрекают себя на постоянные расходы - от необходимости покупки обновлений до обучения, тренингов и консультаций по разным вопросам. Отдельно остановимся на обзоре одного продукта.
110
Глава 3. Неприятности со стандартами
Слова на букву «F» Из всех запатентованных технологий и продуктов, которые пытались продать крупные корпорации, ни один не добился такого успеха, как Macromedia Flash (рис. 3.14). Карьера Flash началась со скромного модуля FutureSplash, позволявшего дизайнерам вставлять в страницы векторную графику и анимацию.
Рис. 3.14. Добро пожаловать в мир Macromedia Flash! Рабочая среда продукта может быть сложной, глубокой и предоставляющей широкие возможности, но Macromedia сделала все, чтобы взять дизайнеров за руку и не отпускать в течение всего процесса их работы "с Flash
Вначале дизайнеры не обратили особого внимания на FutureSplash, но Macromedia сразу распознала потенциал данного продукта. Компания выкупила права на этот модуль и переименовала его в Flash. Затем на базе похожего на JavaScript языка программирования - ActionScript - была создана полноценная среда для создания графики, которая и легла в основу Flash. Macromedia также удалось создать целый культ поклонников Flash, создающих мультфильмы, яркие презентации и поражающие своей функциональностью и динамикой Web-приложения.
Ценность Flash В то время как несовместимые языки программирования и Объектная модель браузеров четвертой версии наводили хаос и панику на просторах Сети, Flash 4
€H0!
41 Jf «р»
111
и ее мощный язык скриптов работали одинаково хорошо и в Navigator, и в IE, и в Opera. И почти так же хорошо на платформах Mac Os, Linux, Unix, как и в Windows. Для многих дизайнеров это означало расставание с HTML и CSS и переход на Flash. Крутящиеся логотипы, утомительные экраны с надписью Загрузка, нескончаемые, надоедливые заставки и вступления - все это поначалу сказалось на нехорошей славе Flash среди пользователей. Однако вскоре дизайнерам надоело играться с возможностями Flash и стали появляться изысканные сайты наподобие One9ine (рис. 3.15), Juxt Interactive (рис. 3.16) и другие образцы умелого использования Flash. Спохватившись, многие дизайнеры и разработчики тоже поспешили вскочить на уходящий поезд Flash, зачастую второпях создавая не такие функциональные проекты, но винить в этом Flash нельзя, так же как нельзя списывать плохую работу неумелого столяра на молоток и гвозди. Flash пожирала Сеть, так же как браузер Microsoft завоевывал рыночную долю Netscape.
112
Гиава 3. Неприятности со стандартами
Несмотря на полную уместность в некоторых проектах, технология Flash был непригодна для многих сайтов, использующих ее. Она также вызывала и вызывает много вопросов относительно доступности и юзабилити, волновавших пользователей, но не замеченных дизайнерами. Одним из наиболее ярых критиков Flash является Джейкоб Нильсен (Jacob Nielsen) из консалтинговой группы Nielsen Norman (http://www.useit.com). В 2002 году Macromedia решила разобраться с этими проблемами, улучшив доступность и удобство использования в обновленном продукте Flash MX и наняв Нильсена в качестве консультанта. (Если бы Microsoft и Netscape проявили бы подобную мудрость и привлекли на работу своих критиков, возможно, мне бы не потребовалось писать эту книгу.)
Снова «а букву «F»
113
В умелых руках Flash значительно облегчает достижение целей, которые было бы трудно создать с помощью стандартного кода, CSS, SVG (Scalable Vector Graphics) и DOM. Что такое SVG. SVG является приложением XML и стандартом векторной графики, поддерживающим анимацию и скрипты и полностью совместимым с другими Webстандартами. Однако во время написания данной книги ни один из браузеров не поддерживал SVG по умолчанию. Для этого требовалось использование дополнительного модуля, так же как и для Flash. (Браузер Amaya консорциума W3C в определенной степени поддерживает SVG, также некоторые разновидности Mozilla могут быть скомпилированы с поддержкой SVG, но эти продукты никак нельзя назвать популярными.)
В настоящее время для создания сложных, запоминающихся приложений и интерфейсов легче это выполнить во Flash, благодаря единой среде разработки и огромной устанавливаемой базе исходных средств. В будущем, возможно, более логично будет решать подобные задачи, используя сочетание XML, XHTML, CSS, ECMAScript, SVG и DOM.
Проблема Flash Основная загвоздка с использованием Flash состоит в непригодности этой технологии для многих сайтов, ориентированных на контент или электронную коммерцию. Тем не менее разработчики продолжают использовать Flash даже в самых неподходящих ситуациях, так как с ее помощью можно профессионально создать внешний вид сайта, благодаря которому заказчик будет думать, что получает добротный сайт за свои деньги. Выполненные во Flash сайты также очень неплохо смотрятся в портфолио дизайнеров и агентств. Для создания новостных сайтов, порталов, магазинов, сайтов различных институтов, сообществ, журналов, каталогов и других, ориентированных в первую очередь на текстовое содержание, по-прежнему лучше использовать XHTML, CSS и другие стандарты. И все же некоторые дизайнеры вместо этого толкают Flash, не потому что он отвечает задачам проекта, а потому, что они умеют обращаться с ним и красивый результат привлекает новых заказчиков. Такая тактика схожа с действиями рекламных агентств, создающих ролики не для рекламы товара, а в надежде, что они получат за них приз на очередном фестивале.
114
Глава.
юи со стандартами
Другие проблемы с Flash Еще одна загвоздка с использованием Flash заключается в том, что некоторые дизайнеры настолько влюблены в эту технологию, что забывают про использование Web-стандартов, если вообще когда-то об этом помнили. В результате появляются сайты на Flash, которые работают только в одном или двух браузерах. Сама по себе технология Flash работает в любом браузере, в котором есть подключенный модуль для ее просмотра, однако некоторые сайты сделаны настолько скверно, что многие пользователи просто не могут получить доступ к Flash-содержимому. Встречаются даже сайты, требующие использования IE только для отображения простой презентации Flash. Это все равно что требовать использовать телевизор Philips вместо Sony только для того, чтобы воткнуть в него антенный кабель. Когда же заказчик просит создать «традиционный» сайт, совместимый со стандартами, эти дизайнеры и агентства используют методы, уже рассмотренные нами, зачастую передавая заказ другой команде начинающих разработчиков, чтобы старшие профессионалы могли сосредоточиться на работе с Flash. Они, видимо, полагают, что Web не развивалась с тех времен, как они обнаружили существование Flash. И тем не менее XML, XHTML, CSS и DOM вовсе не являются простенькими технологиями для начинающих дизайнеров. Это мощные и сформировавшиеся стандарты, способные донести до пользователя любую задумку разработчика. Я не выступаю против агентств, специализирующихся на создании красивых, полнофункциональных проектов Flash. Просто я хотел бы увидеть такое же отношение и к остальным 90% методов дизайна и разработки.
Плохое слово «совместимость» Еще одним препятствием на пути к всеобщему принятию Web-стандартов является ошибочное предположение, что стандарты каким-то образом ограничивают творческий процесс, связывают руки дизайнерам или не позволяют создавать сайты, равноценные проектам, выполненным с помощью запатентованных технологий. Откуда же появилось это заблуждение? Возможно, виной этому стали дизайнеры, попробовавшие творить по стандартам для браузеров версии 4.0 и разочаровавшиеся в результате. Но ведь дни браузеров с неполной поддержкой стандартов давно канули в лету. Пора пересмотреть эти взгляды.
Плохие слово «совместимость»
115
Сила языка влияет на восприятие Возможно, виной этому стала фраза «Web-стандарты». Члены проекта Web Standards посчитали данную фразу подходящей для пропаганды стандартов. Нам показалось, что благодаря этому словосочетанию нам удастся донести до разработчиков программного обеспечения, дизайнеров и пользователей всю важность необходимости внедрения этих технологий. Слово «рекомендации» для этого не подходило, а «стандарты» кажутся более уместным термином. У нас не было денег, одни лишь надежды, и тем не менее мы добились успеха. Сегодня компании вроде Netscape, Microsoft, Adobe и Macromedia борются за совместимость со стандартами, это стало ожидаемой и почти обязательной опцией любого программного обеспечения - так же как полный привод в автомобилях. Но, несмотря на то что многие компании поняли это, не все дизайнеры и разработчики последовали их примеру. Некоторые путают Web-стандарты с неким набором правил и рекомендаций по дизайну. Таким специалистам необходимо понять, что Web-стандарты не имеют никакого отношения к графическому дизайну и правилам создания внешнего вида сайта. Если же дело не в выражении «Web-стандарты», может быть виновато слово «совместимость». Дизайнеры хотят, чтобы их проекты были «совместимы» лишь с их творческим замыслом, а не с набором каких-то технических правил и регулировок. Нужно объяснить им, что эти правила не имеют никакого отношения к внешнему виду и облику сайта, они созданы лишь для того, чтобы браузеры пользователей могли отобразить всю ту красоту, о которой беспокоятся дизайнеры. Заказчики в свою очередь также хотят, чтобы их сайты отвечали настроениям клиентов и соответствовали не каким-то воображаемым стандартам внешнего вида сайтов, а стилю компании, поставленным маркетинговым целям. Им также не помешало бы узнать, что благодаря Web-стандартам их сайты станут лишь более доступными для разных браузеров и платформ.
Проблема вдохновения Возможно, дизайнеров и их заказчиков оттолкнул недостаток визуального дизайна на некоторых сайтах, посвященных Web-стандартам, или хвастовство других, часто даже более некрасивых сайтов, об их соответствии одному или нескольким спецификациям W3C. Однако дело здесь не в самих стандартах, а дизайнерах, создавших эти сайты. Конкурс Wthremix (рис. 3.17), начавший работу в декабре 2002 года, был призван заполнить этот недостаток эстетики. Организаторы конкурса так объяснили его цель: «W3C создает мощные стандарты и руководства, благодаря которым
116
Тпв
-i €© стандартами
развитие Web становится более рациональным и дружелюбным для пользователей. С помощью XML, CSS, XHTML, DOM и рекомендаций по доступности вроде Web Accessibility Initiative мы можем создавать более мощные сайты, одинаково хорошо работающие на компьютерах всех пользователей. Однако W3C состоит не из дизайнеров, думающих о пользователях, не из разработчиков, художников и писателей, а из настоящих зануд». В результате все ценные сведения W3C заключены в рамки скучнейшего, безликого сайта. Целью нашего конкурса была попытка выяснить, возможно ли сайт W3C преобразовать в красивый, хорошо структурированный и более удобный для использования и понимания продукт. WThRemxi ~ Design and Code Challenge
Плохое слово «с*
цяость»
117
Конкурс Иными словами, конкурс Wthremix предлагал дизайнерам и программистам создать свой вариант домашней страницы W3C. Разработать интуитивно понятную систему навигации и разметки, организовать информационное наполнение с учетом его использования посетителями и создать достойный внешний вид сайта, чтобы показать возможности Web-стандартов.
Другие проблемы Некоторые специалисты не доверяют стандартам из-за негативного, опыта, полученного в результате использования первой версии Netscape б, имевшей ошибки, и IE 6, некоторые ошибки в котором не были исправлены и спустя год после выпуска. Некоторые люди, вдохновленные перспективами Web-стандартов, переделали свои сайты из HTML в XHTML лишь для того, чтобы обнаружить, что созданная разметка смотрится совершенно по-разному в Netscape 6+, Mozilla или IE 6. Мы объясним причины этого в главе 11 и предложим простые, быстрые решения для устранения подобных неприятностей. Но, если вы не знаете об этих простых приемах, очевидно, что у вас появится некоторое недоверие к стандартам и вы можете захотеть вернуться к проверенным методам, которые так хорошо отработаны в старых браузерах. Не надо сдаваться. Несмотря на то что невежество и предубеждение широко популярны не только в Web-дизайне, но и в других областях человеческой деятельности, Web-стандарты никуда не уйдут и наша книга поможет вам найти с ними общий язык.
П
режде чем двигаться дальше, следует преодолеть негативные эмоции, возможно возникшие при чтении предыдущих глав, когда вы знакомились с процессом возникновения и развития стандартов и следили за ростом их популярности. Несмотря на непонимание, сдерживающее их распространение, на некоторых фронтах Web-стандарты все же одержали победу. В этой главе мы познакомимся с самым популярным после HTML стандартом: XML - Extensible Markup Language (Расширяемый язык разметки). XML является всеобъемлющим форматом данных, используемым во всем мире для решения сложных задач. Мы узнаем, как XML помогает программным продуктам оставаться жизнеспособными на быстро меняющемся рынке, решает проблемы обработки данных и как он в конечном итоге привел к всплеску нового поколения межплатформенных Web-приложений и служб. Мы также увидим, как благодаря XML ослабела вражда и появилось некоторое сотрудничество между конкурирующими создателями браузеров, как программы для создания сайтов научились поддерживать стандарты, а персональные сайты передовых дизайнеров и разработчиков способствовали распространению CSS, XHTML и пропаганде соответствия рекомендациям доступности Web Accessibility Initiative (WAI) и Section 508. Каждая из этих историй успеха имеет одинаковую подоплеку: Web-стандарты становятся все более популярны благодаря их высокой работоспособности. Чем шире распространение стандартов, тем лучше они работают и тем проще станет наш труд.
Универсальный язык XML В главе 3 мы обсудили, как скверно реализованная поддержка стандартов в ранних браузерах привела к недоверию дизайнеров к стандартам, что сказалось на
Универсальный?
/11
119
росте популярности устаревших методов разработки и использования Flash вместо CSS, HTML и JavaScript. После прочтения этой главы у вас могло сложиться мнение, что Web-стандартам предстоит нелегкая борьба для достижения всеобщего принятия и верного использования. Как же обстоят дела с XML? Стандарт Extensible Markup Language (XML) был принят в феврале 1998 года и завоевал индустрию Web-дизайна штурмом (рис. 4.1). Впервые в истории был предложен универсальный, адаптируемый формат для структуризации документов и данных не только в Сети, но и за ее пределами.
Сравнение X M L и H T M L Несмотря на то что XML и HTML созданы по одной технологии и XML также использует теги, атрибуты и значения для форматирования структурированных документов, XML имеет довольно значительные отличия. HTML является простым языком для создания разметки Web-страниц. Он обладает фиксированным числом тегов и некоторым расплывчатым набором правил. В HTML следует закрывать некоторые теги, нельзя закрывать другие и по желанию можно закрывать или не закрывать остальные. Такая простота позволяет практически любому создать свою Web-страницу, знают ли они что делают или нет. Естественно, это было одной из идей создания HTML. Идея была превосходна на первых стадиях развития Web, когда сайты состояли из простого контента, большего и не требовалось. Но в современных сайтах, где страницы зачастую формируются с помощью средств публикации, а информация передается из базы данных на Web-страницу или на беспроводное устройство и принтер, скудность возможностей HTML препятствует круговороту данных. Легко преобразовать текст в HTML, но весьма проблематично преобразовать данные в формате HTML в какой-либо другой вид. Помимо того, HTML является лишь простым языком форматирования. Он не содержит сведений о контенте, что опять же ограничивает возможность использования данных в различных областях. И, естественно, HTML предназначен только для использования в Web. Основанная на XML разметка, в свою очередь, обладает устойчивыми правилами и может применяться далеко за пределами Сети. При разметке документа в XML он не просто готов к демонстрации в Web, он заключен в теги, которые распознает любая среда с поддержкой XML.
Дети одного родителя XML можно назвать языком для создания других языков. Придерживаясь правил XML, библиотекари легко могут создавать специфические XML-теги,
120
Рис. 4.1. «Смотри, XML повсюду». Запустите поиск файлов в любом Macintosh, и вы обнаружите сотни XML-файлов, многие из которых являются компонентами различных приложений. XML является Web-стандартом, шагнувшим далеко за пределы Web
облегчающие каталогизацию книг. Музыкальные компании могут создавать XML-разметку, теги которой будут включать в себя название артиста, альбома, композитора, продюсера, данные об авторских правах и отчислениях и так
; язык ЖШк
121
далее. Композиторы могут с помощью модифицированного языка XML MusicML - организовать свои сочинения. (В дальнейшем для краткости вместо выражения «создать разметку XML» мы будем говорить «создать XML».) Такие модифицированные XML-языки называются приложениями, так как все они используют XML и совместимы друг с другом. Таким образом, программа-обработчик XML может обрабатывать все эти приложения, а они могут легко обмениваться данными друг с другом. Например, данные из базы данных XML музыкальной компании могут легко переместиться в каталог библиотеки без необходимости использовать ручной труд и без риска появления неточностей при переносе.
Необходимая составляющая профессионального и потребительского ПО Возможность форматирования, распознавания и обмена данными сделала XML таким же популярным и вездесущим, как Coca-Cola в своей отрасли. XML применяется не только в Internet или корпоративных базах данных, он стал общим языком как для программ, работающих с базами данных, например FileMaker Pro, а также для других программных продуктов, таких как Microsoft Office и OpenOfflce. Многие конфигурационные файлы этих программ представляют собой XML-файлы. Операционная система Macintosh OS X, созданная на базе Unix, хранит многие параметры конфигурации в файлах XML. Программы Quark Xpress 5.0 и Adobe InDesign 2.0 позволяют импортировать и экспортировать XML и поддерживают создание шаблонов на базе XML. Визуальные Web-редакторы вроде Macromedia Dreamweaver MX и Adobe GoLive 6 также работают с XML, что значительно облегчает обмен данными между Web-разметкой, базой данных и другими приложениями. Осознав все возможности XML, многие разработчики программного обеспечения создают свои продукты на этом языке. Программа Macromedia Dreamweaver MX состоит из множества XML-файлов, доступных для конечного пользователя (рис. 4.2-4.4), благодаря чему можно модифицировать само приложение путем изменения этих файлов (www.alistapart.com/stories/dreamweaver). Изменение конфигурации Dreamweaver таким способом и последующая продажа программы коллегам стала даже чем-то вроде нового типа домашнего бизнеса. В программном обеспечении для обычных пользователей также все чаще используется XML. Например, Personal Information Manager для PC, Mac или PDA позволяет открывать и сохранять файлы XML, или его можно научить этому с помощью продуктов вроде AElfred XML для Palm Pilot (wwwxml.com/pub/r/216).
122
Глава 4. XML завоевывает тшр
Рис. 4.2. Популярное приложение для создания Web-сайтов Dreamweaver MX состоит из множества конфигурационных файлов XML...
Когда вы делаете снимок цифровой фотокамерой и она сохраняет такие параметры, как дату, информацию о цветах и его разрешение, скорее всего, для этого используется XML. Когда ваш приятель отправляет вам по электронной почте фотографии с курорта, скорее всего, он отправляет отформатированные с помощью XML данные вместе с великолепными видами на закат.
•
;
'
'
'
• '
-
-
-
:
•
1
2
3
Рис. 4.З. ...а также из GIF, HTML и JavaScript. Так же как и файлы Web-сайта, компоненты Dreamweaver рассортированы по каталогам
Даже приложения для управления и хранения фотографий вроде iPhoto (рис. 4.5) распознают XML. При печати фотографии получаются должным образом благодаря настройкам, хранящимся в виде данных XML в операционной системе Macintosh OS X.
Более популярно, чем MTV Почему язык XML завладел умами огромного числа производителей и нашел применение в их продукции? XML совмещает в себе стандартизацию с расширяемостью (широкими возможностями модификации), возможностью преобразований (способность преобразовывать данные из одного формата в другой) и практически неисчерпаемые возможности обмена данными между XML-приложениями. Являясь открытым стандартом, не ограниченным всевозможными патентами, XML сметает с пути устаревшие, запатентованные форматы с ограниченными возможностями. W3C не взимает с вас комиссионных, когда вы используете XML на своей Web-странице или в программном продукте. Более того, принятие и повсеместное использование XML являются жизненно необходимыми. Чем больше компаний будут использовать XML в своих продуктах, тем проще станет обмен данными между приложениями различных производителей.
Не панацея, но достаточно хорошее средство Мы не утверждаем, что XML является панацеей от всех проблем программного обеспечения. Мы также не утверждаем, что любое приложение, доступное на рынке, поддерживает XML, хотя число таких потребительских и профессиональных программ продолжает расти. Мы даже не утверждаем, что все ПО,
124
Глава 4, XML. завоевывает мир
Рис. 4.4. Продвинутые пользователи Dreamweaver могут изменять эти файлы для модификации приложения. На этом рисунке показано, как пользователь изменяет используемые «горячие» клавиши, редактируя файл menus.xml
поддерживающее XML, делает это безукоризненно. Безукоризненно или нет, однако XML произвел переворот в индустрии создания программного обеспечения. Даже производители ПО, не поддерживающего XML, стали считать, что это нужно исправить. В апреле 2002 года разочарованная падением продаж и раздробленным рынком группа провайдеров интерактивного телевидения и
125
смежных технологий объединилась под именем iTV Production Standards Initiative. Целью союза стала поддержка стандарта XML для облегчения создания производителями единого интерактивного контента и возможности распространения его на все популярные платформы персональных компьютеров (www.allnetdevices.com/developer/news/2002/04/09/itv_firms.html). Где-то мы уже это слышали, не так ли? Именно это говорили участники Web Standards Project о стандартах W3C во времена войны браузеров в девяностых годах.
126
Глава 4. KML завоевывает тшр
Пять причин популярности X M L На просторах Internet XML продолжает набирать популярность среди ГГ-профессионалов, разработчиков и специалистов по контенту, которые работают с большими объемами данных в крупных корпоративных и некоммерческих системах. Среди причин, благодаря которым выбор падает на XML, можно перечислить следующие пять: • как и ASCII, XML является единым, универсальным форматом файлов, хорошо совместимым с другими; • в отличие от ASCII (или HTML), XML позволяет не только хранить данные, но и информацию о самих данных (метаданные), что облегчает некоторые функции, например поиск; • XML является расширяемым языком, способным к адаптации под различные нужды. Также XML позволяет создавать другие языки на его основе для выполнения специфических задач, например для объединения данных и обеспечения работы Web-служб; • язык XML создан на основе правил, которые обеспечивают целостность данных при их переносе между базами данных, преобразовании в другие форматы или использовании другими XML-приложениями; • с помощью дополнительных XML-протоколов и вспомогательных XMLязыков XML-данные можно автоматически преобразовывать в многочисленные форматы - от Web-страниц до оптимизированных для печати документов. О такой возможности разработчики могли лишь мечтать до появления XML.
Неисчерпаемый кладезь изобретений Ниже приведены четыре примера и вытекающие из них выводы, иллюстрирующие широту использования XML в Сети и демонстрирующие, как с помощью непрекращающегося возникновения новых XML-языков и протоколов становится очень легко решать многие задачи, над которыми некогда бились лучшие специалисты.
Я з ы к преобразований X S L T Язык преобразований XSLT (Extensible Stylesheet Language Transformations, www.w3.org/TR/xslt), основанный на XML, позволяет извлекать и сортировать XML-данные и форматировать их как HTML или XHTML, после чего они становятся готовы к просмотру в Web. При необходимости XSLT может преобразовать
127 данные в формат PDF, текстовый файл или использовать их для постоянного обновления некой таблицы, диаграммы или других изображений в формате Scalable Vector Graphics (SVG). С помощью XSLT можно выполнять все эти задачи одновременно. Более подробные сведения по данному вопросу можно найти в руководстве Дэвида Эйзенберга (David Eisenberg) "Using XML" (www.alistapart.com/stories/usingxml).
Механизм описания ресурсов RDF Механизм описания ресурсов RDF (Resource Description Framework, www.w3.org/ RDF), основанный на XML, предоставляет связанную структуру для приложений, обменивающихся метаданными в Web. Согласно архитектуре Web, кото.рую разрабатывает и продвигает W3C, RDF представляет собой связующее звено между XML-документами и высокоуровневыми средствами, обеспечивающими поиск и навигацию. Описание ресурса в RDF - это совокупность утверждений о свойствах ресурса. Ресурсами могут быть целые Web-страницы, части Web-страниц и даже целый сайт. Ресурсом может быть что-то совершенно не связанное с Web, например книга. Иными словами, RDF описывает, собирает и объединяет новости, программное обеспечение и все типы контента. RDF также облегчает взаимодействие и обмен данными между разными типами коллекций (например, коллекции музыки и фотографий). RDF все чаще используется в некоторых приложениях. Например, если открыть каталоги браузера Mozilla, можно найти файлы RDF (и CSS), необходимые браузеру для работы. Сейчас в RDF для записи метаданных применяется синтаксис XML. Но это не означает, что RDFописания и впредь будут записываться только в XML-форме. Технология RDF развивается. Rich S i t e S u m m a r y Rich Site Summary (RSS), http://backend.userland.com/rssO92, - технология простого описания информационного наполнения сайта - является XML-языком для описания Web-сайтов. Он был разработан Дэном Либби (Dan Libby) для портала My Netscape компании AOL/Netscape. Пбсле потери интереса AOL к этому проекту в апреле 2001 года продвижением RSS занялась компания Дэйва Вайнера (Dave Winer) UserLand Software Company. Сегодня RSS используют тысячи сайтов, что сделало RSS одним из наиболее популярных форматов XML в Web (рис. 4.6). RSS нашел широкое применение в новостных лентах сайтов. По сути, новостная RSS-лента представляет собой обычный XML-файл, в котором указана некоторая справочная информация о той или иной новостной статье: заголовок, время и дата, автор, краткое содержание.
128
Глава 4. XML завоевывает мир
Рис. 4.6. Веблоги на сайте Splorp.com (www.splorp.com) используют технологию RSS, что позволяет легко использовать содержимое сайта
XML-RPC
Еще одна разработка UserLand Software - XML-RPC, www.xmlrpc.com, - является спецификацией и набором правил, позволяющим приложениям, работающим на разных платформах и в разных средах, осуществлять вызов процедур через Internet. Помимо всего прочего, XML-RPC можно использовать для автоматизации задач по управлению сайтом и в программах Web-публикации. Тело запроса на удаленный сервер построено на XML. Процедура выполняется на сервере, и возвращаемое значение также форматируется в XML. Параметры процедуры могут быть скалярными величинами, числами, строками, датами и.т.д. Мы не будем очень подробно останавливаться на этой, еще развивающейся технологии.
Средства Web-публикации Основываясь на своем опыте, мы можем заявить, что задачи, выполняемые описанными выше платными технологиями, благодаря XML-приложениям в умелых руках могут быть решены бесплатно. В свою очередь, многие разработчики создают подобные приложения, чтобы облегчить жизнь своих коллег дизайнеров, разработчиков и авторов. Например, программа для Web-публикаций (CMS) под названием Movable Туре (www.movabletype.org), используемая сообразительными или не интересующимися техническими деталями авторами для поддержания и обновления Webжурналов, новостных сайтов и блоков, использует XML-RPC для облегчения управления сайтом и XML RSS для автоматического распределения контента между другими, поддерживающими XML сайтами (рис. 4.7). Тогда как Movable Type позволяет пользователям публиковать свои творения в Сети, XML позволяет Movable Type просто существовать.
Универ?
:1L
129
Movable Type является лишь одной из многих программ, использующих XML для управления контентом. В качестве других примеров подобных продуктов можно назвать Radio UserLand (рис. 4.8), UserLand Frontier (http:// frontier.userland.com) и Blogger от компании Руга Software (www.blogger.com). Популярность таких продуктов неуклонно растет, как и число пользователей, обнаруживших всю простоту и удовольствие, получаемое от публикации своих мыслей и творений в Internet. Таким образом, по мере распространения средств публикации увеличивается и использование XML - не только за счет разработчиков, но и благодаря пользователям, которые даже не слышали о стандарте XML. Лидеры рынка также не отстают от менее крупных производителей ПО в плане поддержки этого стандарта. Flash MX позволяет импортировать,
130
Глава 4* К
-iaer
экспортировать и обрабатывать XML, что вносит дополнительные преимущества основанной на стандартах технологии обмена данными к и без того широким возможностям программного продукта Macromedia. Благодаря XML разработчики могут использовать одни и те же XML-данные для Flash и обычной версии сайта и экономить время и расходы, одновременно оптимизируя использование ресурсов.
К вашим услугам Логика XML также ведет к развитию рынка Web-услуг. Основанный на XML упрощенный протокол доступа к объектам Simple Object Access Protocol (www.develop.com/soap) облегчает обмен информацией в децентрализованной, независимой от платформы сетевой среде; доступ к службам, объектам и
XML»nptiложения и ваш сайт
131
серверам, а также кодирование, декодирование и обработку сообщений. Возможности XML позволяют SOAP работать с разными платформами и продуктами. SOAP - единственный протокол в мире Web-служб (www.w3.org/2002/ws) и категория, которой желают завладеть такие крупные компании, как IBM (www106.ibm.com/developerworks/webservices) и Microsoft (www.microsoft.com). Небольшие независимые разработчики предлагают свой вариант существования децентрализованных Web-служб без монополизма доминирующей компании. Вот какое определение Web-службам дает Дэвид Росэм (David Rosam): «Web-службы - это многократно используемые программные компоненты на базе XML и связанные протоколы, позволяющие осуществлять взаимодействие между бизнес-системами практически без затрат. Их можно использовать для внутренних целей - для быстрой и недорогой интеграции приложений, а также сделать доступными для потребителей, поставщиков или деловых партнеров». Источник - www.dangerous-thinking.com/stories/2002/ 02/16/webServiceDefined.htmL Благодаря своим возможностям XML является движущей силой большинства протоколов Web-служб. До тех пор пока XML будет доступен для всех, нет необходимости, чтобы в этой области доминировала одна (пусть даже очень могущественная) компания.
XML-приложения и ваш сайт XML является языком, на базе которого созданы стандарты Scalable Vector Graphics (www.w3.org/TR/SVG) и Extensible Hypertext Markup Language (www.w3.org/TR/2002/REC-xhtmll-20020801). Художники, сохраняющие логотопы заказчиков в формате SVG, и дизайнеры, создающие XHTML-страницы, используют XML, знают они об этом или нет. Общие для всех форм XML правила помогают этим форматам работать совместно, а также взаимодействовать с другими типами XML - например, с XML данными в базе данных. Графика SVG может быть автоматически изменена в ответ на запрос со стороны посетителя либо может постоянно обновляться в соответствии с передаваемыми в XML данными. Например, сайт местной телевизионной компании может использовать эту возможность для прямой трансляции любой передачи, скажем, для информирования зрителей о дорожных пробках. По мере исчезновения одной пробки и возникновения другой эта информация будет поступать на сервер, форматироваться в доступный для чтения формат XHTML и преобразовываться в карту дорог в формате SVG. В то же время данные могут передаваться и другим
132
Глава 4* Xf
аетшир
компаниям с помощью RSS или RDF или посредством SOAP - в администрацию города, чтобы она смогла принять адекватные меры и решить проблему. Несмотря на то что SVG-графика основана на XML, ее можно создать и в таких продуктах, как Adobe Illustrator 10 (www.adobe.com/products/illustrator/ main.html). Так же как и векторная графика Flash, изображения в формате SVG могут быть масштабированы без потери качества, при этом расход трафика будет небольшим. Управлять изображениями SVG, так же как и другими стандартными компонентами Web-страниц, можно с помощью ECMAScript в модели DOM. Помимо этого, текстовое содержимое SVG-изображения всегда остается доступным и может быть выделено курсором, несмотря на то, как оно деформировано или масштабировано.
Все еще в яслях В настоящее время вся мощь формата SVG несколько ограничена из-за необходимости использования дополнительного модуля (www.adobe.com/svg), так же как и для просмотра Flash. Этот модуль также пока недостаточно стабильно работает на всех платформах и браузерах. Когда все браузеры будут обладать встроенной поддержкой SVG, возможность добавления визуальных интерактивных элементов в Web-страницы возрастет многократно. Поддержка браузерами XML также пока находится на начальном уровне. Несмотря на то что XML применяется в базах данных, различных приложениях и Web-службах, лишь несколько браузеров могут похвастать правильным отображением файлов XML, а искусством создания XML-приложений овладела лишь малая часть дизайнеров и разработчиков. Сообщество разработчиков решило последнюю проблему, создав на базе XML различные языки, протоколы и продукты, которыми мы можем пользоваться. W3C решила проблему поддержки XML браузерами, создав стандарт XHTML (который мы рассмотрим в главе 5), сочетающий мощь XML и простоту HTML.
Совместимость от рождения Так как все приложения XML произошли от одного стандарта и подчиняются одинаковым правилам, они совместимы друг с другом, что позволяет разработчикам более легко манипулировать одними данными XML посредством других для разработки новых XML-приложений, не опасаясь несовместимости.
Нованэра»:
133
Повсеместно используемый в современных профессиональных и потребительских приложениях и в Web-дизайне, жизненно необходимый для рынка Web-служб и совместимый с будущими продуктами, XML позволяет решить проблему устаревания, описанную в главе 1. Успех XML превзошел все самые смелые ожидания, так как эта технология позволяет решить самые страшные кошмары несовместимости и найти выход из технологического тупика. Производители программного обеспечения, не желающие оказаться в числе ретроградов и потерять часть своих клиентов, понимают, что создание продуктов, поддерживающих XML, поможет им удержаться на рынке. Руководители компаний и IT-специалисты, более не намеренные использовать устаревшие запатентованные средства баз данных для хранения ценных сведений, могут легко перейти на XML. Небольшие независимые разработчики могут легко конкурировать с крупными фирмами, используя мощь XML, в основе применения которого лежит интеллект, а не бюджет. В сегодняшнем перенасыщенном данными мире старые запатентованные технологии больше не справляются со своей ролью, если они когда-то вообще делали это. Правила игры задает XML, и в игру приглашены все желающие. XML является Web-стандартом, который работает. И это является отличительной способностью любого хорошего стандарта - он работает, выполняет задачи и хорошо взаимодействует с другими стандартами. Это можно называть возможностью взаимодействия или просто совместной работой компонентов, однако, как бы вы это ни называли, XML является огромным шагом вперед по сравнению с устаревшими запатентованными технологиями прошлого. Под чарами Web-стандартов даже конкуренты научились сотрудничать.
Новая эра сотрудничества Как мы уже упоминали сотни раз, браузеры от Microsoft, Netscape и Opera в конце концов стали поддерживать одинаковые стандарты. Неожиданным результатом технологического сотрудничества стала корректная совместная деятельность конкурентов в другой области. JB июле 2002 года компания Microsoft предложила рабочей группе W3C по HTML на рассмотрение набор тестов и тестовых средств HTML для поддержки W3C HTML 4.01 Test Suit Development (http://lists.w3c.org/Archives/Public/www-qa-wg/ 2002Jul/0103.html). Это предложение поступило от Microsoft, Openware Systems, Inc. и America Online, Inc., владельцев Netscape и Mozilla. Opera Software Corporation и команда проекта Web Standards также изучили данное предложение.
134
Глава 4, XMi. за
; ает ттр
Тестовая среда и спецификации Тестовые среды W3C позволяют производителям браузеров определить, совместим ли их продукт со стандартами или требует доработки. Для HTML 4.01 (языка разметки, также являющегося основой для XHTML 1.0) не существовало подобной среды. В связи с этим производителям браузеров, желающим, чтобы их продукт соответствовал стандарту, не оставалось ничего, кроме как скрестить пальцы и молиться, чтобы это произошло. , Помимо этого, разработчики стандартов оказались в сложной ситуации. Как можно быть уверенным в том, что создаваемые тобой технологии могут решить проблему и сыграть свою роль, если отсутствует возможность убедиться в этом на практике? Это все равно что разработать автомобиль лишь на бумаге, не имея мастерской для воплощения задумки в жизнь. В интересах самих создателей стандартов и производителей браузеров такую тестовую среду следовало бы создать давным-давно.
Создание тестовой среды Когда компания Microsoft приняла решение исправить положение и создать тестовую среду, она предложила поучаствовать в этом и своим конкурентам, и сторонней группе специалистов (WaSP). И конкуренты, и WaSP сразу же согласились. Получившийся продукт и все его производные были полностью свободны от каких-либо патентов и принадлежали только W3C. Ни Microsoft, ни другие компании даже не пытались заработать на этом деле. Обычно Microsoft не слишком заботится о помощи AOL/Netscape, так же как и эта компания не сильно переживает за Microsoft или Opera. И все эти компании уж точно не стали бы заниматься общим делом, чтобы потерять свои деньги, участвуя в бесполезных совместных проектах. И тем не менее они все вместе собрались и работают над общим делом, препарируя не какую-то очередную новую запатентованную технологию, а старый знакомый HTML 4. Не замеченное прессой, это тихое событие на самом деле стало очень значимым. Прошли те дни, когда производители браузеров думали только о своем продукте и собственных технологиях в ущерб Web-стандартам и пользователям, надеясь таким образом вытеснить конкурентов с рынка. Естественно, производители браузеров продолжают внедрять новшества в свои продукты и надеются, что потребители выберут именно их браузер, а не конкурирующей фирмы. Однако возникшее у них желание работать совместно показывает, насколько глубоко они прониклись пониманием необходимости использования
Новая эра сотрудничества
135
и поддержки Web-стандартов и совместимости и как сильно изменилось положение дел в этой индустрии со времен войн браузеров (1996-1999).
Не верьте слухам Время от времени в журналах и газетах появляются статьи, основанные на некоторых изменениях на рынке, о том, что войны браузеров возобновились. Например, такое произошло в июне 2002 года, когда компания AOL перевела своих пользователей CompuServe с браузера, основанного на IE, на браузер на базе Mozilla/Netscape. «Изменения на рынке Web расстраивают разработчиков», «Войны браузеров 2» - такие заголовки появились в прессе. Подобные сообщения возникли в газетах и журналах и несколько месяцев спустя, когда AOL перевела своих пользователей Mac OS X на браузер на базе Gecko. Однако верить этим слухам не стоит. В сегодняшнем мире редакторы газет должны заботиться о рейтингах и продажах, если они хотят остаться в своих креслах. Различные кризисы и конфликты всегда привлекают больше внимания, чем простые разумные статьи, этим и пользуются многие таблоиды. Независимо от тенденций на рынке войны браузеров остались в прошлом и ни один редактор не сможет вновь воскресить их. Теперь Web будет строиться на основе стандартов, поддерживаемых всеми популярными браузерами. Борьба между AOL/Netscape и Microsoft, естественно, будет обостряться время от времени, однако она переместилась из области браузеров в другую, не интересующую нас арену (исключением остается FrontPage, о которой мы поговорим чуть позже).
Взросление W e b Конечно, не являясь таким же важным и фантастичным, как план ООН по установлению мира во всем мире, набор тестов HTML, скромно представленный Microsoft и ее конкурентами, знаменует собой значительные изменения в дальнейшем развитии Сети. Когда вечные конкуренты сотрудничают подобным образом, это является признаком, что всемирная Сеть выросла и повзрослела. То же самое происходит и в других развитых индустриях. К примеру, звукозаписывающие компании, ненавидящие друг друга, мирно работают над созданием нового стандарта или бок о бок борются с возникающей для их бизнеса угрозой (например, пиринговые Сети обмена музыкой вроде Napster). To, что Microsoft, AOL/Netscape и Opera могут работать вместе, указывает на взросление Сети. То, над чем они трудятся, повествует нам о том, почему произошло взросление. Всемирная сеть выросла благодаря стандартам, описанным в нашей книге.
136
Глава 4, XML завоевывает шир
В ближайшие годы можно ожидать, что подобное сотрудничество над поддержкой стандартов будет повторяться. Мы также можем быть уверены, что сайты, созданные по стандартам, будут работать как в современных браузерах, так и в программных продуктах через 10 лет. Производители браузеров доказали нам, что они намерены поддерживать стандарты и создавать совместимые продукты. Компания Netscape также подтвердила свою преданность стандартам, финансируя небольшую группу разработчиков, задачей которых является улучшение поддержки стандартов в браузере и Web-сайтах и создание кросс-браузерных решений на базе стандартов.
Web-стандарты и средства авторской разработки Созданные в самом разгаре войн браузеров наиболее популярные и мощные профессиональные визуальные Web-редакторы Macromedia Dreamweaver и Adobe GoLive изначально решали проблему несовместимости браузеров путем создания отдельного кода для браузеров версии 3.0 и 4.0. Когда браузеры использовали нестандартные, неверные теги HTML, Dreamweaver и GoLive давали им то, что они хотели. Если каждый браузер использовал собственную несовместимую с другими объектную модель документа и собственные запатентованные скрипты, Dreamweaver и GoLive создавали соответсвующие коды. Таким образом, Dreamweaver и GoLive были виноваты не более чем дизайнеры, создававшие такой же код вручную. Как описано в главе 2, дизайнеры и разработчики были вынуждены так работать, поскольку стандарты находились на стадии разработки, а браузеры практически не поддерживали их. Такая стратегия была оправданной в те дни, однако использовать ее в настоящее время совершенно недопустимо. По мере того как браузеры учились поддерживать Web-стандарты, Dreamweaver и GoLive тоже следовало бы заняться этим. И сегодня они также поддерживают их.
Группа специалистов по D r e a m w e a v e r В 2001 году внутри проекта Web Standards была организована группа специалистов по Dreamweaver для взаимодействия с разработчиками Macromedia. Ее целью стала оптимизация Dreamweaver для написания совместимых со
Web-ста^
тшт
137
стандартами кодов создаваемых в этом приложении сайтов. Историю деятельности этой группы можно найти по адресу www.webstandards.org/act/ campaign/dwtf. Среди главных задач группы, определенных Рэйчел Эндрю (Rachel Andrew) и Дрю МакЛиллан (Drew McLellan), были следующие: • программа Dreamweaver должна создавать только не содержащий ошибок код со стандартными тегами и атрибутами; • Dreamweaver должна предоставлять выбор между XHTML и HTML, использованием в каждом случае переключателя DTD (DTD, или Document Type Definition, сообщает браузеру, какой тип разметки был использован для страницы.); • Dreamweaver должна считаться с DTD и создавать разметку и код в соответствии с ним; • Dreamweaver должна позволять пользователям легко создавать Web-страницы, доступные всем; • Dreamweaver должна правильно отображать CSS 2, чтобы подобные страницы можно было обрабатывать в Dreamweaver; • Dreamweaver не должна повреждать правильную разметку CSS вставкой стилей без ведома пользователя; • пользователи Dreamweaver должны быть уверены, что созданный в этом редакторе код будет правильным и доступным. Эти и другие поставленные задачи были реализованы в мае 2002 года, когда была выпущена версия Dreamweaver MX. Оценивая продукт, в создании которого они принимали участие, специалисты Web Standards Project пришли к выводу, что Dreamweaver MX: • создавала правильную разметку; • позволяла пользователям создавать доступные сайты; • достаточно аккуратно отображала разметку CSS 2, хотя оставались некоторые проблемы с отображением элементов, расположенных с помощью CSS; • не повреждала верную разметку CSS; • поощрялось корректное использование XHTML и CSS (автоматическое тестирование на соответствие стандартам); • уважала и поддерживала Web-стандарты. Дополнительные сведения. Полностью отчет специальной группы WaSP no Dreamweaver можно найти по адресу: www.webstandards.org/act/campaign/dwtf/rnxassessed.html.
138
Глава 4, XML завоевывает мир
Визуальные редакторы: два из трех не так уж и плохи Таким образом, Macromedia не на словах, а на деле доказала свое стремление поддерживать стандарты. Поддержка стандартов в Dreamweaver MX отвечает возможностям всех современных браузеров. Несмотря на то что WaSP не удалось сотрудничать с Adobe, компания самостоятельно и довольно успешно применила поддержку стандартов в своем редакторе GoLive (www.adobe.com/products/golive/main.html). Кроме CSS и XHTML, GoLive поддерживает Synchronized Multimedia Integration Language (www.w3.org/AudioVideo), стандарт W3C для создания доступных мультимедийных презентаций. Все пользователи этих двух редакторов могут с легкостью создавать Web-страницы, совместимые со стандартами.
FrontPage: несовместимость от природы Третий продукт данной категории - Microsoft FrontPage - малопопулярен среди профессионалов, но очень широко распространен среди начинающих, возможно, из-за того, что он поставляется в пакете с другими продуктами Microsoft. Многие дизайнеры вынуждены работать с FrontPage, так как бюджет не позволяет им раскошелиться на «дополнительный» редактор. «У нас уже есть Web-редактор», - могут подумать некоторые. И будут не правы. FrontPage не является Web-редактором; это редактор страниц для Internet Explorer. Несмотря на то что Microsoft производит совместимые со стандартами браузеры, редактор FrontPage использует запатентованные технологии для создания сайтов, которые корректно отображаются и работают только в Internet Explorer. Это не является ошибкой создателей. Данная функция редактора может считаться одной из его опций, хотя и созданной без учета интересов пользователей. Экс-президент Microsoft Билл Гейтс (Bill Gates) признался, что давал указания разработчикам продуктов группы Office, куда относится и FrontPage, не делать ее документы совместимыми с другими приложениями. Он не хотел, чтобы конкурирующие продукты могли открывать, сохранять и изменять документы FrontPage. Таким образом, если вы создаете сайт в FrontPage, вероятнее всего, он будет работать лишь в Internet Explorer. Тем не менее некоторая надежда осталась. В июле 2002 года UsableNet объявила об интеграции средства LIFT в Microsoft FrontPage (www.usablenet.com/ frontend/onenews.go?news_id=45), таким образом поощряя стремление пользователей FrontPage создавать доступные сайты. (LIFT также встроена и в Dreamweaver
Появление р
; CSS
139
MX.) Хотя это и не гарантирует, что FrontPage вскоре станет совместимой со стандартами, однако это является первым шагом в сторону совместимости. Пока же, если вы хотите создать совместимый со стандартами сайт, сделать это можно либо вручную в текстовом редакторе, либо с помощью визуальных редакторов Dreamweaver или GoLive. Использовать FrontPage для этой цели можно, только если вы готовы вручную исправить практически все теги и атрибуты, сгенерированные этой программой.
Появление разметки CSS Стандарт CSS 1 был создан в 1996 году для отделения внешнего вида сайта от его содержимого. К 2000 году все популярные браузеры наконец научились правильно отображать разметку CSS. Но дизайнеры и разработчики по-прежнему не торопились использовать CSS, так как большая часть пользователей все еще использовала браузеры версии 4.0. Необходимо было что-то предпринять, дабы сделать использование Web-стандартов «безопасным» для дизайнеров. Участники проекта Web Standards решили прибегнуть к партизанской тактике.
Кампания за обновление браузеров В феврале 2001 года Web Standards Project запустил кампанию в поддержку обновления браузеров (www.webstandards.org/act/campaign/buc). Как следует из ее названия, целью кампании было побудить пользователей перейти с устаревших, не поддерживающих стандарты браузеров на более новые версии, а дизайнеров подтолкнуть к отказу от использования ухищрений и трюков HTML в пользу Web-стандартов. В некотором смысле кампания достигла своих целей, поощрив некоторых разработчиков действовать, как будто вся их аудитория использовала современные браузеры. Делалось это так - с помощью фрагмента JavaScript в разделе документа проверялось, поддерживает ли браузер пользователя модель DOM. Если да, то загружалась страница, в ином случае пользователь перенаправлялся на страницу, доступную его браузеру. На этой странице пользователю рекомендовалось обновить его браузер на более позднюю версию и объяснялось, как это улучшит его возможности по пользованию Сетью. В отличие от сообщения «Сайт оптимизирован для...», кампания WaSP не выделяла какой-то один браузер. Неважно, браузером какой компании вы пользуетесь, главное, чтобы он был совместим со стандартами.
140
Глава 4» ЖЖк завоевывает т и р
Такая тактика рекомендовалась только для сайтов с корректной разметкой CSS и DOM, и лишь для некоммерческих сайтов или сайтов, которые могут себе позволить перенаправлять пользователей на другие страницы таким образом. Участники этой кампании могли создать свои собственные страницы переадресации, взвесив все преимущества и недостатки такого метода.
Кампания, не доведенная до конца Увы, слишком часто ленивые дизайнеры использовали данный способ для отказа посетителям в доступе к сайтам, которые были далеки от Web-стандартов. Лишь усиливая раздражение пользователей, вместо их просвещения они просто отправляли бедолаг на сайт WaSP. Как вы можете себе представить, подобное поведение лишь вызывало разочарование пользователей, а не желание обновить браузер. Среди таких недобросовестных сайтов был и Raiderettes.com (рис. 4.9), отправивший наибольшее число пользователей со своих страниц на WaSP. Сайт выглядит довольно привлекательно, но попытка проверить его разметку (http://validator.w3.org) привела к следующему результату: Fatal Error: no document type declaration; will parse without validation. I could not parse this document, because it uses a public identifier that is not in my catalog.
Raiderettes.com, так же как и некоторые другие коммерческие сайты, использовал код WaSP для переадресации пользователей не в целях распространения знаний о стандартах, а просто для отказа в доступе пользователям браузеров, не поддерживающих DHTML. Стоит ли говорить о том, сколько гневных писем получил WaSP от разъяренных мужчин, которым отказали в возможности рассмотреть красавиц с сайта, вместо этого предложив почитать о CSS и ECMAScript.
Более гибкий путь к обновлению Несмотря на подобные неудачи, кампания добилась успеха, подтолкнув тысячи дизайнеров к использованию стандартов. Она также привлекла внимание прессы к проблеме стандартов, а многие пользователи благодаря этой кампании сменили свои браузеры на более новые. Несмотря на некоторый ореол дурной славы, возникший благодаря перенаправлению пользователей на другие страницы, был достигнут и позитивный эффект. Используя более мягкие подходы, можно не отказывать пользователю в доступе. В поддержку этой кампании сайт A List Apart (www.alistapart.com) был
:
'
'
•
•
:
•
•
.
. • • • ; -
-
:
•:
•••
•
• 1
4
1
Рис. 4.9. Официальный сайт группы поддержки команды Oakland Raider (www.raiderettes.com)
переделан с использованием разметки GSS и правильного HTML (вскоре уступившего место XHTML), как описано в главе 2. При попытке продемонстрировать гибкость кампании сайт ALA показал, что можно избежать отказа в доступе к страницам и перенаправления пользователей со старыми браузерами. Вместо этого сайт просто скрывал разметку в несовместимых браузерах. Пользователи Netscape б, IE 5+, Opera 5+ и других современных браузеров могли видеть и содержимое, и разметку. Пользователи старых браузеров получали только контент, без разметки, а также видели сообщение о необходимости обновить браузер, которое было скрыто от пользователей современных браузеров. Web-стандарты предстали во всей своей красе. Для подогрева дизайнерского интереса сайт ALA был оформлен в стиле пропагандистского манифеста и было отмечено, что начиная с этого времени CSS-разметка сайта будет не видна пользователям браузеров, не поддерживающих этот стандарт (рис. 4.10-4.11).
142
Глава 4. XIVIL завоевывает мир
Рис. 4.10. «К черту старые браузеры!» Этим лозунгом ALA призывал дизайнеров использовать CSS и DOM (www.alistapart. com/stories/tohell)
floss
ж ш ш ш 1 CSS
143
Журнал "A List Apart" призывал 70 000-ую аудиторию своих еженедельных читателей перестать придумывать отговорки и приступить к использованию Web-стандартов: «Через полгода, год или два все Web-сайты будут создаваться по стандартам, отделяющим структуру от содержания. (Либо они будут сделаны с помощью Flash 7.) Мы можем либо наблюдать за тем, как наши навыки устаревают, либо начать изучение Web-стандартов прямо сейчас. На самом деле последние версии IE, Navigator и Opera уже поддерживают многие Web-стандарты. Если мы отбросим уверенность в необходимости оглядываться назад, мы можем перестать придумывать для себя отговорки и начать использовать Web-стандарты. В ALA начиная с выпуска №99 мы будем делать именно так. Присоединяйтесь».
Начало потопа Призыв "A List Apart" возымел свое действие. Спустя всего несколько дней один за другим независимые сайты стали преображаться, используя CSS для разметки и XHTML для создания структуры. В качестве примера можно привести сайт Тодда Домини (Todd Dominey) - рис. 4.12, - на котором он использует CSS и XHTML. Свой сайт-портфолио (рис. 4.13) Тодд выполнил во Flash. На своем персональном сайте Тодд объясняет, почему он перевел его на использование Web-стандартов: «Этот сайт полностью выполнен с помощью разметки XHTML/CSS. Нет прозрачных изображений GIF, колонок, строк - ничего подобного. Причина этого довольно проста - мне нужно было место для экспериментов с новыми технологиями дизайна, что невозможно сделать в проектах клиентов (в большинстве случаев). Этот сайт корректно отобразится в Explorer 5.0 и выше, Mozilla, Netscape б, Opera. Пользователи более ранних версий, например iCab или OmniWeb, могут столкнуться с проблемами. Если все, что вы видите, - это серый фон и синий текст на нем, вам срочно нужно обновить свой браузер (www.whatdoiknow.org/about.shtrnl)»,
Бесконечные преобразования После начала кампании за обновление браузеров и редизайна сайта ALA на CSS/ XHTML перешло несчетное число персональных сайтов и личных страничек. Для удовлетворения внезапно возникшего интереса к разметке CSS на некоторых сайтах были опубликованы открытые исходные коды разметок CSS,
144
Гнаеа 4. XML завоевывает тшр
которые можно было использовать для своих нужд. Если вы не уверены в понимании CSS или не до конца разобрались в разметке страниц с помощью CSS посетите эти сайты и скопируйте разметку с них: • Blue Robot's Layout Reservoir (рис. 4.14); • Eric Costello's CSS Layout Techniques (http://glish.com/ccc); • Owen Briggs's "Little Boxes" (рис. 4.15). Для более амбициозных дизайнеров Эрик Майер на своем сайте (рис. 4.16) предлагает ознакомиться с наиболее сложными приемами разметки CSS, которые работают только в самых совместимых браузерах. Эти методы вряд ли удастся использовать в проектах заказчиков, однако они позволяют нам потренироваться в своих навыках и отточить мастерство для будущих проектов.
145
Рис. 4.13. Сайт-портфолио Домини являет собой прекрасный образец рационального использования Flash (www.domineydesign.com)
Большинство CSS-дизайнеров создают сайты, корректно отображающиеся в IE 5 и более новых версиях и имеющие приемлемое качество в более старых браузерах (в которых может отображаться лишь контент без разметки). На сайте Real World Style Марка Ньюхауза (Mark Newhouse) - рис. 4.17 - можно найти разметки CSS, работающие в Netscape 4 и других устаревших браузерах. Хотите использовать CSS? Не можете послать к черту старые браузеры? На сайте Real World Style есть решения ваших проблем. По мере распространения комбинации XHTML/CSS среди персональных и независимых сайтов все больше дизайнеров стали задумываться о доступности их творений, об их соответствии требованиям Section 508 и руководству по доступности WAL На момент написания книги ведущие независимые сайты можно было разделить на две категории:
146
: :
• совместимые со стандартами сайты, использующие CSS для разметки и XHTML для создания структуры, отвечающие требованиям Section 508 и других руководств по доступности; • полностью выполненные во Flash сайты, использующие ActionScript (язык, созданный Macromedia на основе ECMAScript). Можно сказать, что, если ваш сайт не использует стандарты или Flash, многие коллеги сочтут вас отставшим от жизни. Какой бы банальной ни казалась эта истина, в ней есть свои положительные стороны. Такое положение дел способствует скорейшему принятию Web-стандартов.
Появлеш
тки CSS
147
Лидерами становятся индивидуумы Персональные и независимые сайты всегда расширяли границы, и их инновации впоследствии вдохновляли более крупные популярные сайты. JavaScript, фреймы, всплывающие окна вначале появились на персональных сайтах. После того как ни один пользователь не пострадал от просмотра таких сайтов, коммерческие сайты берут на вооружение все эти приемы. После этого мы видим выпадающие DHTML-меню и всплывающие окна на коммерческих сайтах. На этот раз заимствование приемов и техник коммерческими сайтами у персональных страничек произойдет более гладко, так как речь идет о совместимых
148 Г пава 4. XML завоевывает мир
Рис. 4.16. На сайте Эрика Майера представлены образцы наиболее совершенных и сложных разметок, работающие лишь в самых совместимых браузерах (www.meyerweb.com/eric/css/edge)
стандартах, повышающих доступность, а не об уловках и трюках. Перемены уже начались, подстегнутые с одной стороны появляющимися законами и нормативами, а с другой - вдохновляющими персональными сайтами.
Мэйнстрим Web-стандартов В 2001 году в США и Канаде были опубликованы инструкции, согласно которым все сайты, относящиеся к правительственным организациям, должны быть созданы в соответствии со стандартами, чтобы быть доступными всем пользователям. Вскоре этому примеру последовали Великобритания и Новая Зеландия.
149
В 2002 году крупные государственные сайты, в том числе Texas Parks 8c Wildlife (www.tpwd.state.tx.us), - рис. 4.18 - осуществили редизайн с использованием Web-стандартов, включая разметку CSS. Texas Parks 8c Wildlife так объясняет причину редизайна сайта (www.tpwd.state.tx.us/standards/tpwbui.htm): «Texas Parks 8c Wildlife, являясь государственной организацией, в соответствии с требованиями административного кодекса штата Техас §201.12, обязана создавать сайт согласно Web-стандартам, принятым W3C. В основе этих требований лежит вопрос доступности. Web-сайт должен быть доступен для всех пользователей, независимо от их физических ограничений и средств доступа к сайту». Но если страницы выглядят по-разному для каждого пользователя, как они могут быть доступными?
150
,
•
•
•
'
•
•
.
•
•
:
•
•
:
.
:
.
:
•
•
.
;
'.
,
:
"
Рис. 4.18. Juneau.org (www.juneau.org) был одним из первых государственных сайтов, сменивших устаревшие фреймы и код на CSS и XHTML
Доступность не означает, что все пользователи видят одинаковые страницы. Доступность относится к контенту и информации и подразумевает, что все пользователи могут просмотреть полное содержимое сайта (текст, изображения, мультимедиа). Чтобы добиться этого, дизайнеры TPW воспользовались CSS для отделения контента от внешнего вида, что позволило повысить качество страниц. Стандарты W3C делают возможным создание доступных страниц. Используя CSS и XHTML, Texas Parks 8c Wildlife приступила к созданию совместимых Web-страниц. Разработчики сайта столицы Аляски привели примерно такие же доводы (www.juneau.org/about/stylesheets.php): «Мы преобразовали сайт из фреймов в стандартный CSS. Этот стандарт дает нам большую свободу в плане дизайна и повышает его доступность для
1№йнс?р
-стандартов
151
пользователей. С помощью CSS мы можем сделать наш сайт доступным практически для всех браузеров и платформ, а также для различных беспроводных устройств. Кроме этого, он позволит нам распрощаться со многими проблемами, вызванными нашим старым дизайном с фреймами». Единственным недостатком такого подхода является то, что многие старые браузеры не совместимы с CSS. Тем не менее CSS намного более снисходительно относится к таким браузерам, чем фреймы к браузерам, не поддерживающим их. Несовместимые с CSS браузеры отобразят вместо разметки сайт в текстовом формате. Хотя такой вариант и будет лишен привлекательности, вся информация, включая ссылки и изображения, сохранится и будет доступна пользователям. С помощью CSS дизайнер может контролировать порядок отображения контента в несовместимых браузерах, без влияния на облик сайта в совместимых браузерах. Это является большим преимуществом и лично я, как дизайнер, предпочту, чтобы пользователи говорили, что мой сайт выглядит нелепо, чем то, что он не работает. Большинство новых версий браузеров поддерживают CSS. Если ваш браузер не относится к ним, щелкните по одной из кнопок внизу страницы для загрузки новой версии. Для старых компьютеров с небольшим объемом памяти и медленным процессором выберите браузер Opera, так как он не предъявляет высоких системных требований к вашему ПК.
Коммерческие сайты принимают вызов В 2002 году коммерческие сайты также начали переходить к использованию CSS и XHTML. В июле того же года поисковая система Lycos Europe перешла на XHTML и CSS, а вслед за ней последовал и HotBot. Примерно в то же время быстрая поисковая система AllTheWeb (рис. 4.19) также была переведена на CSS/XHTML. На момент написания книги Yahoo и Google еще не последовали примеру своих более мелких конкурентов, однако, как мы уже отмечали, такова природа перемен: вначале рискуют небольшие независимые сайты, а затем, вслед за ними, идут и большие игроки, когда убедятся в безопасности перемен.
Преобразования W i r e d Digital В сентябре 2002 года популярный сайт Wired Digital был полностью переделан в соответствии со стандартами: XHTML для данных, CSS для оформления (рис. 4.20-4.21). Глава дизайнеров сайта Дуглас Бауман (Douglas Bowman) рис. 4.22 - отвечал за новый дизайн и его соответствие стандартам.
152
Гиава4* XML завоевывает мир
Рис. 4.19. Поисковая система AllTheWeb (www.alltheweb.com), угрожающая сбросить с пьедестала Google, была переведена на CSS/XHTML в 2002 году
Популярный сайт с широкой аудиторией, Wired долго служил маяком для всего сообщества Web-разработчиков. Его переход на Web-стандарты стал четким сигналом для всей индустрии о том, что пришло время заботиться о совместимости со стандартами, а не думать об устаревших приемах. В{
Некоторые трудности После редизайна сайт Wired.com содержал ошибки, некоторые из которых были вызваны системой управления контентом Vignette, использовавшейся сотрудниками Wired. Причиной других были рекламные блоки сторонних компаний, созданные с ошибками. С такими же проблемами сталкивалось и мое агентство Happy Cog, да и вы тоже, возможно, не избежали подобных проблем. Бывает, что после создания отличных шаблонов система
Лйэйн стрим Wefo»cran.
153
Рис. 4.20. Сайт Wired Digital был переведен на XHTML и CSS в 2002 году (www.wired.com)
управления контентом добавляет туда некорректный код, и весь сайт разваливается на глазах. В случае с Wired эти проблемы были быстро устранены и спустя пару дней после перезапуска сайт являлся прекрасным образцом совместимого со стандартами крупномасштабного коммерческого проекта. Тем не менее стоит отметить, что не каждая компания в состоянии исправить ошибки, возникшие из-за использования Vignette. Для прогресса Web-средствам публикации контента необходимо научиться поддерживать стандарты. Владельцам сайтов и менеджерам необходимо донести до производителей подобных систем, что поддержка стандартов является совершенно необходимой, так же как в свое время дизайнеры и разработчики донесли эту мысль до производителей браузеров. Чем больше пользователей сообщит об этом производителям, тем скорее они начнут выпускать совместимые со стандартами продукты.
154
Глава 4* XML. завоевывает mug»
Системы публикации и стандарты. Чистое использование XHTML/CSS редко встречается на крупных коммерческих сайтах, даже владельцы которых полны желания соответствовать стандартам W 3 C . Зачастую виной этому являются используемые приложения, такие как базы данных, системы публикации контента и другие подобные средства. Как мы уже отмечали ранее в этой главе, независимые дизайнеры и разработчики обычно не сталкиваются с трудностями, применяя CSS и XHTML Некоторые из них в качестве хобби даже исправляют подобные ошибки на коммерческих сайтах за несколько часов работы. В целом создать сайт в соответствии со стандартами XHTML, CSS и требованиями по
155
Рис. 4.22. Новый дизайн Wired Digital был создан в основном благодаря Дугласу Баумэну, вскоре покинувшему Wired и создавшему собственную компанию Stop Design (www.stopdesign.com) доступности Prioriiy 1 совсем не сложно, и любой упорный дизайнер может выполнить такую задачу. Однако трудности возникают в крупномасштабных системах и при использовании контента третьих сторон, который необходимо интегрировать в большинстве крупнейших сайтов. Для уверенности в совместимости и работоспособности наших сайтов мы должны убедиться в том, что системы управления контентом сами совместимы со стандартами и не испортят наш код. Необходимо, чтобы создатели подобных продуктов осознали важность стандартов. И, конечно, для модернизации этих продуктов потребуются деньги. В здоровой экономике компании инвестируют в исследования, обучение персонала и в долгосрочные проекты. В неэффективной экономике компании фокусируются на снижении расходов, сокращении штата и т.д. Заставить дизайнеров выучить новые приемы легко, следует лишь показать им преимущества этого подхода. Но заставить компании, борющиеся за выживание, инвестировать в долгосрочные проекты, от которых зависит будущее здоровье Сети, не так просто.
156
Гяава 4. ЖЖк т
;aei
Внедрение стандартов с помощью переходных методов Не всегда соответствие стандартам требует перехода к строгой разметке CSS, и не всем компаниям и организациям необходимо прибегать к столь радикальным мерам в попытке добиться совместимости со стандартами. В главе 2 описаны переходные способы добиться совместимости со стандартами, предусматривающие использование как старых, так и новых технологий. Подобный неспешный подход перехода к совместимому со стандартами сайту подходит для организаций, большая часть пользователей которых использует устаревшие браузеры. Одной из таких организаций является Общественная библиотека Нью-Йорка. В 2001 году под руководством Кэрри Бикнер (Carrie Bickner) сайт филиалов библиотеки (www.nypl.org/branch) был переведен на XHTML 1.0 и комбинацию CSS со старыми таблицами. Сайт также стал соответствовать требованиям доступности Section 508. Одновременно с редизайном сайта библиотека опубликовала руководство по стилю (www.nypl.org/styleguide) под авторством К. Бикнер и вашего покорного слуги, в котором были приведены требования к дизайну и разметке для всех дочерних проектов библиотеки, включая справочник по CSS и XHTML. Вместо того чтобы сделать руководство доступным только для сотрудников, библиотека разместила его на внешнем ресурсе в надежде, что тысячи дизайнеров и разработчиков скорее обратятся к XHTML и CSS. Как оказалось, этот шаг возымел действие. Так же как некогда стандарты занимали умы независимых дизайнеров, теперь они завладели разработчиками из крупных коммерческих компаний и различных организаций, которые воспринимают их как способ охватить широкую аудиторию и сделать свои сайты более доступными.
W 3 C вступает в игру Еще совсем недавно W3C придерживался довольно пассивной политики, предпочитая публиковать спецификации стандартов, но не проталкивать их в жизнь. Теперь эти дни остались позади. В 2001 году W3C сформировал группу поддержки качества (http://www.w3.org/QA), для того чтобы более успешно общаться с дизайнерами и разработчиками, а также чтобы убедиться в корректном применении Web-стандартов. W3C также приступил к публикации статей в поддержку принимаемых стандартов.
Выводы
157
Например, в статье W3C (www.w3.org/WAI/bcase/benefits.html) приводятся доводы в пользу использования Web-стандартов при создании сайтов с точки зрения увеличения рыночной доли, расширения аудитории, снижения расходов и демонстрации социальной ответственности. Статья, безусловно, стоит того, чтобы ее прочесть, распечатать и донести до других. Если эти преимущества звучат знакомо - очевидно, вы внимательно читали эту книгу, а не просто перелистывали страницы. Стандарты и повышение доступности приводят к росту вашей аудитории, одновременно сокращая расходы. Если это предложение не заинтересует владельца какой-либо компании, видимо, он живет не нашей планете.
Выводы Стандарты, подобные XML, изменили бизнес. Поддержка стандартов положила конец войнам браузеров и их негативному влиянию на удобство использования, доступность и продолжительную жизнеспособность. Благодаря CSS и XHTML, поддерживаемым популярными браузерами и визуальными редакторами, изменились способы создания сайтов не только на уровне персональных страничек, но и на уровне коммерческих, государственных и сайтов организаций. Мы наблюдаем повсеместную победу Web-стандартов. А теперь давайте прекратим ликовать и вернемся к работе.
Дизайн и разработка ГЛАВА 5.
Современный код
ГЛАВА 6»
XHTML: реструктуризация Сети
ГЛАВА 7.
Структура и метаструктура в строгой и смешанной разметке
ГЛАВА 8,
XHTML в примерах: смешанная разметка
ГЛАВА 9.
Основы CSS
ГЛАВА 1 0 . CSS в действии: смешанная разметка ГЛАВА 1 1 . Переключение DOCTYPE и поддержка стандартов ГЛАВА 1 2 . Блочная модель, ошибки браузеров и обходные пути ГЛАВА 1 3 . Оформление текста ГЛАВА 1 4 . Основы доступности ГЛАВА 1 5 . Работа со скриптами на основе DOM ГЛАВА 1 6 . CSS-редизайн
Г л а м I. Современный код
В
первой главе нашей книги мы обсудили деловые и творческие затруднения, возникающие при использовании устаревших методов Web-дизайна, коснулись преимуществ дизайна по стандартам и набросали общие тенденции развития индустрии. В оставшейся части книги мы перейдем от общего к частному, и лучше всего будет начать с повторного взгляда на основы Web-кода. Некоторые дизайнеры могут неодобрительно покачать головой. Естественно, те из нас, кто занимается созданием сайтов больше двух недель, могут думать, что знают о HTML все, что можно знать. Неужели нельзя изучить что-то более мощное и новое? Например, может, лучше познакомиться с серверными технологиями PHP, ASP или ColdFusion, чем тратить драгоценное время на переосмысление таких рудиментов, как HTML-таблицы или тег font? Ответ - и да и нет. Серверные технологии жизненно важны для создания динамичных сайтов, реагирующих на запросы пользователей. Даже традиционные информационные сайты могут получить выгоду, храня свой контент в базах данных и обращаясь к ним посредством РНР или других подобных технологий. Так же как и стандарты, серверные технологии помогают отделить данные от интерфейса. Как и стандарты, подобные CSS, освобождают дизайнеров от необходимости заключать каждый фрагмент информации в табличную ячейку, языки вроде РНР и ASP освобождают создателей от необходимости создавать каждую страницу вручную. Но от этих динамически создаваемых страниц не будет никакого толку, если они будут несовместимы с большинством браузеров или устройств либо будут работать на основе некорректного и устаревшего кода. Если страницы не будут отображаться в некоторых продуктах или будут загружаться 60 с вместо 10, серверные технологии не смогут проявить себя во всей красе. Иными словами, стандарты и подобные технологии не исключают друг друга, а позволяют работать совместно и более эффективно. Серверные технологии и базы данных
162
Глава 5» Современный мод
помогают создавать более «умные» и функциональные сайты, однако их содержимое становится более доступным при использовании четкого структурированного кода. Что такое PHP. PHP (www.php.net) является открытым языком скриптов общего назначения, идеально подходящим для Web-дизайна и отлично взаимодействующим с XHTML. Синтаксис языка похож на С, Java и относительно прост в изучении. РНР (на1 звание языка является рекурсивным акронимом PHP: Hypertext Preprocessor ) обладает множеством возможностей, однако стал популярен по одной причине: при использовании совместно с базой данных MySQL (www.mysql.com) РНР позволяет разработчикам с легкостью создавать динамические сайты и Web-приложения. С 1998 года развитием и продвижением РНР занимается компания Zend Technologies. Этот язык распространяется на основании лицензии open source, то есть является открытым программным продуктом (что также отразилось на его широкой популярности). Влюбленные в РНР разработчики постоянно создают на базе этого языка всевозможные приложения, распространяемые бесплатно. Например, приложение Refer Дина Аллена (Dean Allen) позволяет отслеживать посетителей вашего сайта (www.textism.com/ tools/refer), пришедших с других сайтов по ссылкам (рис. 5.1). Приложение URL Cleaner Дэна Бенджамина (Dan Benjamin) - рис. 5.2 - исправляет некорректные Web-адреса, созданные другими языками, например ColdFusion (www.hivelogic.com/urlcleaner.php). РНР совместим с Web-сервером IIS от Microsoft, однако наиболее часто он применяется в комбинации с сервером Apache. Apache работает и под Windows, а наиболее часто, конечно, под UNIX. Mac OS X для Apple, созданная на базе UNIX, включает в себя и РНР, и сервер Apache, как и большинство дистрибутивов Linux. Microsoft Active Server Pages, или ASP, - www.asp.net - и Macromedia ColdFusion (www.macromedia.com/software/coldfusion) также являются популярными языками для создания динамических Web-страниц. Из этих трех языков бесплатным является только РНР. ASP обычно используется в связке с серверным ПО от Microsoft, ColdFusion обычно сочетается с другими продуктами от Macromedia, включая Dreamweaver и Flash, тогда как для независимых разработчиков оптимальным выбором остается РНР. С другой стороны, даже такие лидеры рынка, как Yahoo, используют РНР (www.theopenenterprise.com/story/TOE20021031 S0001). Это говорит о том, что бесплатный РНР привлекает не только мелкие компании. Yahoo, как и многие крупные компании, использует ряд других открытых технологий, что демонстрирует многогранность и независимость Web-индустрии.
1
Первоначально язык назывался РНР - Personal HomePage Tools - и в 1994 году был призван автоматизировать работ)' домашней странички автора, Расмуса Ледфорда. - Прим. науч. ред.
Современный код
163
Рис. 5.1. Приложение Refer позволяет отслеживать посетителей вашего сайта, пришедших с других сайтов по ссылкам (www.textism.com/tools/refer)
Что такое РНР (окончание). Каждый из этих трех языков использует как крупные, так и мелкие сайты. У каждого из них есть свои преимущества и недостатки. Следует отметить, что все эти языки генерируют длинные URL, содержащие амперсанды, что недопустимо в HTML/XHTML. В HTML/XHTML символ амперсанда (&) используется для служебных целей, например # & 8 2 1 7 , что является обозначением в кодировке Unicode апострофа. ColdFusion, в частности, нарушает эту договоренность. Это можно исправить с помощью функции U R L E n c o d e d F o r m a t ( ) . В AS.P есть схожая функция HTMLEncode. В обоих случаях разработчики могут избежать возникновения проблемы, воспользовавшись этими функциями. Java Server Pages (JSP) является еще одной динамической технологией, наиболее часто используемой в крупных развлекательных сайтах, и ее описание выходит далеко за рамки нашей книги.
164
Глава 5. Современный код
Тайный позор плохого кода Чем более успешными в Web-дизайне мы становимся и чем дольше мы занимаемся этой деятельностью, тем меньше мы задумываемся или знаем о скрытых последствиях плохого кода. В эпоху раннего развития Сети Web-дизайн был схож с кормлением требовательных и разборчивых детей. Для созидания работающего сайта мы создавали несколько версий для каждого браузера. Современные браузеры все потребляют одинаковую пищу, однако не все дизайнеры знают об этом. Так же как плохое питание негативно влияет на организм, плохой код подрывает «здоровье» всей Сети. Но до недавнего времени этот факт был скрыт от
Тайный позор плохого кода
165
нас, как уже описывалось в главе 1, потому что нам не с чем было сравнивать, 99,9% сайтов устарели. В этой и последующих главах мы разобрались с причиной существования плохого кода и научились думать структурно, а не рассматривать Web-разметку как второсортный инструмент для дизайна. В то же время мы познакомились с XHTML, стандартным для создания Web-страниц, обсудили его задачи и достоинства и рассмотрели стратегию перехода от HTML к XHTML. По странному совпадению корректное использование XHTML ведет к созданию хорошо структурированных сайтов и отказу от бессмысленных уловок. В XHTML 1.0 Transitional использование таких трюков разрешается, но более логично выполнить стоящие задачи с помощью CSS. В XHTML 1.0 и 1.1 Strict подобные уловки запрещены. При их использовании ваша страница не пройдет проверку в W3C (рис. 5.3).
166
Глава 5. Современный к ад
Проверьтесь! Служба проверки кода W3C (http://validator.w3.org) может проверить Web-страницы HTML 4.01, XHTML 1.0 и XHTML 1.1 на их соответствие стандартам. Проверить корректное использование CSS можно с помощью службы проверки CSS (http://jigsaw.w3.org/css-validator). Еще одна программа проверки кода создана Web Design Group (http://www.htmlhelp.com/tools/validator). Все эти три службы работают абсолютно бесплатно.
Выберете ли вы XHTML Strict или Transitional, с течением времени вы обнаружите, что все, что вы знали, ошибочно. Вы откажетесь от множества привычных процедур: тегов , которыми вы раньше щедро сыпали налево и направо для эмуляции списка, заголовков, прозрачных изображений GIF и многого другого. Вместо использования этих уловок вы начнете мыслить структурно. Пусть разметка станет настоящим качественным кодом. Даже при переходном способе, используя таблицы, вы научитесь делать больше с помощью CSS. По мере изучения нового языка мы можем забыть все устаревшие приемы, используемые нами в течение многих лет. Так, может, начнем?
Переформулировка Согласно W3C, XHTML является (www.w3.org/TR/xhtmll) переформулировкой HTML в XML. Более простыми словами, XHTML является языком разметки на базе XML, который работает и выглядит так же, как и HTML, за исключением некоторых небольших, но существенных различий. Для браузеров и пользователей XHTML ничем не отличается от HTML, но некоторые наиболее новые модели браузеров обрабатывают такой код несколько иначе, чем HTML (более подробно мы рассмотрим этот вопрос в главе 6). Для дизайнеров и разработчиков XHTML почти не отличим от HTML, за исключением наличия более строгих правил и нескольких новых элементов. В главе 4 мы описали XML - Extensible Markup Language (http:// www.w3.org/XML) как некий сверхъязык разметки, из которого разработчики могут создавать другие языки разметки. XHTML (Extensible Hypertext Markup Language - Расширенный язык разметки гипертекста) как раз и является одним из таких языков. XHTML 1.0 является первой и наиболее обратно-совместимой версией XHTML и, соответственно, наиболее легкой для изучения.
Bi»fB0&bl
167
Число других приложений и протоколов на базе XML подсчитать невозможно, и их популярность обусловливается возможностью безболезненного обмена данными между ними, что также относится и к XHTML. Среди этих протоколов можно упомянуть Scalable Vector Graphics (http://www.w3.org/TR/SVG), Synchronized Multimedia Integration Language (http://www.w3.org/TR/RECsrnil), Simple Object Access Protocol (http://www.w3.org/TR/SOAP), Resource Description framework (http://www.w3.org/RDF), Platform for Privacy Preferences (http://www.w3.org/TR/P3P). Все эти протоколы (и бессчетное число других) играют важную роль в развитии Сети, но ни один из них не является таким легким в изучении и таким важным для дизайнеров и разработчиков, как XHTML. Почему необходимо «переформулировать» HTML в XML? Одной из причин является последовательность XML против полной неразберихи в HTML. В XML каждый тег должен быть закрыт. В HTML же некоторые теги обязательно должны быть закрыты, другие никогда не закрываются, а третьи можно закрывать или нет на усмотрение дизайнера. Такая непоследовательность может создать массу проблем. Например, некоторые браузеры могут отказаться отображать HTML-страницу с открытыми ячейками таблицы, даже если по правилам HTML такие теги можно не закрывать. В XHTML вы должны закрывать все элементы, что помогает избежать появления проблем с браузером, устраняет необходимость тратить время на тестирование и отладку и избавляет от необходимости помнить, какие теги надо закрывать, а какие - нет. Но, что более важно, языки и приложения на базе XML являются ключом для успешного будущего ваших сайтов. Использование XML может гарантировать, что ваш сайт будет успешно работать с другими языками, протоколами и приложениями на базе XML. Вы можете спросить, если XML настолько важен, зачем создавать язык разметки на базе XML, который работает как HTML? XML мощный и всеобъемлющий, однако большинство браузеров не может обработать сырой XML и отобразить аккуратно отформатированную Web-страницу (рис. 5.4). XHTML является мостом, соединяющим мощь XML и простоту HTML.
Выводы Попросту говоря, XHTML - это XML, который ведет себя как HTML в старых и новых браузерах, а также корректно работает в большинстве Internet-устройств от Palm Pilot до сотовых телефонов и программ для чтения информации с экрана.
168
Глава 5. Современный код
РИС. 5.4. Простой XML-документ (http://p.moreover.com/cgi-local/page?index_xmH-xml), открытый в современном браузере (в данном случае Chimera). Некоторые браузеры отображают XML как текст, некоторые - как текст с тегами. Ни один вариант не является приемлемым, тогда как XHTML корректно отображается практически в любом браузере и устройстве
XHTML легко изучить и использовать, как и HTML. Новичкам сделать это будет даже легче, так как у них еще не появились вредные привычки плохой разметки, свойственные более опытным дизайнерам. XHTML является текущим стандартом создания Web-страниц (сменившим HTML 4.0), и с его помощью можно вернуть логическую структуру документа Web-контенту, совместимость с другими стандартами, например CSS и DOM, a также обеспечить корректную совместную работу с другими языками, приложениями и протоколами на базе XML.
Какой XHTML подходит ват
169
Какой XHTML подходит вам В этой главе и во всей нашей книге мы сфокусируемся на XHTML 1.0 и XHTML 1.0 Transitional, наиболее легкой в освоении, толерантной к дизайнеру и совместимой с существующими методами дизайна версии XHTML. Многие сторонники стандартов предпочитают XHTML 1.1 Strict, и в этом нет ничего предосудительного, однако эта версия менее совместима со старыми браузерами и она использует MIME-типы, что может вызвать некоторые проблемы в поведении определенных популярных браузеров. Кроме того, преобразование созданных старыми методами сайтов в XHTML 1.1 Strict требует большего труда и времени, чем в XHTML 1.0 Transitional. Для большинства читателей этой книги оптимальным выбором скорее станет XHTML 1.0 Transitional. На момент написания книги сообществу разработчиков были представлены наброски стандарта XHTML 2.O. В своем нынешнем воплощении этот стандарт довольно близок к идеалу. XHTML 2.0 не совместим с HTML или XHTML 1.0. В нем не используются некоторые привычные элементы, включая IMG (вместо него используется OBJECT), тег заменен на элемент LINE, появился элемент HLINK. Возможно, эти характеристики стандарта и изменятся к моменту выхода книги в свет1. Некоторые разработчики встретили появление XHTML 2.0 с нескрываемым восторгом, тогда как реакция других была полностью противоположной. Кое-кто занял просто выжидательную позицию. А некоторые дизайнеры вообще ничего не слышали о происходящем и до сих пор не знают, для чего нужны опции доступности в Dreamweaver. Со временем мы увидим, какие именно спецификации XHTML 2.0 превратятся в стандарт, будут ли дизайнеры и разработчики поддерживать его или проигнорируют. Так как XHTML 2.0 еще не стал стандартом и не поддерживается ни одним браузером, его существование интересно, но не более того, и не относится к нашей книге или работе, и мы еще раз советуем вам остановиться на XHTML 1.0. В настоящий момент опубликована 6 редакция языка XHTML 2.0, но до окончательного утверждения стандарта и тем более его поддержки браузерами еще далеко. - Прим.науч. ред.
170
Глава S. Современный код
И наконец, учитывая то, что XHTML 2.0 не является обратно-совместимым, вы можете задуматься о том, насколько XHTML будет совместим с будущими продуктами. Отвечаем, что пока ни один производитель ПО или аппаратного обеспечения не выразил желания в будущем отказаться от поддержки XHTML 1. Так же как и ни один производитель браузеров не намерен отказываться от поддержки HTML 4. Сайты, написанные на корректном HTML 4.01, будут продолжать работать годы и годы. Это же относится и к XHTML 1. Выбирая между HTML и XHTML, обратите внимание на следующие моменты.
1О главных причин перехода на X H T M L 1. XHTML является текущим стандартом разметки гипертекста, заменившим HTML 4. 2. XHTML совместим с другими продуктами на базе XML - языками, протоколами и приложениями, чего нельзя сказать о HTML. 3. XHTML более последователен, чем HTML, что снижает вероятность возникновения ошибок. 4. XHTML 1.0 является мостом к будущим новым версиям XHTML. Если появится стандарт, XHTML 2.0 будет легче перейти на него с XHTML 1.0, чем с HTML. 5. Старые браузеры так же корректно отображают XHTML, как и HTML. 6. Новые браузеры любят XHTML (в частности, XHTML 1.0), он предоставляет многие функции, недоступные в HTML. 7. XHTML так же хорошо работает в беспроводных устройствах, программах для чтения информации с экрана и других пользовательских устройствах, как и в традиционных браузерах, что во многих случаях устраняет необходимость создания отдельных версий для беспроводных устройств и повышает доступность сайта. 8. XHTML является частью семейства Web-стандартов (также включающего в себя CSS и W3C DOM), что позволяет контролировать внешний вид и поведение страницы на разных платформах, браузерах и устройствах. 9. Использование XHTML ведет к повышению доступности вашего сайта и одинакового отображения страниц в браузерах разных производителей. 10. Использование XHTML может выработать у вас привычку проверять страницы с помощью служб проверки кода, что может сэкономить время на тестировании и отладке и поможет избежать основных ошибок доступности, например отсутствие атрибута a l t для каждого тега .
Какой ХН1ТЛ1 w
171
5 главных причин не переходить на XHTML 1. У вас как у дизайнера почасовая оплата. 2. Вам нравится создавать отдельные версии сайта для каждого браузера, платформы и устройства. 3. Ваш внутренний голос подсказывает вам не делать этого. 4. Вы уходите из Web-дизайна. 5. Вы не знаете правил XHTML. По счастливому стечению обстоятельств мы можем исправить пункт №5. Переходим к следующей главе.
Г л а м
6 .
X H T M L :
реструктуризация Сети
М
ы могли назвать эту главу «XHTML: простые правила, легкое руководство». Так как правила и приемы, рассмотренные в ней, на самом деле просты и понятны. Кроме того, слова «легко» и «просто» для книг по Web-дизайну то же самое, что и «новинка!» и «бесплатно!» для товаров в супермаркете, - они притягивают потребителей как магнит и вызывают у них интерес. Конечно, нам хочется стимулировать интерес и подтолкнуть вас к знакомству с XHTML. Почему? Потому что после того, как вы освоитесь с простыми и легкими идеями, приведенными в этой главе, вы переосмыслите образ работы Web-страниц и измените свой подход к их созданию. Это не значит, что вы начнете использовать теги, модные в этом году, вместо прошлогодних. Вы просто начнете мыслить и работать в целом совершенно по-другому. «Простые правила, легкое руководство» уже не смогут охватить всех этих вопросов. С другой стороны, еще одно возможное название главы - «Достижение единства с правильным способом достичь просветления» - кажется слегка напыщенным. А реструктуризация как раз отражает суть XHTML и данной главы. Поэтому - «XHTML: реструктуризация Сети». В этой главе мы изучим азбуку XHTML и узнаем, в чем разница между структурным кодом и оформлением. Если вы уже занимались внедрением Web-стандартов в свою практику, некоторые моменты, рассматриваемые в этой главе, могут оказаться для вас знакомыми. Но даже опытные программисты могут обнаружить для себя неожиданные секреты в этой главе.
Преобразование в XHTML: простые правила, легкое руководство Преобразование из традиционного HTML в XHTML 1.0 Transitional является быстрым и безболезненным процессом, если вы соблюдаете несколько простых
Преобразование в XHYfVli: простые правила, легкое руководство
173
правил. Если вы можете написать HTML-код, вы сможете создать и XHTML-код. Если вы никогда не работали с HTML, вы все равно сможете научиться писать на XHTML. Давайте познакомимся с простыми основами языка.
Т о ч н ы й DOCTYPE и пространство имен Документы XHTML начинаются с элементов, указывающих браузеру, каким образом обрабатывать их, а службам проверки - как тестировать их на соответствие стандартам. Первый элемент называется DOCTYPE (сокращение от document type - тип документа). Он сообщает службам проверки, какая версия XHTML или HTML используется. По причинам, известным лишь членам W3C, DOCTYPE всегда пишется заглавными буквами.
Что т а к о е DOCTYPE XHTML позволяет дизайнерам и разработчикам создавать несколько различных типов документов, каждый их которых соответствует различным правилам. Правила для каждого типа указаны в приложении к описанию стандарта XHTML под названием «определение типа документа» (DTD). С помощью элемента DOCTYPE вы сообщаете службе проверки или браузеру, в соответствии с каким DTD вы создали свой документ. Согласно этой информации, браузер или служба проверки решает, как обращаться с вашим документом. DOCTYPE является ключевым компонентом в совместимости страниц, кроме того, выбор DOCTYPE влияет на поведение вашей Web-страницы в различных браузерах. Неожиданные результаты в этом случае могут сильно удивить вас. В главе 11 мы рассмотрим влияние DOCTYPE на Internet Explorer и на браузеры, основанные на Gecko, - Netscape, Mozilla, Camino. XHTML 1 предлагает на выбор три типа DOCTYPE: • Transitional - удобный, слегка неряшливый тип DTD, девиз которого «Живи и дай жить другим»; • Strict - строгий DTD, не позволяющий использовать элементы и атрибуты оформления в коде; • Frameset - этот тип прямо из 90-х годов; разрешает использовать фреймы.
К а к о й DOCTYPE использовать Из трех перечисленных выше типов наиболее близко к HTML стоит XHTML 1.0 Transitional. Он единственный из трех позволяет использовать в структуре кода элементы оформления и устаревшие атрибуты.
174
Глава 6. XHTML: реструктуризация Сети
Например, одним из таких рудиментов является атрибут t a r g e t для ссылки HREF. Если вы хотите, чтобы ссылки открывались в новом окне, или ваш заказчик настаивает на этом, Transitional является единственным типом XHTML, разрешающим сделать это с помощью атрибута t a r g e t : <р>Просмотреть <а href="http://www.yoursite.org" target= "_Ыапк">вашу страничкуа> в новом окне.р> <р>Просмотреть <а href="http://www.yoursite.org" target^ "verbatemM>Bamy страничкуа> в именованном окнер> Чтобы открыть ссылку в новом окне при использовании XHTML 1.0 Strict, необходимо написать JavaScript, а также потребуется убедиться, что ссылка работает в среде, которая не поддерживает JavaScript. Целесообразность открытия ссылок в новом окне выходит за рамки нашего обсуждения. Суть в том, что XHTML 1.0 Transitional позволяет сделать это с минимальными затратами. XHTML 1.0 Transitional также позволяет указывать в коде цвет фона для ячеек таблицы и другие подобные приемы, которые целесообразнее было бы выполнить с помощью CSS. Если ваш DOCTYPE указывает на использование XHTML 1.0 Strict, а в коде присутствует элемент bgcolor, служба проверки укажет вам на ошибку, а некоторые браузеры проигнорируют этот атрибут. В свою очередь, если вы указали, что используете XHTML 1.0 Transitional, b g c o l o r не будет помечен как ошибка, а браузеры корректно обработают его. Иными словами, XHTML 1.0 Transitional является лучшим выбором для дизайнеров, осуществляющих переход к современным Web-стандартам. Иначе в W3C не назвали бы его переходным. Некоторые могут возразить, что при переходе к стандартам, оптимальным выбором станет XHTML 1.0 Strict, так же как некоторые полагают, что для желающих сбросить лишний вес оптимальным способом станет служба в морской пехоте. И все же мы полагаем, что для большинства читателей этой книги больше подходит XHTML 1.0 Transitional. Ниже приведен DOCTYPE для него: DOCTYPE frameset используется для документов, содержащих фреймы, то есть элементы . Элемент DOCTYPE следует помещать над всеми XHTML-документами, перед остальным кодом. Он предшествует элементам , < t i t l e > , <meta> и ссылкам на таблицы стилей и файлы скриптов JavaScript. Он также предшествует контенту. Другими словами, элемент DOCTYPE предшествует всему.
Преобразование в XHTML: простые правила, легкое руковоцсягМ
175
Знакомые со стандартами читатели могут задаться вопросом, почему мы не отметили, что элементу DOCTYPE может предшествовать необязательный элемент XML. Мы коснемся этого немного ниже.
После DOCTYPE следует пространство имен Вслед за декларацией DOCTYPE следует объявление пространства имен XML, более подробное, чем элемент :
xmlns=http://www.w3.org/1999/xhtml
xml:lang="ru"
lang="ru">
Пространством имен в XML является набор типов элементов и имен атрибутов, связанных с определенным DTD, декларация пространства имен позволяет идентифицировать пространство имен, указав на его расположение, в данном примере это www.w3.org/1999/xhtml. Два остальных атрибута указывают на то, что документ написан на русском языке и используемая версия XML также русская. С определением DOCTYPE и объявлением пространства имен ваша страница на XHTML 1.0 Transitional будет начинаться так: Скопировать, вставить и готово! Если вам не нравится перепечатывать код из книги, можете найти его на zeldman.com, alistapart.com или webstandards.org и просто скопировать его, изменив версию языка en на ги.
Укажите кодировку страницы Для корректного отображения в браузерах и прохождения тестов в службе проверки во всех документах XHTML необходимо указывать тип кодировки, используемой при их создании. Это может быть Unicode, Windows-1251, KOI8-R или чтото другое. Если вы не знакомы с системами кодировки или KOI8-R ни о чем вам не говорит - не беспокойтесь, мы коснемся этого вопроса чуть позже. Пока же вам необходимо запомнить - есть три способа сообщить браузеру об используемой кодировке, но только один из них надежно работает во всех браузерах на момент написания книги и ни одна из них не является рекомендуемой W3C.
176
Глава & KHTML: реструктуризация Сети
Объявление X M L и к а к его пропустить Многие XHTML-страницы начинаются с необязательного введения XML, также называемого объявлением XML. При использовании объявление XML должно быть расположено перед DOCTYPE и объявлением пространства имен. Его предназначением является указание версии XML и типа используемой кодировки. W3C рекомендует начинать все XML-документы, включая XHTML-документы, с этого объявления XML. Для указания кодировки Windows-1251 можно использовать следующее введение XML: Ничего сложного. Тег сообщает браузеру, что используется версия XML 1.0, а кодировка - Windows-1251. Единственное новшество - вопросительный знак, открывающий и закрывающий тег. К сожалению, многие старые браузеры, даже самые популярные, не могут нормально обработать этот XML-тег. После того как они сталкиваются с ним, браузеры начинаются «смущаться», «спотыкаться» и «задумываться». И все же в этом случае страдает не браузер, а посетитель, который не в состоянии просмотреть ваш сайт. Иногда весь сайт становится недоступным или «зависает» браузер пользователя. В других случаях сайт отображается, но некорректно. К счастью, есть решение для этой проблемы. Вместо этого объявления можно указать тип кодировки с помощью элемента Content-Type в разделе вашего документа. Чтобы указать кодировку Windows-1251, введите следующее: <meta http-equiv="Content-Type" content="text/html; charset=Windows-1251" /> В этом случае начало вашего документа XHTML будет выглядеть следующим образом: <1DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 1 "http: //www.w3.org/TR/xhtmll/DTD/xhtmll-transitional.dtd' > nepexoflHaH модель Web-документа. <meta http-equiv="Content-Type" content="text/html; charset=Windows-1251" />
Если вы работаете над международным сайтом, содержащим массу символов,.не принадлежащих к ASCII, можно использовать кодировку Unicode и вставить следующий элемент Content-Type в код:
Преобразование в ХНтеи.: простые правила, легкое руководство r
<meta http-equiv="Content- IVpe
11
content
=11
177
text/html; charset=UTF-8" />
Вы можете всегда посмотреть исходный код страниц на zeldman.com, alistapart.com или webstandards.org и скопировать этот код.
Пишите все теги в нижнем регистре В отличие от HTML, XML чувствителен к регистру. Поэтому и XHTML также различает регистр. Все элементы XHTML и имена атрибутов следует писать строчными буквами, иначе ваш документ будет содержать ошибки. Давайте взглянем на типичный элемент HTML: <Т1ТЬЕ>Будущее Web-дизайна в красивом коде.
Это знакомый элемент TITLE. Перевести этот фрагмент на XHTML будет предельно просто - надо лишь переписать тег строчными буквами: By\n;yii];ee Web-дизайна в красивом KOfle.
Таким же образом <Р> становится <р>, - и так далее. Естественно, если в вашем HTML-документе все теги и элементы прописаны строчными буквами, вам не придется ничего менять. Но многие из нас привыкли писать элементы HTML заглавными буквами, поэтому необходимо преобразовать их в строчные для перехода на XHTML. Популярные HTML-редакторы вроде BareBones BBEdit, Optima-Systems PageSpinner и Allaire HomeSite позволяют автоматически преобразовать все теги и атрибуты в строчные буквы, а также это можно сделать с помощью бесплатного приложения HTML Tidy.
Не волнуйтесь о регистре значений атрибутов или контента Обратите внимание, что в нижнем регистре необходимо указывать лишь названия тегов, атрибутов и элементов. Регистр информативного содержимого может быть любым. Названия элементов и атрибутов должны быть в нижнем регистре, значения атрибутов и контент могут иметь любой регистр. Ниже приведены три примера, и все они относятся к корректному XHTML:
178
Глава 6. XHTML: реструктуризации Сети
В зависимости от используемого вами серверного ПО и операционной системы, имя файла, указанное в атрибуте, может быть в определенном регистре, но для XHTML это неважно. Однако значения ID и классов CSS чувствительны к регистрам. Будьте внимательны при работе с именами атрибутов со смешанным регистром. Если вы используете визуальные редакторы, например Macromedia Dreamweaver или графический редактор вроде Adobe ImageReady для создания элементов JavaScript, вам придется изменить такие элементы, как onMouseOver на onmouseover. С таким кодом могут возникнуть неприятности: OnMouseOver="changeImages () " А с этим все будет хорошо: onmouseover="changelmages()" Время уборки. В настоящее время наилучший способ создать XHTML-страницу - сделать это вручную. Однако часто Web-дизайн представляет собой редизайн, например обновление старых страниц. Редизайн дает прекрасную возможность перейти на XHTML, и необязательно делать это вручную. Например, бесплатное приложение HTML Tidy (рис. 6.1) поможет быстро преобразовать HTML в XHTML. Эта программа была создана сторонником стандартов Дэйвом Раггетом (Dave Raggett) и распространяется как приложение с открытым исходным кодом компанией Source Forge (http://tidy.sourceforge.net), а некоторые энтузиасты создали модификации этой программы. Например, Терри Тиг (Terry Teague) разработал версию для Мае OS (http:// www.geocities.com/terry_teague/tidy.html), которая и показана на рис. 6 . 1 . Существуют как онлайн-версии этой программы, так и отдельно загружаемые приложения для Windows, UNIX, Linux, Mac (OS 9 и OS X) и других платформ. Некоторые версии работают в виде дополнительных модулей для различных Web-приложений. Например, BBTidy является модулем для редактора BBEdit (X)HTML от компании BareBones Software. Каждая версия предлагает различные возможности и поставляется со своей документацией. Программа выглядит довольно просто, однако является мощным инструментом, и, чтобы лучше освоить ее, вам понадобится руководство пользователя.
Заключайте в кавычки все значения атрибутов В HTML не требуется заключать в кавычки значения атрибутов, однако в XHTML это требование является необходимым для выполнения (height="55", а не h e i g h t = 55). Вот в принципе и все, что можно сказать по этому поводу.
fipec-
ЭТ1Ж:
простые правттш, легкое р^&иводств®
179
Рис. 6.1. Бесплатная программа HTML Tidy (http://www.w3.org/People/Raggett/tidy) поможет преобразовать HTML в XHTML
Хотя, пожалуй, стоит отметить еще один момент. Предположим, значение атрибута включает в себя текст в кавычках. Например, если значением атрибута a l t является текст «Большой Театр представляет роман «Мастер и Маргарита» М.Булгакова», как вы это запишете? Вероятно, так: Если вы пожелаете использовать код для типографических апострофов и кавычек, запись будет выглядеть следующим образом: После того как вы заключили атрибуты в кавычки, необходимо разделить их пробелами. Такой код является ошибочным: Примечание. Программа проверки кода W3C обрабатывает как HTML, так и XHTML, и его анализатор не сможет отследить эту ошибку. Однако ее обнаружит любой анализатор, созданный для XML.
180
Глава 6. XHTML: реструктуризация Сети
Если в значении атрибута вам необходимо использовать прямые двойные кавычки, используйте для этого ", как показано в следующем примере:
"Новая
Можно также использовать апостроф & a p o s ; для кавычек в атрибуте:
alt='I've never been in
Заключение значения атрибута в кавычки в HTML было необязательным, но многие дизайнеры делали именно так, поэтому в этой области при переходе на XHTML делать ничего не потребуется. Некоторые сайты не использовали кавычки, чтобы снизить трафик. Для перехода на XHTML им придется начать делать это. Программа HTML Tidy может расставить все необходимые кавычки автоматически. На самом деле с ее помощью можно автоматически выполнить все упомянутые в этой главе задачи для перехода на XHTML.
Все атрибуты должны иметь значения Всем атрибутам в XHTML должны быть присвоены значения. Таким образом, атрибутам в следующем фрагменте HTML-кода: должны быть присвоены значения. Значения должны быть идентичны самим атрибутам: Мы знаем, знаем. Выглядит странно и требует привыкания. Но, ничего не поделать, это стандарты.
Закрывайте все теги В HTML можно было открывать некоторые теги, например <р> и < l i > , и не закрывать их. Ниже приведен фрагмент вполне приемлемого HTML-кода, но никуда не годного XHTML-кода:
Преобразование в XHTML: простые правила, яешое py введете!»
181
<р>Это корректный HTML-код, но он не годится для XHTML. <р>Я забыл закрыть тег абзаца! <р>Но, HTML все равно. Зачем вообще было изменять эти правила? В XHTML все открытые теги должны быть закрыты: <р>Это корректный HTML-код, и он годится для XHTML.р> <р>Я закрываю все теги после открытия.р> Это правило, что каждый тег должен быть закрыт после его открытия, выглядит более разумным, чем неразбериха в HTML, и оно может помочь избежать ненужных проблем. Например, если вы забудете закрыть тег абзаца, в некоторых браузерах может возникнуть проблема отображения CSS на вашей странице. XHTML принуждает вас закрывать все теги и, таким образом, обеспечивает работоспособность вашей страницы.
«Пустые» теги тоже нужно закрывать В XHTML даже «пустые» теги, такие как и , также необходимо закрывать с помощью прямого слэша (/) в конце тега: Обратите внимание на слэш (/>) после тега разрыва страницы. Теперь присмотритесь к слэшу после тега изображения. Перед ними необходимо вставлять пробел, чтобы браузеры, созданные до появления стандарта XHTML, также распознавали их. Последние версии BBEdit, PageSpinner и HomeSite автоматически добавляют пробелы и слэшы к пустым тегам, если вы укажете, что создаете XHTML-документ (рис. 6.2). Так же поступают и визуальные редакторы вроде Dreamweaver и GoLive. Вообще-то, для повышения доступности элемент изображения в данном примере должен иметь атрибут a l t и t i t l e : Теперь это хороший XHTML-код.
Не используйте двойное тире в комментариях Двойное тире можно использовать только в начале и конце комментариев в XHTML. Таким образом, подобный фрагмент недопустим:
182
Глава 6* XHTIViL; реструктуризации Сети
Рис. 6.2. При работе в режиме XHTML в PageSpinner программа автоматически закрывает все теги и пишет названия элементов в нижнем регистре (www.optima-system.com/pagespinner)
^ i
'
I Шт
^
Необходимо либо заменить тире другими символами, либо разделять их пробелами: < I — Допустимый фрагмент - - как и разделитель, приведенный ниже —> < | = = = =:=: = =: = = = = = = — = =:=: = =: = = = =: — =: ->
Кодируйте все символы < и & Все символы «меньше» (<), когда они не являются частью тега, следует кодировать как & l t ; , а символы амперсанда (&), не являющиеся частью элементов escape-последовательности, следует кодировать как &атр;. Таким образом: She & he say t h a t x < у when z = 3.
следует писать как: She & he say t h a t x < у when z = 3.
Служба проверки кода W3C пропустит код с этими символами в незакодированном виде и выдаст предупреждение, тогда как анализатор XML сообщит о неустранимой ошибке. Примечание. Рекомендуем вам всегда кодировать и знак > как >. Несмотря на то что в этом нет жесткой необходимости, в этом случае ваш код будет более симметричным и понятным для других программистов. Итак, давайте рассмотрим изученные правила XHTML.
Кодировка: глупо, по-иастояще^у гну
те
183
Выводы: правила X H T M L Вот эти правила: • • • • • • • • •
документы начинайте с указания DOCTYPE и пространства имен; указывайте кодировку документа с помощью элемента МЕТА Content; названия всех элементов и атрибутов пишите строчными буквами; значения атрибутов заключайте в кавычки; значения присваивайте всем атрибутам; закрывайте все теги; закрывайте «пустые» теги пробелом и слэшем; не вставляйте двойные тире в комментарии; заменяйте знаки < и 8с на &11; и &атр;.
Оформленные в виде короткого списка правила XHTML выглядят простыми и понятными. Тем не менее, прежде чем мы продолжим, в эту бочку меда нужно добавить ложку дегтя.
Кодировка: глупо, по-настоящему глупо Возможно, читая раздел «Укажите кодировку страницы», вы спрашивали себя, зачем это нужно. Возможно, вы даже спросили себя о том, что такое кодировка страницы. Ответы на эти вопросы находятся ниже. Если вы спрашиваете себя, должны ли вы читать все эти утомительные объяснения до конца, отвечаем да. Если мы написали все это, то кто-то должен и прочитать. Кроме того, вы можете кое-чему научиться благодаря этому.
Unicode и другие к о д и р о в к и По умолчанию для документов XML, XHTML и HTML 4.0 используется кодировка Unicode (http://www.w3.org/International/O-unicode.html), стандарт, принятый Unicode Consortium (www.unicode.org). Стандарт Unicode является удобной кодировкой, присваивающей уникальное число для каждого символа независимо от платформы, программы или языка. Unicode можно назвать универсальным алфавитом, только скорее это не алфавит, а цифровая схема соответствий. Несмотря на то что Unicode используется по умолчанию в Web-документах, разработчики могут выбрать и другую кодировку, лучше отвечающую их потребностям. Например, американские и западноевропейские Web-сайты часто используют кодировку ISO-8859-1 (Latin-1).
184
Глава 6. XHTIVIL; реструктуризация Сети
Что т а к о е ISO 8 8 5 9 ? ISO 8859 является группой стандартизированных побайтово-закодированных наборов символов для определения множества алфавитных языков, и первый из этих наборов - ISO-8859-1 (также называемый Latin-1) используется для западноевропейских языков. ISO-8859 включает в себя Latin-2 (восточноевропейский стандарт), турецкий язык, греческий, иврит, русский и другие. Стандарт ISO-8859 был создан в середине 80-х годов Европейской ассоциацией производителей компьютеров (ЕСМА) и одобрен Международной организацией по стандартизации (ISO).
Объявление кодировки Независимо от выбранной кодировки вам следует указать ее в документе, как упоминалось ранее. Для этого можно выбрать один из трех способов: • администратор сервера может указать кодировку с помощью заголовков HTTP, возвращаемых Web-сервером. W3C рекомендует именно такой способ, но мало кто использует его на практике. Возможно, потому, что администраторы серверов чаще заняты игрой в сетевые игры, чем заголовками HTTP; • для документов XML, включая XHTML, дизайнеры/разработчики могут указать кодировку с помощью объявления XML. W3C также рекомендует этот способ, но пока браузеры не научатся корректно обрабатывать код, мы не советуем поступать таким образом; • в документах HTML или XHTML можно указать кодировку с помощью метаэлемента Content-Type. Мы советуем именно такой способ, так как, в отличие от системного администратора, который может забыть о своей работе, и от пролога XML, который может быть неправильно обработан браузером, данный способ является наиболее надежным. Поздравляем! Вы только что закончили чтение самой неинтересной части этой книги. Теперь перейдем к переосмыслению Web-дизайна как искусства и методов создания сайтов.
Структурное исцеление Разработка сайтов в XHTML не ограничивается переходом с верхнего регистра на нижний и добавлением слэшей в конце некоторых тегов. Если бы дело
Структурны* исцеление
185
заключалось только в этом, все было бы слишком просто. Для получения позитивных результатов от использования XHTML необходимо воспринимать код как нечто структурное, а не визуальное.
Создание кода с учетом логики, а не стиля Запомните: насколько это возможно, используйте CSS для разметки страницы. В мире Web-стандартов код XHTML используется не для оформления внешнего вида, а для формирования структуры документа. Документы с хорошей структурой так же доступны пользователям карманных компьютеров и программ для чтения информации с экрана, как и пользователям последних версий компьютерных браузеров. Такие документы так же корректно отображаются в старых браузерах, не поддерживающих CSS, как и в новых, пользователи которых по тем или иным причинам отключили CSS. Конечно, не любой сайт может отказаться от использования табличной HTML-разметки. Изобретатели CSS W3C не спешили переводить свой сайт на CSS-разметку до декабря 2002 года. Кроме того, даже самые ярые приверженцы стандартов не всегда в состоянии отделить структуру от оформления, по крайней мере не в XHTML 1. Но такое отделение структуры от внешнего вида (или данных от дизайна) является идеалом, к которому все мы должны стремиться. Ниже вы найдете некоторые советы, которые помогут вам начать мыслить структурно.
Цвет внутри границ В школе нам всем приходилось писать сочинения в тетрадках одинакового размера. Когда мы стали дизайнерами, мы почувствовали свободу от ненужных границ и пустились в плавание по волнам самовыражения. И все же в HTML нам приходилось всегда размещать текстовый контент в некоторой ограниченной иерархией структуре. После того как браузеры стали поддерживать CSS, мы получили возможность создавать документы более свободно. При создании текста для сайта или преобразовании имеющихся документов в Web-страницы старайтесь мыслить в контексте традиционных, последовательных границ: <Ь1>ТемаЫ>
•
<р>Введениер> <112>ПодзаголовокЬ2> <р>Текстр>
• • -
186
Глава 6. XHTML: реструктуризация Сети
Старайтесь избегать использования устаревших HTML-элементов, например тегов или бессмысленных элементов , для имитации логической структуры там, где ее нет. Например, не пишите так: TeMa Введение<Ьг / x b r /> Подзаголовок .
/> -
Используйте элементы согласно их значению, а не внешнему виду Некоторые из нас имеют обыкновение помечать текст тегом , когда мы хотим сделать его покрупнее, или использовать тег < l i > , когда мы хотим добавить перед текстом маркер. Мы привыкли, что означает крупный шрифт, < l i > - маркер, a - отступ. С помощью структурных элементов HTML мы создаем внешний вид страницы. Или, например, если дизайнер хочет сделать одинаковым размер всех заголовков, он может использовать для этого тег , хотя это и создает структурную неразбериху, а специалист по юзабилити Джейкоб Нильсен назвал бы это грехом, если бы не был так занят проблемой цвета ссылок: 3To главный заголовок, вернее, он был бы таким, если бы я организовал свой текст. 3To не главный заголовок, но я хотел, чтобы он был такого же размера, как и главный заголовок. Кроме того, я не умею работать с CSS. A это вообще не заголовок. Но я очень хотел, чтобы весь текст на странице был одного размера. Если бы я знал о CSS, я бы смог добиться этого без пожертвования структурой документа.Ы> Игры кончились, пора начать использовать элементы по их назначению, а не по внешнему виду. На самом деле может выглядеть, как вы того захотите. Например, в CSS тег может быть мелким и в шрифте Roman, текст с тегом <р> может быть крупным и полужирным, < l i > может не иметь маркера (или же может вместо него использовать изображение в формате PNG, GIF или JPEG) и так далее. Начиная с сегодняшнего дня мы будем использовать CSS для задания внешнего вида элемента. Мы даже можем установить их внешний вид в зависимости от их расположения на странице или сайте. Больше нет необходимости (если
Структурное исцеление
187
она вообще когда-либо была) использовать < l i > для целей, отличных от его предназначения, - указывать, что элемент является частью списка других схожих элементов. CSS полностью отделяет внешний вид документа от структуры, позволяя придать любому элементу требуемый стиль. В совместимых с CSS браузерах при желании можно сделать, чтобы заголовки всех шести уровней (hl-h6) выглядели одинаково: h i , h2, h 3 , h4, h5, h6 { font-family: georgia, palatino, "Book Antiqua", times, serif; font-weight: normal; font-size: 2 em; margin-top: lem; margin-bottom: 0; }
Зачем вам это может понадобиться? Например, чтобы создать определенный стиль в графических браузерах и сохранить структуру документа в текстовых браузерах и беспроводных устройствах. Но давайте не будем забегать вперед и обсуждать приемы CSS в главе, посвященной XHTML. Мы просто хотели показать, что внешний вид и структура документа являются различными понятиями и структурные элементы следует использовать для структуры, а не для создания дизайна.
Предпочтение структурных элементов бессмысленному коду Так как мы забыли или не знали, что элементы HTML и XHTML предназначены для структуризации документов, многие из нас стали создавать код, не содержащий структуры вовсе. Например, многие HTML-дизайнеры создают список на своих страницах следующим образом: Пункт списка Еще один пункт Следующий пункт
Вместо этого можно использовать такой код:
188
Глава 6* XHTIVIL; ре€трумтуртацтт Сети
«Но < 1 i> добавляет маркер, а мне он не нужен!» - можете возразить вы. Ответ приведен в предыдущем разделе. CSS отображает структурные элементы так, как вы скажете ему. Отключить маркер для CSS - это пара пустяков. Он может заставить список выглядеть как обычный текст абзаца или как графическая панель навигации со всевозможными эффектами при наведении на нее указателя мыши. Поэтому используйте элемент < l i > для создания списков. Также предпочитайте <strong> тегу , <em> - и так далее. По умолчанию большинство браузеров отобразит <strong> как , a <em> как , что создаст желаемый визуальный эффект без ущерба для структуры документа. Пока еще нам не попадался браузер, отображающей <strong> иначе, чем полужирным (конечно, если сам дизайнер не захочет этого). Если же вы волнуетесь, что вдруг попадется какой-нибудь странный браузер, отображающий < s t r o n g > по-своему, можно использовать следующее правило CSS: strong
{ font-weight: bold; font-style: normal; }
Использование структурного кода вроде <strong> гарантирует, что пользователи текстовых браузеров и альтернативных устройств не столкнутся с ситуацией, когда вместо структурной страницы перед ними откроется бессмысленный набор знаков.
Визуальные элементы и структура Соблюдение Web-стандартов проявляется не только в используемых нами технологиях, но и в том, каким образом мы их используем. XHTML-код и разметка в CSS не делают автоматически наши сайты более доступными, совместимыми или компактными. XHTML или CSS важно использовать правильно. Некорректный XHTML-код производит трафика» не меньше, чем такой же HTML-код. Громоздкий, чрезмерно нагруженный CSS не станет правильной заменой разметки таблицами HTML, это всего лишь замена одной плохой вещи на другую. Советы, приведенные в разделе «Структурное исцеление», помогут избежать сложных, семантически бессмысленных структур. А как же быть с визуальными элементами, например с панелью навигации, которая обычно включает в себя и логотип компании? Могут ли эти элементы быть структурными? Должны ли они быть такими?
Визуальные элементы и структура
189
Ответ на первый вопрос - да. Визуальные элементы, включая панели навигации, могут быть структурными. Например, CSS позволяет создать маркированный список, выглядящий как панель навигации с кнопками и эффектами при наведении курсора мыши на нужный элемент. Ответ на второй вопрос - визуальные элементы вроде навигационного меню не обязательно следует структурировать в смешанной, переходной разметке. Если разметка имеет четкую структуру, корректный код XHTML и CSS, обеспечена доступность - то вы достигли всех переходных стандартов совместимости и вам нечего будет стыдиться. В следующей главе мы рассмотрим различия между хорошим и плохим кодом и поговорим о том, как создать чистый и компактный код в неструктурированных компонентах смешанной, переходной разметки.
Г Л MB 7. Структура и метаструктура в строгой и смешанной разметке
О
чем бы вы ни думали, не пропускайте эту главу. Ее прочтение усовершенствует ваши навыки и углубит понимание разницы между кодом и дизайном. В этой главе мы коснемся некоторых идей, легких для понимания, которые могут значительным образом изменить облик вашего сайта и облегчить работу над его созданием, дизайном и обновлением. В этой главе мы покажем, как писать логичный, компактный код, который может снизить трафик практически на 50%, таким образом ускорить загрузку сайта и снизить нагрузку на сервер. Мы достигнем этих результатов, устранив из XHTML-кода ненужные элементы, а также научимся избегать зловредных приемов, не дающих хороших результатов. Эти приемы заразили множество сайтов, особенно те, которые используют некоторые элементы CSS в сочетании с табличной разметкой. Почти всегда это выполнено неаккуратно и неверно, даже если дизайнеры и являются опытными профессионалами. Такие проблемы могут появиться и на сайтах, написанных вручную, и на созданных в визуальных редакторах вроде Dreamweaver и GoLive. В данной главе мы перечислим наиболее распространенные ошибки, чтобы вы знали о них и обезопасили себя от их использования, а также мы расскажем, какие приемы использовать вместо них. Мы также познакомимся с идентификатором id и покажем, как с его помощью писать ультракомпактные коды XHTML при создании смешанной или чистой CSS-разметки.
Должен ли каждый элемент быть структурным? Ранее мы упомянули, что навигационные элементы на сайтах, избравших переходный подход, могут быть не структурированными. Более того, мы полагаем,
Должен ли каждый элемент быть структурные?
191
что даже в чистой CSS-разметке некоторые компоненты могут быть не структурированными, по крайней мере с точки зрения «заголовок-абзац-список», описанной в главе 6. Тем не менее эти элементы могут быть метаструктурированными. То есть они могут быть созданы с помощью общих структурных элементов и определенных атрибутов, указывающих на специфическую структурную роль, которую они выполняют в дизайне сайта. Это делается не для каких-то теоретических целей, а для самых необходимых - например, для снижения трафика и облегчения обслуживанием сайта. Рубрика ежедневных новостей на сайте zeldman.com (рис. 7.1) использует CSS для разметки и XHTML для создания структуры. Почти все элементы кода структурны - от списков до абзацев и логотипа.
Рис. 7.1. Рубрика ежедневных новостей на zeldman.com. CSS для разметки, XHTML для кода. Навигационные элементы вверху страницы не структурированы или наоборот?
192
Глава 7, Структура и метаоруктура в строгой и смешанной размети:©
Навигационные графические элементы вверху страницы не структурированы с точки зрения, приведенной в главе 6. Это всего лишь изображения со ссылками, расположенные внутри элемента div, которому присвоено уникальное имя с помощью атрибута id. Затем мы просто наблюдаем, как эти компоненты создают метаструктуру, уменьшают размер страницы и контролируют разметку.
div, id и другие помощники В этой и последующих главах будет часто упоминаться элемент d i v и атрибут id. При правильном использовании d i v является незаменимым помощником при создании структурного кода, тогда как с помощью id вы сможете создавать удивительно компактный код, разумно применять CSS и придавать сайту любую динамику посредством управления объектной моделью документа (DOM). W3C следующим образом определяет эти и другие элементы HTML/XHTML: «Элементы d i v и span вместе с атрибутами id и c l a s s представляют собой механизм для формирования структуры документа. Span указывает на то, что контент должен располагаться в строке, a d i v - в блоках, однако больше никаких ограничений на внешний вид не накладывается. Таким образом, дизайнеры могут использовать эти элементы совместно с таблицами стилей для изменения HTML-кода в соответствии со своими нуждами (http://www.w3.org/ TR/REC-html40/struct/global.html#h-7.5.4)». Что такое div. «div» является сокращением от «division» (часть, раздел). Когда вы собираете несколько ссылок вместе, это становится одной частью документа. Контент выделяется в другую, заявление об авторских правах - в третью, а нижнее меню страницы станет отдельной частью.
Общий механизм для частных структур Все HTML-программисты знакомы с общими элементами, такими как тег абзаца или h i , но некоторые могут быть не знакомы с div. Ключ к пониманию сущности d i v лежит в его определении W3C как «общий механизм для добавления структуры». В примере с сайтом zeldman.com элементы навигационной графики заключены в теги div, так как они не являются частью абзаца, списка или другого заданного структурного элемента. Но в более общем смысле слова эти изображения играют определенную структурную роль, а именно выполняют роль навигационных элементов. Чтобы выделить эту роль, элементу div с изображениями присвоен
Должен пи каждый элемент быть структурным?
193
атрибут id «primenav», что является используемым мной сокращением от «primary navigation», то есть «основная навигация». Вы можете использовать любое другое название на свой вкус. Но лучше всего подходят метаструктурные названия (то есть названия, объясняющие выполняемые элементом функции). Это позволяет избежать такой ситуации, когда при просмотре кода спустя, скажем, полгода после его создания, вы будете мучительно вспоминать, о каком элементе идет речь - области навигации, боковой панели, форме поиска или еще чем-нибудь. Кроме того, использование структурных меток id вроде «меню», «контент» или «форма поиска» будет напоминать вам, что код - это не дизайн, и структурная страница может выглядеть, как вы пожелаете. Работаете ли вы с чистым CSS или со смешанной разметкой (CSS и таблицы), если вы возьмете за правило присваивать структурные названия основным компонентам страницы (таким, как навигация, контент и области поиска), то вы автоматически начнете удаляться от беспорядочного кода.
id против class Атрибут id не является новичком в XHTML, так же как c l a s s или элементы d i v и span. Все они происходят из HTML. С помощью атрибута id можно присвоить элементу уникальное имя. Каждое имя можно использовать в пределах одной страницы только один раз. (То есть, если на вашей странице есть d i v с id «content», она не может содержать другой d i v или элемент с таким же именем.) В свою очередь, атрибут c l a s s можно использовать в пределах одной страницы несколько раз. (Например, пять абзацев на странице могут относиться к классу «small» или «footnote».) Приведенный ниже фрагмент кода поможет понять разницу между c l a s s n i d : 3десь разместить компоненты формы поиска.
Здесь разместить запись Be6nora.
В этих примерах d i v i d = " searchform" необходим для определения области страницы, содержащей форму поиска, тогда как d i v c l a s s = " b l o g e n t r y " можно использовать для определения области страницы под каждую запись веблога (более привычен термин блог). Так как на странице имеется только одна форма поиска, для нее выбран атрибут id. Но блог может содержать несколько записей, поэтому для него используется атрибут c l a s s . Если блог может обойтись без использования элементов div, если возможно использовать обычную структуру заголовков и абзацев - так даже лучше. Ежедневные новости на zeldman.com многие называют блогом, хотя записи на этой странице оформлены общими элементами h3, h4 и р.
194
Глава Т, Структура и метаструктура в строгой и смешанной разметке
Теория стикеров Можно сравнить атрибут id со стикерами - ьслейкими записками, которые мы прилепляем на холодильник, чтобы не забыть купить молоко, или на телефон, чтобы не забыть перезвонить задолжавшему заказчику. Атрибут id схожим образом помечает определенную область кода, напоминая, что он требует какого-то особенного обращения. Для этого вы позднее напишете одно или несколько правил в таблице стилей или несколько строк кода в файле JavaScript, относящихся к этому id. Например, файл таблицы стилей CSS может содержать особые правила, относящиеся только к элементам с атрибутом id «searchform» или к таблице с id «menubar». Когда атрибут id используется в качестве метки для определенного набора правил CSS, он называется селектор CSS. Есть много способов создать селекторы (см. главу 9), в частности использовать id, что очень удобно и гибко.
Мощь id Атрибут id является чрезвычайно мощным инструментом. Помимо прочего, его можно использовать для решения следующих задач: • в качестве селектора таблиц стилей, что позволяет создавать компактный XHTML-код; • в качестве якоря для гипертекстовых ссылок, заменив им устаревший атрибут «name»; • для ссылки на определенный элемент основанного на DOM скрипта; • в качестве имени объявленного элемента объекта; • как средство для последующей обработки документа (например, для идентификации полей при извлечении данных из Web-страниц и занесения их в базу данных, при переводе документов HTML в другой формат и так далее). Правила применения атрибута i d . Значение id должно начинаться с буквы или подчеркивания, оно не может начинаться с цифры. Служба проверки кода W 3 C может и не заметит подобную ошибку, однако анализатор XML ее обнаружит. Также, если вы намереваетесь использовать id в JavaScript в форме d o c u m e n t . i d n a m e . v a l u e , необходимо присвоить ему допустимое имя переменной JavaScript, которое должно начинаться с буквы или символа подчеркивания и в которых не допускается использование пробелов или дефисов. Также нежелательно использовать символы подчеркивания в именах c l a s s или id по причине старых ограничений в CSS и старых браузерах.
Должен ли наждый элемент быть структурным?
195
Правила применения атрибута id (окончание). Наконец, для самых строгих приверженцев стандартов отметим, что первым символом в имени id или c l a s s может быть и цифра - вместо самой цифры необходимо указать соответствующую escapeпоследовательность. Правда, таким методом никто не пользуется.
Большая мощь дает большие возможности. Описанные здесь элементы и атрибуты зачастую используются ненадлежащим образом, увеличивая вес страницы вместо того, чтобы сделать код компактным, и удаляя всякий намек на структуру документа вместо ее создания. После прочтения этой главы вы сможете распознавать такие заблуждения и избегать их в своей практике.
Попробуйте делать меньше Теперь, после того как мы обсудили элементы XHTML общего назначения (в частности, d i v и id), давайте еще раз взглянем (рис. 7.1) на пример с сайта zeldman.com. Четыре больших изображения меню расположены с помощью общего элемента div, имеющего уникальную метаструктурную метку «primenav»: [Здесь разместить изображения со ссылками.] div> Этот способ отличается от более знакомого приема тем, что в описании элемента отсутствуют инструкции для его отображения - не указаны ни высота, ни ширина, ни фоновый цвет, ни горизонтальное или вертикальное выравнивание. Так как же браузер понимает, где расположено изображение? Давайте вспомним о рассмотренных ранее селекторах CSS. " primenav" как раз и является таким селектором. В одной из таблиц стилей сайта в правилах CSSуказано, что элемент "primenav" не имеет отступов и полей, - иными словами, он не окружен пустым пространством. Так как первый видимый элемент кода XHTML - это
, совместимые с CSS браузеры поместят его в верхний левый угол страницы. Четыре изображения элементов меню располагаются с помощью элемента "primenav" в строке один за другим. Нет необходимости использовать таблицу для выравнивания этих элементов относительно друг друга. Также не нужно выравнивать каждый элемент с помощью отдельного правила CSS. Элементы отображаются на странице в том же порядке, в котором они перечислены в XHTML-коде.
196 Г пава 1. Структура и гкетасгруктура в строгой и смешанной разметке
С помощью такого приема мы можем избежать табличной разметки и использования ненужных таблиц стилей, создав четкую разметку, которая загружается быстрее за счет отсутствия лишних правил CSS. Ниже приведен фрагмент кода сайта zeldman.com с удаленными элементами ссылки на JavaScript и условными путями к изображениям:
<а href="/"ximg src="/i/home.gif" width="150" height= H 100" border="0" alt="Home" />
Обратите внимание, что использование атрибутов высоты и ширины изображений желательно, но не обязательно. Также благодаря CSS атрибут границ является абсолютно ненужным, хотя мы и используем его в этом фрагменте для старых браузеров. Приведенный выше фрагмент кода мог бы выглядеть следующим образом:
<а href =" / "ximg src="/i/home.gif" alt = "Home" />
А теперь сравните компактность и логичность предыдущего примера с обычным кодом подобной табличной разметки:
Разница очевидна. Однако компактный код и метаструктурное мышление не ограничиваются только разметкой CSS. Они могут применяться и при табличной разметке.
Смешанная разметка и компактный код за и против
Страх изучения разметки CSS или невозможность ее использования в определенных проектах не должна становиться препятствием для применения Web-стандартов. Сочетая табличную разметку с CSS и структурным, доступным XHTML, можно получить хорошую Web-страницу, работающую во всех браузерах. Стандарт предупреждение. CSS все еще находится на стадиинекоторые развития, некоторые браузеры Небольшое Как мы отмечали, компоненты интерфейса по-прежнему только учатся обрабатывать CSS 1 и CSS 2, поэтому для некоторых сайтов со смешанной разметкой могут быть не структурированными. Но это не означапроектов имеет смысл использовать XHTML-таблицы расположеет, что оставшийся код таких сайтов не простые должен быть структурным. Вседля равно абзацы ния основных элементов не стоит путатьЭто табличную разметку с следует помечать как абзацы,сайта. спискиОднако - как списки и так далее. также не подразумебестолковой разметкой, сайты со смешанной и несколькими невает, что следует создаватьа навигационные меню илиразметкой другие компоненты с помощью структурными компонентами довольно сильно отличаются от запутанного бесописанных ранее в этой книге неверных методов и приемов. Структурный элемент или толкового кода, используемого большинстве сайтов и по сей день. нет - в любом случае необходимо в использовать четкий, компактный код и CSS.
198
Глава ?* Структуpa m e i
Плохая практика В следующем разделе мы рассмотрим неверные способы создания сайтов и объясним, почему такие методы являются непродуктивными. Мы также поименно назовем наиболее часто используемые ошибочные приемы. После прочтения этого раздела вы не только сможете научиться избегать использования таких приемов в своей работе, но и сможете распознавать их в проектах своих коллег. Когда вы прочтете этот раздел и запомните приведенные в нем уроки, вы с легкостью сможете пресечь все попытки ваших коллег подсунуть вам плохой код. Вы всегда сможете позвонить им, сообщить об обнаруженных ошибках и дать свои рекомендации. Благодаря этому ваши коллеги обретут уважение к хорошему коду, уважение к вам и, помимо этого, начнут испытывать сильное чувство дискомфорта, когда вы находитесь рядом с ними. На самом деле мы придумали названия этим распространенным ошибкам в первую очередь для того, чтобы как-то идентифицировать их и изжить из своей практики. Надеемся, что это поможет и вам.
Распространенные ошибки смешанной разметки Давайте рассмотрим типичный для табличной разметки дизайн сайта (рис. 7.2) с навигационным меню (рис.7.3), изменяющим свой внешний вид (рис. 7.4) в зависимости от местонахождения пользователя на сайте. В качестве логотипа сайта, скорее всего, будет использоваться простое изображение, вероятнее всего, в формате GIF. Пункты меню (События, О компании, Контакты и т.д.) могут также быть как изображениями, так и простыми гипертекстовыми ссылками. Если используются гипертекстовые ссылки, сторонники старых методов воспользуются тегами шрифта для управления внешним видом (размер, шрифт, цвет) и устаревшими атрибутами для выравнивания, установки границ и фонового цвета ячейки таблицы, содержащей пункт меню. Современные дизайнеры обратятся для этого к CSS, однако при неверном использовании полученные результаты могут быть еще хуже. Даже если для пунктов меню используются изображения GIF, дизайнер, скорее всего, постарается как-то выделить меню на фоне других элементов сайта. Например, использовать для меню тонкие черные границы (рис. 7.3-7.4), тогда как остальные элементы сайта обходятся без границ. В еще более запущенном случае дизайнер может поместить таблицу с меню внутри другой таблицы, единственной целью которой является создание рамки. Вот так мы создавали
тат ртштш ш компактный над - за и против
199
200
Глава 1. Структура и метаструнпгура в строгой и смешанной разметке
сайты в 1997 году. Сегодня дизайнеры могут комбинировать плохой код с чрезмерно раздутым CSS, чтобы добиться такого же эффекта. Однако такой способ ничем не лучше предыдущего.
Класситсы: болезнь кода Каким образом мы отличаем ячейки таблицы, служащие пунктами меню, от остальных ячеек на странице? Или заставляем ссылки внутри этих ячеек отличаться от всех иных ссылок страницы? Точно не с помощью устаревших тегов оформления и атрибутов вроде bgcolor, как вы уже могли догадаться. Мы не используем подобный код:
Co6HTMH и так далее.
Но также мы не хотим, чтобы к каждому элементу, требующему особенного обращения, присваивался c l a s s , что встречается довольно часто: Co6HTMH и так далее.
Как бы это ни было прискорбно, но мы признаемся, что видели даже такие образцы: Co6HTMH и так далее. Мы называем такой стиль разметки класситсом (classitis). На подобных сайтах каждый тег имеет свой класс. Чрезмерное использование элемента c l a s s необоснованно увеличивает размер кода каждой страницы. Появление этого приема уходит корнями во времена, когда браузеры едва-едва поддерживали CSS, а также оно отражает весьма неглубокие и поверхностные познания дизайнера в CSS. Возможно также, что многие дизайнеры так и не переросли этот этап поверхностных знаний о CSS, так как перешли на изучение других технологий Web-дизайна, или учили CSS с помощью просмотра кода, создаваемого их визуальными редакторами, прилепляющими c l a s s к каждому генерируемому ими тегу.
Смешанная разметка и компактный нод - за и против
201
Визуальные редакторы и класситсы. Даже самый лучший и современный визуальный редактор все равно норовит вставить несколько ненужных атрибутов c l a s s туда, где они совершенно не нужны. Это объясняется именно тем, что это визуальные редакторы, а не люди, которые могут абстрагироваться от частностей и мыслить глобально. То есть, когда вы задаете абзацу стиль в CSS, вы знаете, что собираетесь задать этот стиль всем абзацам. Но редактор не может читать ваши мысли. Таким образом, например, если вы работаете в таком редакторе и создадите пять абзацев, отформатированных шрифтом Verdana I I px, приложение может создать для каждого абзаца свой c l a s s . Несмотря на всю мощь и совместимость со стандартами таких редакторов, как Dreamweaver и GoLive, вам все равно не помешает иногда просматривать созданный ими код и редактировать его.
202
Глава 7, Структура ш метаструктура в строгой и смешанной раздаетке
вы ни за что не догадаетесь, как элементы соотносятся друг с другом. По правде говоря, согласно этому коду, они никак не соотносятся друг с другом. Дивитсы превращают структуру в полный «мусор». Класситсы и дивитсы можно сравнить с ненужными нотами, которые играет музыкант школьной самодеятельности, или с бессмысленными словами-паразитами, используемыми современными писателями. Это сорняки в красивом саду логичной структуры. Удалите все класситсы из своего кода, и размер ваших страниц сократится вдвое. Без дивитсов у вас получится чистый, логичный структурный код, хорошо работающий и в текстовых, и в графических браузерах. Следуя этим правилам, вы сможете создавать более совместимые и грамотные Web-страницы.
В div нет ничего плохого Кто-то из вас, наверное, посчитал меня непоследовательным. В одном разделе я пишу, что использовать d i v не надо, а в первом примере этой главы (в описании меню zeldman.com) сам использовал div. Как это понимать? На самом деле я никогда не говорил, что использовать d i v - плохо. Тег div является вполне приемлемым элементом кода, предназначенным для расположения структурных элементов на вашем сайте. Но стоит не использовать d i v лишь тогда, когда вы слишком часто заменяете им другие, более уместные элементы. То есть, если вы создали абзац, то пусть он будет абзацем и помечен соответствующим образом, а не элементом d i v класса t e x t . Самый крупный заголовок на странице должен быть помечен тегом h i , а не . Чувствуете разницу? Конечно, да.
Почему div? Многие дизайнеры используют тег d i v в далеком от структуры контексте для замены любых элементов - от абзаца до заголовка. Большинство из них приобрели эту привычку, обнаружив, что браузеры 4.0, в частности Netscape, вставляли ненужное пустое пространство, разрушающее разметку, вокруг структурных элементов вроде , однако с разметкой, использующей неструктурные элементы div, все было хорошо. Пытаясь сохранить мельчайшие нюансы разметки для стремительно снижающегося числа пользователей браузеров четвертых версий, многие дизайнеры так увлеклись, что стали настаивать на использовании неструктурных элементов d i v вместо обычных элементов абзаца, заголовка и так далее. Цена такого метода высока. Такие сайты практически недоступны растущему числу пользователей карманных компьютеров, мобильных телефонов и программ
Смешанная разметка и компактный над - за ш против
203
для чтения информации с экрана. Кроме того, такой код совершенно неоправданно увеличивает используемый трафик. Еще одним примером использования дивитсов является ситуация, когда дизайнер заражается вирусом «таблицы - плохо, CSS - хорошо» и с энтузиазмом заменяет 200 т «замусоренного» кода на 200 т вложенных di v. Таким образом нельзя добиться положительного результата, вместо этого лишь затрудняется редактирование документов.
Любовь к id Итак, если неструктурный код отменяется, класситсы и дивитсы тоже, то какие правила дизайна мы применим к области навигации нашего сайта при смешанной разметке, сочетающей таблицы и CSS? Мы сделаем это с помощью атрибута id. Присвоим уникальную, метаструктурную метку таблице, содержащей меню: