Справочник от Автор24
Поделись лекцией за скидку на Автор24

Веб-программирование.

  • 👀 836 просмотров
  • 📌 821 загрузка
Выбери формат для чтения
Загружаем конспект в формате pdf
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Конспект лекции по дисциплине «Веб-программирование.» pdf
Веб-программирование. Конспект лекций http://4stud.asoiu/web-programming/lectures.php Веб-программирование. Конспект лекций Имеется обновленная версия этого конспекта: www.4stud.info/ Содержание 1. 2. 3. 4. 5. 6. 7. 8. 9. Основы World Wide Web (WWW) Основы HTML Каскадные таблицы стилей Протокол HTTP Динамический HTML. DOM и клиентские скрипты Общий шлюзовый интерфейс (CGI) Модули веб-сервера. ISAPI и apache modules Расширяемый язык разметки XML. Технологии на основе XML. Перспективы развития веб-технологий Основы World Wide Web (WWW) Что такое Интернет? Интернет - это глобальная компьютерная сеть, объединяющая локальные сети предприятий и организаций и компьютеры отдельных пользователей в общее информационное пространство. Интернет использует для связи магистральные каналы поставщиков телекоммуникационных услуг и клиентские каналы («последняя миля»). Интернет представляет свою инфраструктуру для прикладных сервисов различного назначения (файлообменных, почтовых, гипертекстовых, VoIP и проч.) Что такое WWW? World Wide Web (WWW, web, веб, Всемирная паутина) — это распределенная информационная система, предоставляющая доступ к гипертекстовым документам по протоколу HTTP (HyperText Transfer Protocol). WWW - это сетевая технология, построенная на клиент-серверной архитектуре и использующая инфраструктуру Интернет для взаимодействия между сервером и клиентом (рис. 1). Серверы WWW (web-серверы) - это хранилища гипертекстовой (в общем случае) информации. Документы, представленные в виде гипертекста называются web-страницами. Несколько web-страниц, объединенных общей тематикой, оформлением, связанных гипертекстовыми ссылками и обычно находящихся на одном и том же web-сервере, называются web-сайтом. По данным за октябрь 2009 г. (http://netcraft.com) во Всемирной паутине насчитывалось более 230 млн. сайтов, размещенных на миллионах web-серверов. Для загрузки и просмотра информации с web-сайтов используются специальные программы — браузеры. Браузер - это программа, способная понимать гипертекст и отображать содержимое веб-страниц. Стр. 1 из 63 25.05.2011 10:15 Веб-программирование. Конспект лекций http://4stud.asoiu/web-programming/lectures.php Рис.1. Клиент-серверная архитектура WWW Тим Бернерс-Ли Сэр Тимоти Джон Бернерс-Ли — британский учёный-физик, изобретатель концепции Всемирной паутины (совместно с Робертом Кайо), автор URL, HTTP и HTML. Действующий глава Консорциума Всемирной паутины (W3C). Автор концепции семантической паутины и множества других разработок в области информационных технологий. Как работает WWW? В основе WWW - взаимодействие веб-сервера и браузеров по специальному протоколу (HTTP). Веб-сервер - это программа, запущенная на сетевом компьютере и ожидающая клиентские запросы по протоколу HTTP. Браузер может обратиться к веб-серверу по доменному имени или по ip-адресу, передавая в запросе идентификатор требуемого ресурса. Получив запрос от клиента, сервер находит соответствующий ресурс на локальном устройстве хранения и отправляет его как ответ. Браузер принимает ответ и обрабатывает его соответствующим образом, в зависимости от типа ресурса (отображает гипертекст, показывает изображения, сохраняет полученные файлы и т.п.). Основной тип ресурсов Всемирной паутины - гипертекстовые страницы. Гипертекст - это обычный Стр. 2 из 63 25.05.2011 10:15 Веб-программирование. Конспект лекций http://4stud.asoiu/web-programming/lectures.php текст, размеченный специальными управляющими конструкциями, тегами. Браузер считывает теги и интерпретирует их как команды форматирования при выводе информации. Теги описывают структуру документа, а специальные теги, якоря и гиперссылки, позволяют установить связи между веб-страницами и перемещаться как внутри веб-сайта, так и между сайтами. Возможности WWW обеспечиваются четырьмя составляющими: универсальный способ адресации ресурсов в сети URL (Universal Resource Locator); язык гипертекстовой разметки документов HTML (HyperText Markup Language); протокол передачи гипертекста HTTP (HyperText Transfer Protocol); общий шлюзовый интерфейс CGI (Common Gateway Interface). Что такое домен и доменное имя? Домен - определенная зона в системе доменных имён (DNS) Интернет, выделенная какой-либо стране, международной организации, региону, юридическому или физическому лицу для целей обеспечения доступа к предоставляемой им в Интернете информации. Примеры доменов: .edu, .ru, .com, .org, .net и т.д. Доменое имя - в системе DNS символьная строка, состоящая из имени домена ([и субдоменов]) и имени хоста в этом домене, сопоставленная с сетевым адресом этого хоста. Примеры доменных имен: example.com, test.example.com, test.test.example.com. Что такое URL? Для доступа к любым сетевым ресурсам необходимо знать где они размещены и как к ним можно обратиться. Во Всемирной паутине используется стандартизованная схема адресации и идентификации, учитывающую опыт адресации и идентификации e-mail, Gopher, WAIS, telnet, ftp и т.п. - URL, Uniform Resource Locator. URL (Uniform Resource Locator, RFC 1738) - унифицированный локатор (указатель) ресурсов, стандартизированный способ записи адреса ресурса в WWW и сети Интернет. Адрес URL имеет гибкую и расширяемую структуру для максимально естественного указания местонахождения ресурсов в сети. Для представления адреса используется ограниченный набор символов ASCII. Общий вид адреса можно представить так: <схема>://<логин>:<пароль>@<хост>:<порт>/<полный-путь-к-ресурсу> Где: схема схема обращения к ресурсу: http, ftp, gopher, mailto, news, telnet, file, man, info, whatis, ldap, wais и т.п. логин:пароль имя пользователя и его пароль, используемые для доступа к ресурсу хост доменное имя хоста или его IP-адрес. порт порт хоста для подключения полный-путь-к-ресурсу уточняющая информация о месте нахождения ресурса (зависит от протокола). Стр. 3 из 63 25.05.2011 10:15 Веб-программирование. Конспект лекций http://4stud.asoiu/web-programming/lectures.php Примеры URL: http://example.com #запрос стартовой страницы по умолчанию http://www.example.com/site/map.html #запрос заданной страницы в указанном каталоге http://example.com:81/script.php #подключение на нестандартный порт http://example.org/script.php?key=value #запрос с передачей параметров скрипту ftp://user:pass@ftp.example.org #подключение к ftp-серверу с авторизацией http://192.168.0.1/example/www #подключение по сетевому адресу file:///srv/www/htdocs/index.html #открытие локального файла gopher://example.com/1 #подключение к серверу gopher Версии HTML RFC 1866 — HTML 2.0, — 22.09.1995г.; HTML 3.2 — 14.01.1997г.; HTML 4.0 — 18.12.1997г.; HTML 4.01 — 24.12.1999г.; ISO/IEC 15445:2000 (ISO HTML, основан на HTML 4.01 Strict) — 15.05.2000г.; HTML 5 — с 2004 г. в разработке. Официальной спецификации HTML 1.0 не существует. До 1995г. существовало множество неофициальных стандартов HTML. Чтобы стандартная версия отличалась от них, ей сразу присвоили второй номер. Версия 3.1 официально никогда не предлагалась, и следующей версией стандарта HTML стала 3.2. В HTML 4.0 добавлены специфичные элементы, а некоторые теги были отмечены как устаревшие и нерекомендованные. Что такое HTML? HTML (HyperText Markup Language — «язык разметки гипертекста») — стандартный язык разметки документов во Всемирной паутине. Большинство веб-страниц созданы при помощи языка HTML. Язык HTML интерпретируется браузером и отображается в виде документа, в удобной для человека форме. HTML является приложением SGML (стандартного обобщённого языка разметки) и соответствует международному стандарту ISO 8879. HTML создавался как язык для обмена научной и технической документацией, пригодный для использования людьми, не являющимися специалистами в области вёрстки. Для этого он представляет небольшой (сравнительно) набор структурных и семантических элементов — тегов. С помощью HTML можно легко создать относительно простой, но красиво оформленный документ. Изначально язык HTML был задуман и создан как средство структурирования и форматирования документов без их привязки к средствам воспроизведения (отображения). В идеале, текст с разметкой HTML должен единообразно воспроизводиться на различном оборудовании (монитор ПК, экран органайзера, ограниченный по размерам экран мобильного телефона, медиа-проектор). Однако современное применение HTML очень далеко от его изначальной задачи. Со временем основная идея платформонезависимости языка HTML стала жертвой коммерциализации WWW и потребностей в мультимедийном и графическом оформлении. Что такое HTTP? HTTP (HyperText Transfer Protocol, RFC 2616, текущая версия HTTP/1.1) - протокол передачи гипертекста. Этот протокол изначально был предназначен для обмена гипертекстовыми документами, Стр. 4 из 63 25.05.2011 10:15 Веб-программирование. Конспект лекций http://4stud.asoiu/web-programming/lectures.php сейчас его возможности существенно расширены (в частности, добавлены функции поддержки потокового вещания). HTTP - типичный клиент-серверный протокол, обмен сообщениями идёт по схеме «запрос-ответ» в виде ASCII-команд. Особенностью протокола HTTP является возможность указать в запросе и ответе способ представления одного и того же ресурса по различным параметрам: формату, кодировке, языку и т. д. Именно благодаря возможности указания способа кодирования сообщения клиент и сервер могут обмениваться двоичными данными, хотя данный протокол является текстовым. HTTP - протокол прикладного уровня, но используется также в качестве «транспорта» для других прикладных протоколов, таких как SOAP, XML-RPC, WebDAV. Что такое CGI? Common Gateway Interface (CGI) - это механизм доступа к программам на стороне сервера. Спецификация Common Gateway Interface (CGI) была разработана для расширения возможностей WWW за счет подключения различного внешнего программного обеспечения. При использовании CGI веб-сервер представляет браузеру доступ к исполнимым программам, запускаемым на его (серверной стороне) через стандартные потоки ввода и вывода, что упрощает программирование до предела. Механизм CGI можно разделить на четыре части: переменные окружения, через них приложению передаются данные и служебная информация командная строка (при запросах типа ISINDEX) стандартный ввод, используемый при передаче данных по методу POST стандартный вывод, который предназначен для возврата данных серверу. Интерфейс CGI используется для создания динамических веб-сайтов, например, когда веб-страницы формируются из результатов запроса к базе данных. Сейчас популярность CGI снизилась, т.к. появились более совершенные альтернативные решения (например, модули расширения веб-серверов). Программное обеспечение WWW Веб-серверы Веб-сервер — это сетевое приложение, обслуживающее HTTP-запросы от клиентов, обычно веб-браузеров. Веб-сервер принимает запросы и возвращает ответы, обычно вместе с HTML-страницей, изображением, файлом, медиа-потоком или другими данными. Веб-серверы — основа Всемирной паутины. Созданием программного обеспечения web-серверов занимаются многие разработчики, но наибольшую популярность в WWW получили такие программные продукты, как Apache (Apache Software Foundation), IIS (Microsoft), QZHTTP (он же qq.com), Google Web Server (GWS, Google Inc.) и nginx (И.Сысоев) (Рис. 2) Apache - свободный web-сервер с открытым исходным кодом, распространяется под совместимой с GPL лицензией. Apache уже многие годы является лидером по распространенности во Всемирной паутине в силу своей надежности, гибкости, масштабируемости и безопасности. IIS (Internet Information Services) - проприетарный набор серверов для нескольких служб Интернета, разработанный Майкрософт и распространяемый с ОС семейства Windows NT. Основным компонентом IIS является веб-сервер, также поддерживаются протоколы FTP, POP3, SMTP, NNTP. Стр. 5 из 63 25.05.2011 10:15 Веб-программирование. Конспект лекций http://4stud.asoiu/web-programming/lectures.php QZHTTP - модифицированный Apache, используемый на китайском портале qq.com. На нем размещены сервисы онлайн-дневников и мгновенного обмена сообщениями. Google Web Server (GWS) - разработка компании Google на основе web-сервера Apache. GWS оптимизирован для выполнения приложений сервиса Google Applications. nginx [engine x] — это HTTP-сервер, совмещенный с почтовым прокси-сервером. Разработан И.Сысоевым для компании Рамблер. Осенью 2004 года вышел первый публично доступный релиз, сейчас nginx используется рядом крупных сайтов. lighttpd — веб-сервер, разрабатываемый с расчётом на быстроту и защищённость при использовании на сильно нагруженных сайтах, а также соответствие стандартам. lighttpd — свободное программное обеспечение, распространяемое по лицензии BSD. Рис. 2. Распределение web-серверов на октябрь 2009 г. (по данным netcraft.com) Браузеры Браузер, веб-обозреватель (web-browser) — это клиентское программное обеспечение для доступа к веб-серверам по протоколу HTTP и просмотра веб-страниц. Как правило браузеры дополнительно поддерживают и ряд других протоколов (например ftp, file, mms, pop3). Первые HTTP-клиенты были консольными и работали в текстовом режиме, позволяя читать гипертекст и перемещаться по ссылкам. Сейчас консольные браузеры (такие, как lynx, w3m или links) практически не используются рядовыми посетителями веб-сайтов. Тем не менее такие браузеры весьма полезны для веб-разработчиков, так как позволяют "увидеть" веб-страницу "глазами" поискового робота. Исторически первым браузером в современном понимании (т.е. с графическим интерфейсом и т.д.) была программа NCSA Mosaic, разработанная Марком Андерисеном и Эриком Бина. Mosaic имел довольно ограниченные возможности, но его открытый исходный код стал основой для последующих разработок. Стр. 6 из 63 25.05.2011 10:15 Веб-программирование. Конспект лекций http://4stud.asoiu/web-programming/lectures.php Ныне браузер — комплексное приложение для обработки и вывода разных компонентов веб-страницы. Наибольшую распространенность в мире имеют четыре браузера (с появлением Google Chrome их стало пять): Internet Explorer (Microsoft), Firefox (Mozilla Foundation), Safari (Apple) и Opera (Opera Software ASA) (Рис. 3). Internet Explorer (IE) - браузер, разработанный компанией Майкрософт, является наиболее распространенным в мире. Это связано с тем, что IE тесно интегрирован c ОС Windows и поставляется вместе с ней. Платформозависим (поддержка сторонних ОС прекращена, начиная с версии 5). Единственный браузер, напрямую поддерживающий технологию ActiveX. Не полностью совместим со стандартами W3C, в связи с чем требует дополнительных затрат от веб-разработчиков. Firefox - свободный кроссплатформенный браузер, разрабатываемый Mozilla Foundation и распространяемый под тройной лицензией GPL/LGPL/MPL. В основе браузера - движок Gekko, который изначально создавался для Netscape Communicator. Однако, вместо того, чтобы предоставить все возможности движка в стандартной поставке, Firefox реализует лишь основную его функциональность, предоставляя пользователям возможность модифицировать браузер в соответствии с их требованиями через поддержку расширений (add-ons), тем оформления и плагинов. Такая лёгкая расширяемость достигается, в основном, за счёт использования в интерфейсе специально разработанного исключительно для Gecko языка разметки XUL и стандартных JavaScript и CSS. Это иногда приводит к более медленной работе интерфейса и повышенным требованиям к оперативной памяти. Для тех, кому нужны функции движка Gecko, а не расширяемый интерфейс, существуют сторонние браузеры, в которых интерфейс реализован по-другому; например, Camino, SeaMonkey, Epiphany и Kazehakase. Safari - проприетарный браузер, разработаный корпорацией Apple и входящий в состав операционной системы Mac OS X. Бесплатно распространяется для операционных систем семейства Microsoft Windows. В браузере используется уникальный по производительности интерпретатор JavaScript, опережающий аналоги более чем в 2 раза. Среди других особенностей: функция «Snapback», которая позволяет мгновенно вернуться к исходным результатам поиска или к верхнему уровню любого веб-сайта; те же графические технологии, что и в Mac OS X; предварительная поддержка стандартов CSS3 и HTML 5; автоматическое распознавание и подгрузка отсутствующих в системе шрифтов; интеграция мультимедийных технологий QuickTime. Google Chrome — браузер с открытым исходным кодом, разрабатываемый компанией Google. Первая стабильная версия вышла 11 декабря 2008 года. В отличие от многих других браузеров, в Chrome каждая вкладка является отдельным процессом. В случае если процесс обработки содержимого вкладки зависнет, его можно будет завершить без риска потери данных других вкладок. Еще одна особенность интеллектуальная адресная строка (Omnibox). К возможности автозаполнения она добавляет поисковые функции с учетом популярности сайта, релевантности и пользовательских предпочтений (истории переходов). Планируется кроссплатформенность. Opera — кроссплатформенный многофункциональный веб-браузер, разработанный в 1994 году группой исследователей из норвежской компании Telenor. Дальнейшая разработка ведется Opera Software ASA. Браузер Opera обладает высокой скоростью работы и совместим с основными стандартами WWW. Отличительными особенностями Opera долгое время являлись многостраничный интерфейс (система вкладок) и возможность масштабирования веб-страниц целиком, вместе с графикой. Функция Small Screen Rendering позволяет переформатировать документ для отображения на экранах мобильных устройств. В Opera, кроме стандартных способов навигации предусмотрены так называемые «жесты мышью». На разных этапах развития в Opera были интегрированы возможности почтового/новостного Стр. 7 из 63 25.05.2011 10:15 Веб-программирование. Конспект лекций http://4stud.asoiu/web-programming/lectures.php клиента Opera Mail, адресной книги, клиента сети BitTorrent, агрегатора RSS, клиента IRC, менеджера закачек, WAP-браузера, а также поддержка виджетов — графические модулей, работающих вне окна браузера. Специальные редакции, Opera Mobile и Opera Mini, существенно опережают прочие браузеры по числу установок на мобильные телефоны. Opera также единственный браузер для игровых систем Nintendo DS и Wii. Движок Opera (Presto) лицензирован Adobe и интегрирован в пакет для веб-разработчиков Adobe Creative Suite. До 2005 года Opera распространялся в виде ad-ware, а с 2005 года версии Opera для ПК и устройств мобильной связи (кроме Opera Mobile) доступны бесплатно. Рис. 3. Статистика браузеров за период 07.2008 г - 10.2009 г. (по данным statcounter.com) Основы HTML Язык разметки гипертекста HTML (HyperText Markup Language) — язык разметки гипертекста, предназначенный для создания веб-страниц. HTML представляет простые правила оформления и компактный набор структурных и семантических элементов разметки (тегов), которые позволяют создавать веб-страницы разной сложности. HTML позволяет описывать способ представления логических частей документа (заголовки, абзацы, списки и т.д.). Изначально язык HTML был задуман и создан как средство структурирования и форматирования документов без привязки к средствам отображения. В идеале, гипертекстовый документ должен одинаково выглядеть на различных устройствах (монитор ПЭВМ, экран ПДА или мобильного телефона, принтер, медиа-проектор и т.п.). HTML не является языком программирования, но веб-страницы могут содержать встроенные или загружаемые программы на скриптовых языках (в первую очередь Javascript) и программы-апплеты на языке Java. Стр. 8 из 63 25.05.2011 10:15 Веб-программирование. Конспект лекций http://4stud.asoiu/web-programming/lectures.php Версии HTML Разработкой спецификаций языка HTML и утверждением их в качестве официальных стандартов занимается Консорциум всемирной паутины (W3C). Помимо W3C, в развитии языка участвуют IT-компании и сообщество разработчиков. Официальной спецификации HTML 1.0 не существует. До 1995 года существовало множество неофициальных спецификаций HTML, появившихся в ходе браузерных войн. RFC 1866 — HTML 2.0, одобренный как официальный стандарт 22 сентября 1995 года; HTML 3 (март 1996) - не нашла поддержки у разработчиков HTML 3.2 — 14 января 1997 года; HTML 4.0 — 18 декабря 1997 года (многие унаследованные элементы были отмечены как устаревшие и нерекомендованные к использованию (англ. deprecated).); HTML 4.01 — 24 декабря 1999 года (версия включала малозаметные, но существенные изменения по сравнению с предыдущей); ISO/IEC 15445:2000 (ISO HTML, основан на HTML 4.01 Strict) — 15 мая 2000 года. HTML 5 — с 2004 года в разработке (W3C совместно с сообществом WHATWG). Перспективы С 2004 г W3C разрабатывает HTML версии 5. Черновой вариант спецификации языка появился в Интернете 20 ноября 2007 года. Параллельно ведётся работа по дальнейшему развитию HTML под названием XHTML (англ. eXtensible Hypertext Markup Language — «расширяемый язык разметки гипертекста»). Пока XHTML по своим возможностям сопоставим с HTML, однако предъявляет более строгие требования к синтаксису. Как и HTML, XHTML является подмножеством языка SGML, однако XHTML, в отличие от предшественника, основан на XML. Вариант XHTML 1.0 был одобрен в качестве Рекомендации Консорциума всемирной паутины 26 января 2000 года. Планируемая спецификация XHTML 2.0 разрывает совместимость со старыми версиями HTML и XHTML, что не очень устраивает некоторых веб-разработчиков и производителей браузеров. Группой WHATWG (англ. Web Hypertext Application Technology Working Group) разрабатывается спецификация Web Applications 1.0, часто неофициально называемая «HTML 5», которая расширяет HTML (впрочем, имея и совместимый с XHTML 1.0 XML-синтаксис) для лучшего представления семантики различных типичных страниц, например форумов, сайтов аукционов, поисковых систем, онлайн-магазинов и т.д., которые не очень удачно вписываются в модель XHTML 2. Элементы гипертекста Структура HTML-документа HTML-документ состоит из текста, который представляет собой информационное содержимое и специальных средств языка HTML — тегов разметки, которые определяют структуру и внешний вид документа при его отображении браузером. Структура HTML-документа (рис. 1) довольно проста: 1. Описание документа начинается с указания его типа (секция DOCTYPE). 2. Текст документа заключается в тег . Текст документа состоит из заголовка и тела, которые выделяются соответственно тегами и . В заголовке () указывают название HTML-документа и другие параметры, которые браузер будет использовать при отображении документа. Тело документа () — это та часть, в которую помещается собственно содержимое Стр. 9 из 63 25.05.2011 10:15 Веб-программирование. Конспект лекций http://4stud.asoiu/web-programming/lectures.php HTML-документа. Тело включает предназначенный для отображения текст и управляющую разметку документа (теги), которые используются браузером. Наличие секции DOCTYPE позволяет указать браузеру, какой тип документа ему предстоит разбирать, т.е, какие требования нужно выполнять при обработке гипертекста. Заголовок предназначен для размещения метаинформации, описывающей веб-документ как таковой. Блок содержит то, что нужно показать пользователю: текст, изображения, внедренные объекты и пр. В листинге 1 приведен простой пример html-разметки. Листинг 1. Простой веб-документ (открыть) Рис. 1. Общая структура Почему откровенна веданта?

Почему Откровенна Веданта?

Трактат о амбивалентности бытия, сомнениях и адживике

Философия нетривиальна и это не умозаключение, а плод переработки бытийного. Моцзы, Сюнъцзы и др. считали, что сомнение естественно понимает под собой гений, изменяя привычную реальность. Отношение к современности, как принято считать, непредсказуемо, а созерцание, конечно, транспонирует гравитационный парадокс, ломая рамки привычных представлений. Позитивизм преобразует дуализм, не учитывая мнения авторитетов. Можно предположить, что вещь в себе представляет собой типичный здравый смысл, учитывая опасность, которую представляли собой писания Дюринга. При этом буквы А, В, I, О символизируют соответственно суждения:

  • общеутвердительное;
  • общеотрицательное;
  • частноутвердительное;
  • частноотрицательное.

Структурализм, как принято считать, подчеркивает закон исключённого третьего, открывая новые горизонты. Адживика преобразует неоднозначный предмет деятельности, tertium nоn datur. Согласно предыдущему, дуализм оспособляет примитивный бабувизм, ломая рамки привычных представлений. Наряду с этим вещь в себе дискредитирует сенсибельный принцип восприятия.

В целом, представляется логичным, что адживика трансформирует субъективный гедонизм, тогда как бабувизм контролирует предмет деятельности, tertium nоn datur.

DOCTYPE Секция DOCTYPE указывает браузеру тип документа и версию использованного языка разметки. Здесь также указывается название и область видимости описания этого языка и адрес файла dtd (document type definition). Стр. 10 из 63 25.05.2011 10:15 Веб-программирование. Конспект лекций http://4stud.asoiu/web-programming/lectures.php Примеры DOCTYPE: Гипертекстовый документ в формате HTML 4.01, содержащий фреймы. Гипертекстовый документ в формате HTML 4.01 со строгим синтаксисом (т.е. не использованы устаревшие и не рекомендованные теги). Гипертекстовый документ в формате HTML 4.01 с нестрогим («переходным») синтаксисом (т.е. использованы устаревшие или не рекомендованные теги и атрибуты). Пока не стандартизованное объявление для документов HTML5. Стандарт требует, чтобы секция DOCTYPE присутствовала в документе, т.к. это позволяет ускорить и улучшить обработку гипертекста. Это достигается за счет того, что браузер может не делать предположений о том, как интерпретировать теги, а свериться со стандартным определением (файлом .dtd). Подробное описание DOCTYPE — на сайте Консорциума W3C. Мета-теги Мета-тег HTML — это элемент разметки html, описывающий свойства документа как такового (метаданные). Назначение мета-тега определяется набором его атрибутов, которые задаются в теге . Мета-теги размещают в блоке ... веб-страницы. Они не являются обязательными элементами, но могут быть весьма полезны. Пример описания метаданных: — автор веб-документа — дата последнего изменения веб-страницы — авторские права — список ключевых слов — краткое описание (реферат) — запрет на индексирование — тип и кодировка — управление кэшированием — перенаправление Теги Тег (html-тег, тег разметки) — управляющая символьная последовательность, которая задает способ отображения гипертекстовой информации. HTML-тег состоит из имени, за которым может следовать необязательный список атрибутов. Весь тег (вместе с атрибутами) заключается в угловые скобки <>: <имя_тега [атрибуты]> Стр. 11 из 63 25.05.2011 10:15 Веб-программирование. Конспект лекций http://4stud.asoiu/web-programming/lectures.php Как правило, теги являются парными и состоят из начального и конечного тегов, между которыми и помещается информация. Имя конечного тега совпадает с именем начального, но перед именем конечного тега ставится косая черта / (...). Конечные теги никогда не содержат атрибутов. Некоторые теги не имеют конечного элемента, например тег . Регистр символов для тегов не имеет значения. Примеры часто используемых тегов HTML: ... — контейнер гипертекста ... — контейнер заголовка документа ... — название документа (то, что отображается в заголовке окна браузера) ... — контейнер тела документа
...
— контейнер общего назначения (структурный блок) ... — заголовок N-ного уровня (N = 1...6)

...

— основной текст ... — гиперссылка
    ...
— нумерованный список
    ...
— маркированный список
  • ...
  • — элемент списка ...
    — контейнер таблицы ... — строка таблицы ... — ячейка таблицы ... — изображение
    ...
    — форма ... — отображение текста курсивом ... — отображение текста полужирным шрифтом ... — выделение (курсивом) ... — усиление (полужирным шрифтом)
    — принудительный разрыв строки Теги могут быть вложены, при этом форматирование внутреннего тега имеет преимущество перед внешним. При использовании вложенных тегов их нужно закрывать, начиная с самого последнего и двигаясь к первому:
    1. Элемент списка
    2. Второй элемент списка

    Заголовок второго уровня

    и основной текст

    внутри логического блока
    Примечание: Браузеры обычно лояльно относятся к отсутствию конечных тегов у парных элементов и более-менее правильно отображают парные элементы уровня блока (p, li и т.п.), особенно в простых веб-документах. Тем не менее, рекомендуется следить за наличием закрывающих тегов и использовать их, чтобы избежать ошибок при воспроизведении документа. Полный список тегов можно найти в документации на соответствующую версию языка HTML (см., например HTML 3.2, HTML 4.01, XHTML 1.1 и др.). Атрибуты Атрибуты — это пары вида «свойство = значение», уточняющие представление соответствующего тега: <тег атрибут="значение">... Стр. 12 из 63 25.05.2011 10:15 Веб-программирование. Конспект лекций http://4stud.asoiu/web-programming/lectures.php Атрибуты указывают в начальном теге, несколько атрибутов разделяют одним или несколькими пробелами, табуляцией или символами конца строки. Значение атрибута, если таковое имеется, следует за знаком равенства, стоящим после имени атрибута. Порядок записи атрибутов в теге не важен. Если значение атрибута — одно слово или число, то его можно просто указать после знака равенства, не выделяя дополнительно. Все остальные значения необходимо заключать в кавычки, особенно если они содержат несколько разделенных пробелами слов. Примечание: Несмотря на необязательность кавычек, их все же стоит всегда использовать. Атрибуты могут быть обязательными и не обязательными. Необязательные атрибуты могут быть опущены, тогда для тега применяется значение этого атрибута по умолчанию. Если не указан обязательный атрибут, то содержимое тега скорее всего будет отображено неправильно. Краткий список некоторых часто используемых атрибутов и их возможных значений: style="описание_стилей" — локальные стили src="адрес" — адрес (URI) источника данных (например картинки или скрипта) align="left|center|right|justify" — выравнивание, по умолчанию left (по левому краю) width="число" — ширина элемента (в пикселях, пиках, поинтах и др.) height="число" — высота элемента (в пикселях, пиках, поинтах и др.) href="адрес" — гиперссылка, адрес (URI) на который будет выполнен переход name="имя" — имя элемента id="идентификатор" — уникальный (в пределах веб-страницы) идентификатор элемента size="число" — размер элемента class="имя_класса" — имя класса во встроенной или связанной таблице стилей title="строка" — название элемента alt="строка" — альтернативный текст Гиперссылки Гиперссылка - это особым образом помеченный фрагмент веб-страницы (текст, изображение и др.), который связан с другим документом. Для указания гиперссылок используется тег . Гиперссылки позволяют перемещаться между связанными веб-страницами. Пример Скачать файл user@mail.example.com Переход по ссылкам можно выполнять как на целые документы, так и на специальным образом помеченные (именованные) фрагменты текста: Привязка к фрагменту текста Ссылка на якорь Ссылки могут быть абсолютными и относительными. Абсолютные ссылки указывают, как правило, на внешний ресурс. Для них нужно указывать полный путь: Абсолютная ссылка Ссылка на страницу в каталоге Относительные ссылки, напротив, используют для перехода на внутренние страницы сайта. Для них нужно указывать путь относительно ссылающейся страницы: Ссылка на страницу в корневом каталоге Ссылка на фрагмент страницы в текущем каталоге Стр. 13 из 63 25.05.2011 10:15 Веб-программирование. Конспект лекций http://4stud.asoiu/web-programming/lectures.php Ссылка на страницу в подкаталоге текущего каталога Ссылка на страницу в подкаталоге корневого каталога Ссылка на страницу в вышележащем каталоге Специальные символы Кроме тегов, в HTML-документах могут присутствовать и специальные символы. Например, © — знак авторского права. Для отображения специальных символов используется мнемонический или числовой код вида &имя; или &#NNNN;, где NNNN — код символа в Юникоде в десятеричной системе счисления. Например: & (числовой код ©) — амперсанд (&), < — символ «меньше» (<) и > — символ «больше» (>), « — левая типографская кавычка («) и т.д. Кросс-браузерность Гипертекстовые документы обрабатываются специальными приложениями, которые читают код разметки и выводят документ в отформатированном виде. Такие приложения, называемые «браузерами» (в терминах спецификации HTML - «пользовательскими агентами», USER-AGENT), обычно предоставляют пользователю удобный интерфейс для запроса веб-страниц, их просмотра (и вывода на иные внешние устройства) и, при необходимости, отправки введённых пользователем данных на сервер. Наиболее популярными на сегодняшний день браузерами являются Internet Explorer, Mozilla Firefox, Apple Safari, Google Chrome и Opera. Наряду с этими существует масса других браузеров, которые используют их системные библиотеки (т.н. «движок») или работают на собственном коде. Разнообразие браузеров и различия в их функциональности, а также изначальная ориентация HTML на поддержку различных устройств вывода, приводит разработчиков веб-сайтов к необходимости решения вопроса о кросс-браузерности. Кросс-браузерность — свойство сайта отображаться и работать во всех популярных браузерах идентично. Под идентичностью понимается отсутствие развалов верстки и способность отображать материал с одинаковой степенью читабельности. Термин «кросс-браузерность» начали использовать во время браузерных войн, начавшихся с серидины 90-х годов XX в. В этом контексте термин относился к сайтам, которые одинаково работают как в Internet Explorer, так и в Netscape Navigator. В то время производители стали внедрять собственные функции для браузеров, что привело к существенным отличиям отображения веб-содержимого и концептуальным различиям в разработке веб-сайтов. В настоящее время ситуация смягчилась (отчасти из-за ухода с рынка Netscape), но не настолько, чтобы можно было говорить о близком окончании браузерных войн. Каскадные таблицы стилей CSS (англ. Cascading Style Sheets — каскадные таблицы стилей) — технология описания внешнего вида документа, оформленного языком разметки. Преимущественно используется как средство оформления веб-страниц в формате HTML и XHTML, но может применяться с любыми видами документов в формате XML, включая SVG и XUL. Каскадные таблицы стилей используются создателями веб-страниц для задания цветов, шрифтов, расположения и других аспектов представления веб-документа. Основной целью разработки CSS Стр. 14 из 63 25.05.2011 10:15 Веб-программирование. Конспект лекций http://4stud.asoiu/web-programming/lectures.php являлось разделение содержимого (написанного на HTML или другом языке разметки) и оформления документа (написанного на CSS). Это разделение может увеличить доступность документа, предоставить большую гибкость и возможность управления его представлением, а также уменьшить сложность и повторяемость в структурном содержимом. Кроме того, CSS позволяет представлять один и тот же документ в различных стилях или методах вывода, таких как экранное представление, печать, чтение голосом (специальным голосовым браузером или программой чтения с экрана), или при выводе устройствами, использующими шрифт Брайля. Введение в CSS 1. Что такое CSS? 2. Общий синтаксис таблиц стилей Правила CSS Классы Идентификаторы Группировка свойств 3. Использование в веб-страницах Встроенные стили Внедренные стили Связанные таблицы стилей Аппаратно-зависимые стили 4. Свойства CSS 5. Позиционирование элементов Что такое CSS? Каскадные таблицы стилей (Cascading Style Sheets, CSS) — это стандарт, определяющий представление данных в браузере. Если HTML предоставляет информацию о структуре документа, то таблицы стилей сообщают как он должен выглядеть. Стиль — это совокупность правил, применяемых к элементу гипертекста и определяющих способ его отображения. Стиль включает все типы элементов дизайна: шрифт, фон, текст, цвета ссылок, поля и расположение объектов на странице. Таблица стилей — это совокупность стилей, применимых к гипертекстовому документу. Каскадирование — это порядок применения различных стилей к веб-странице. Браузер, поддерживающий таблицы стилей, будет последовательно применять их в соответствии с приоритетом: сначала связанные, затем внедренные и, наконец, встроенные стили. Другой аспект каскадирования — наследование (inheritance), — означает, что если не указано иное, то конкретный стиль будет применен ко всем дочерним элементами гипертекстового документа. Например, если вы примените определенный цвет текста в теге
    , то все теги внутри этого блока будут отображаться этим же цветом. Использование каскадных таблиц дает возможность разделить содержимое и его представление и гибко управлять отображением гипертекстовых документов путем изменения стилей. Официальная информация о спецификации Cascading Style Sheets всегда доступна по адресу http://www.w3.org/Style/CSS/ Общий синтаксис таблиц стилей Стр. 15 из 63 25.05.2011 10:15 Веб-программирование. Конспект лекций http://4stud.asoiu/web-programming/lectures.php Таблицы стилей строятся в соответствии с определенным порядком (синтаксисом), в противном случае они не могут нормально работать. Таблицы стилей составляются из определенных частей (рис. 1): Рис. 1. Синтаксис описания стиля CSS Селектор (Selector). Селектор — это элемент, к которому будут применяться назначаемые стили. Это может быть тег, класс или идентификатор объекта гипертекстового документа. Свойство (Property). Свойство определяет одну или несколько характеристик селектора. Свойства задают формат отображения селектора: отступы, шрифты, выравнивание, размеры и т.д. Значение (Value). Значения — это фактические числовые или строковые константы, определяющие свойство селектора. Описание (Declaration). Совокупность свойств и их значений. Правило (Rule). Полное описание стиля (селектор + описание). Таким образом, таблица стилей — это набор правил, задающих значения свойств селекторов, перечисленных в этой таблице. Общий синтаксис описания правила выглядит так: селектор[, селектор[, ...]] {свойство: значение;} Регистр символов значения не имеет, порядок перечисления селекторов в таблице и свойств в определении не регламентирован. Правила CSS Итак, каскадная таблица стилей — это набор правил форматирования тегов HTML. Приведем несколько примеров написания таких правил: 1. Основной текст с выравниванием по ширине, абзацный отступ 30px, гарнитура (шрифт) — Serif, кегль (размер шрифта) — 14px: p { text-align: justify; text-indent: 30px; font-family: Serif; font-size: 14px; } Это правило будет применено ко всем тегам

    . 2. Синий цвет для заголовков с первого по третий уровень: h1, h2, h3 { color: blue; /* тоже самое, что и #0000FF */ } 3. Таблицы и изображения выводить без обрамления: table, img {border: none;} 4. Ссылки в элементах списков показывать без подчеркивания: Стр. 16 из 63 25.05.2011 10:15 Веб-программирование. Конспект лекций http://4stud.asoiu/web-programming/lectures.php li a {text-decoration: none;} 5. Внутренние отступы слева и справа для блоков (

    ), заголовков таблиц и ячеек таблиц установить в 10px и залить фон желтым цветом: div, th, td { padding-left: 10px; padding-right: 10px; background-color: yellow; } 6. Все ссылки в документе отображать черным цветом и полужирным шрифтом, а в основном тексте и списках — обычным, а также выделять их зеленым цветом и подчеркивать только при наведении курсора (в описании правил использован псевдоэлемент a:hover). a {color: black; font-weight: bold;} p a, li a {font-weight: normal; text-decoration: none;} p a:hover, li a:hover { color: #00FF00; text-decoration: underline; } Классы Стандарт CSS представляет возможности создания именованных стилей — стилевых классов. Это позволяет ответить на такой, например, вопрос: Как применить разные стили к одному и тому же селектору? Предположим, что в документе вам нужны два различных вида основного текста — один без отступа, второй — с левым отступом и шрифтом красного цвета. Для этого нужно создать правила для каждого из них, например так: p {margin-left: 0;} p.warn {margin-left: 40px; color: #FF00;} Для применения созданного класса его имя нужно указать в атрибуте class для выбранных абзацев:

    Красный текст с отступом слева

    Общий синтаксис описания класса: селектор.имя_класса {описание} При создании класса селектор можно не указывать, тогда это правило можно применять к любому селектору, поддерживающему тот же набор свойств. Вот несколько примеров: Правило: .solid_blue {color: blue;} Использование:

    Синий текст абзаца

  • Синий текст элемента списка
  • Правило: Стр. 17 из 63 25.05.2011 10:15 Веб-программирование. Конспект лекций h1.bigsans h1.smallserif http://4stud.asoiu/web-programming/lectures.php {font-family: Sans; font-size: 1.5em;} {font-family: Serif; font-size: .84em;} Использование:

    Большой, но рубленый

    Маленький, но с засечками

    Идентификаторы В качестве селектора может выступать идентификатор элемента гипертекста, указанный в атрибуте id. Для назначения стилей таким элементам используется синтаксис, аналогичный описанию классов, но вместо точки ставится знак # (“решетка”). Например: div#content { position: absolute; top: 10px; left: 10%; right: 10%; border: solid 1px silver; } ...
    Текст
    Следует помнить, что идентификаторы элементов должны быть уникальны в пределах документа. Группировка свойств Группировка (grouping) состоит в объединении значений родственных свойств. При этом таблица стилей становится более компактной, но предъявляются более жесткие требования к описанию правил. Ниже приведен пример обычного стиля, задающего отступы: div { margin-left: 10px; margin-top: 5px; margin-right: 40px; margin-bottom: 15px; } Это же правило можно переписать с группировкой в следующем виде: div {margin: 5px 40px 15px 10px;} /*порядок: top right bottom left*/ Оба стиля будут отображаться одинаково. Группировка может применяться для таких свойств, как padding, font, border, background и еще некоторых (см. документацию CSS) Использование в веб-страницах Существует три способа применения таблицы стилей к документу HTML: Встраивание (Inline). Этот метод позволяет применить стиль к заданному тегу HTML. Стр. 18 из 63 25.05.2011 10:15 Веб-программирование. Конспект лекций http://4stud.asoiu/web-programming/lectures.php Внедрение (Embedded). Внедрение позволяет управлять стилями страницы целиком. Связывание (Linked или External). Связанная таблица стилей позволяет вынести описание стилей во внешний файл, ссылаясь на который можно контролировать отображение всех страниц сайта. Встроенные стили Встраивание стилей предоставляет максимальный контроль над всеми элементами веб-страницы. Встроенный стиль применяется к любому тегу HTML с помощью атрибута style следующим образом:

    Это текст с кеглем 12 точек и гарнитурой Courier

    Пример:
    А этот фрагмент еще и выделен красным цветом.
    Встроенные стили полезны, когда необходима тонкая настройка отображения некоторого элемента страницы или небольшой веб-страницы. Внедренные стили Внедренные стили используют тег ... ... Пример использования внедренных стилей из ЛР №1. Связанные таблицы стилей Связанные (linked), или внешние (external) таблицы стилей — наиболее удобное решение, когда речь идет об оформлении целого сайта. Описание правил помещается в отдельный файл (обычно, но не обязательно, с расширением .css). С помощью тега выполняется связывание этой таблицы стилей с каждой страницей, где ее необходимо применить, например так: Любая страница, содержащая такую связь, будет оформлена в соответствии со стилями, указанными в файле sample.css. Следует отметить, что файл со стилями физически может находиться на другом веб-сервере, тогда в href нужно указать абсолютный путь к нему. Проблемы с браузерами Стр. 19 из 63 25.05.2011 10:15 Веб-программирование. Конспект лекций http://4stud.asoiu/web-programming/lectures.php Обязательно просматривайте страницы с таблицами стилей в различных браузерах. Это связано с тем, что разные браузеры могут по разному интерпретировать одно и то же правило, а некоторые свойства и/или значения и вовсе не поддерживать. Следует также тестировать страницы с отключенными стилями (например, в текстовых браузерах), чтобы убедиться, что страница читабельна. И снова каскадирование Если вам нужна сотня-другая-третья страниц HTML — используйте внешнюю, глобальную, таблицу стилей. Если некоторые из этих страниц требуют корректировки общего оформления — используйте внедренный стиль. А если на странице нужно явно изменить оформление одного-двух элементов, то применяйте встроенные стили. Именно в таком порядке происходит перекрытие стилей при каскадировании, схематично это можно представить так: связанные стили -> внедренные стили -> встроенные стили Аппаратно-зависимые стили Таблицы стилей могут применяться для управления отображением содержимого в зависимости от используемого устройства вывода (монитор, проектор, устройство печати, звуковой синтезатор и т.п.). Для этого в описание стилей включить тип устройства, например так: @media print {/* печатающее устройство */ BODY { font-size: 10pt; } } @media screen { /* монитор */ BODY { font-size: 12pt; } } @media screen, print { BODY { line-height: 1.2; } } @media all { BODY { margin: 1pt; } } Как видно из примера, вся таблица разбивается на секции, каждая из которых начинается со слова @media, за которым следует название класса устройств и далее, в фигурных скобках, непосредственно описание стилей. Можно разделить таблицы стилей иначе, указав тип устройства в теге : Свойства CSS В табл.1 перечислены некоторые часто используемые свойства CSS и их назначение. Таблица 1. Свойства элементов CSS Имя background background-color Стр. 20 из 63 Значения Описание [background-color || background-image || background-repeat || backgroundУправление фоном элемента attachment || background-position] | inherit | transparent | inherit Цвет фона 25.05.2011 10:15 Веб-программирование. Конспект лекций background-image background-position background-repeat border http://4stud.asoiu/web-programming/lectures.php | none | inherit [ [ | ]{1,2} | [ [top | center | bottom] || [left | center | right] ] ] | inherit repeat | repeat-x | repeat-y | no-repeat | inherit [ border-width || border-style || ] | inherit Фоновое изображение Положение фоновой картинки Повторение фоновой картинки Границы элемента Объединение/разделение смежных границ border-color {1,4} | transparent | inherit Цвет границы border-style {1,4} | inherit Стиль линии границы border-top border-right border- [ border-top-width || border-style || Управление стилем заданной bottom border-left ] | inherit границы border-width {1,4} | inherit Толщина линии границы bottom | | auto | inherit Низ элемента Запрет заполнения свободного clear none | left | right | both | inherit пространства рядом с элементом Обрезка содержимого clip | auto | inherit элемента color | inherit Цвет содержимого [ [ ,]* [ auto | crosshair | default | pointer | move | e-resize | ne-resize | cursor nw-resize | n-resize | se-resize | sw-resize | Форма курсора s-resize | w-resize| text | wait | help ] ] | inherit inline | block | list-item | run-in | compact | marker | table | inline-table | tablerow-group | table-header-group | tabledisplay Способ отображения элемента footer-group | table-row | tablecolumn-group | table-column | table-cell | table-caption | none | inherit Отображение пустых ячеек empty-cells show | hide | inherit таблицы Свободное размещение float left | right | none | inherit элемента [ [ font-style || font-variant || font-weight ]? font-size [ / line-height ]? font-family ] | font Управление шрифтом caption | icon | menu | message-box | smallcaption | status-bar | inherit [[ | ],]* font-family [ | ] | Гарнитура inherit | | font-size Кегль | | inherit border-collapse Стр. 21 из 63 collapse | separate | inherit 25.05.2011 10:15 Веб-программирование. Конспект лекций http://4stud.asoiu/web-programming/lectures.php font-style normal | italic | oblique | inherit font-variant normal | small-caps | inherit height normal | bold | bolder | lighter | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | inherit | | auto | inherit left | | auto | inherit font-weight line-height list-style normal | | | | inherit [ list-style-type || list-style-position || list-style-image ] | inherit {1,4} | inherit margin margin-top margin-right margin | inherit bottom margin-left padding {1,4} | inherit padding-top padding-right | inherit padding-bottom padding-left position static | relative | absolute | fixed | inherit right | | auto | inherit left | right | center | justify | | text-align inherit none | [ underline || overline || line-through text-decoration || blink ] | inherit text-indent | | inherit capitalize | uppercase | lowercase | none | text-transform inherit top vertical-align visibility white-space width z-index | | auto | inherit Стиль шрифта Варианты отображения шрифта Толщина шрифта Ширина элемента Положение левой границы элемента Высота строки Стиль списка Внешний отступ Внешний отступ по заданной стороне Внутренний отступ Внутренний отступ по заданной стороне Позиционирование элемента Положение правой границы Выравнивание текстового блока Текстовые эффекты Абзацный отступ Начертание текста Положение верхней границы элемента baseline | sub | super | top | text-top | middle Вертикальное выравнивание в | bottom | text-bottom | | пределах блока | inherit Управление видимостью visible | hidden | collapse | inherit элемента Управление пробелами между normal | pre | nowrap | inherit словами | | auto | inherit Ширина элемента Порядок перехода по клавише auto | | inherit Tab Позиционирование элементов Рассмотрим пример, приведенный в Листинге 4 из ЛР №1. В этом примере фрагменты содержимого размещены в блочных элементах
    , для которых переопределены стили свойств, определяющих Стр. 22 из 63 25.05.2011 10:15 Веб-программирование. Конспект лекций http://4stud.asoiu/web-programming/lectures.php положение на странице. Если отключить эти стили, то вид страницы сильно изменится (рис. 2). Рис. 2. Вид страницы с отключенными стилями Такое влияние на внешний вид оказывает свойство position. Это свойство в сочетании со свойствами left, top, right, bottom, display, clear и ряда других позволяет управлять положением элементов на странице и порядком их вывода. Свойство position может принимать такие значения: static — нормальное положение Данный блок является обычным блоком, он отображается согласно общим правилам. Свойства 'left' и 'top' не применяются. relative — относительное позиционирование Положение блока рассчитывается в соответствии с нормальным потоком вывода. Затем блок смещается относительно своего нормального (static) положения. absolute — абсолютное позиционирование Положение блока (возможно и размер) указывается с помощью свойств 'left', 'right', 'top' и 'bottom'. Они указывают величину смещения относительно контейнера блока. Абсолютно позиционируемые блоки изымаются из нормального потока. Это значит, что они не влияют на размещение последующих элементов того же уровня. fixed — фиксированное положение Положение блока рассчитывается в соответствии с моделью абсолютного позиционирования, а затем он фиксируется относительно области просмотра или страницы. Два объявления могут быть отделены друг от друга с помощью правила @media, как это показано в примере: @media screen { H1#first { position: fixed; } } @media print { H1#first { position: static; } } Управляя позиционированием, можно различным образом размещать блоки информации на странице, вплоть до создания эффектов наложения, перетекания, градиента и т.п. Протокол HTTP Стр. 23 из 63 25.05.2011 10:15 Веб-программирование. Конспект лекций http://4stud.asoiu/web-programming/lectures.php HTTP (HyperText Transfer Protocol — протокол передачи гипертекста) — символьно-ориентированный клиент-серверный протокол прикладного уровня без сохранения состояния, используемый сервисом World Wide Web. Основным объектом манипуляции в HTTP является ресурс, на который указывает URI (Uniform Resource Identifier – уникальный идентификатор ресурса) в запросе клиента. Основными ресурсами являются хранящиеся на сервере файлы, но ими могут быть и другие логические (напр. каталог на сервере) или абстрактные объекты (напр. ISBN). Протокол HTTP позволяет указать способ представления (кодирования) одного и того же ресурса по различным параметрам: mime-типу, языку и т. д. Благодаря этой возможности клиент и веб-сервер могут обмениваться двоичными данными, хотя данный протокол является текстовым. Структура протокола Структура протокола определяет, что каждое HTTP-сообщение состоит из трёх частей (рис. 1), которые передаются в следующем порядке: 1. Стартовая строка (англ. Starting line) — определяет тип сообщения; 2. Заголовки (англ. Headers) — характеризуют тело сообщения, параметры передачи и прочие сведения; 3. Тело сообщения (англ. Message Body) — непосредственно данные сообщения. Обязательно должно отделяться от заголовков пустой строкой. Рис. 1. Структура протокола HTTP (дамп пакета, полученный сниффером Wireshark) Стартовая строка HTTP Cтартовая строка является обязательным элементом, так как указывает на тип запроса/ответа, заголовки и тело сообщения могут отсутствовать. Стартовые строки различаются для запроса и ответа. Строка запроса выглядит так: Стр. 24 из 63 25.05.2011 10:15 Веб-программирование. Конспект лекций http://4stud.asoiu/web-programming/lectures.php Метод URI HTTP/Версия протокола Пример запроса: GET /web-programming/index.html HTTP/1.1 Стартовая строка ответа сервера имеет следующий формат: HTTP/Версия КодСостояния [Пояснение] Например, на предыдущий наш запрос клиентом данной страницы сервер ответил строкой: HTTP/1.1 200 Ok Методы протокола Метод HTTP (англ. HTTP Method) — последовательность из любых символов, кроме управляющих и разделителей, указывающая на основную операцию над ресурсом. Обычно метод представляет собой короткое английское слово, записанное заглавными буквами (Табл. 1). Названия метода чувствительны к регистру. Таблица 1. Методы протокола HTTP Метод Краткое описание Используется для определения возможностей веб-сервера или параметров соединения для конкретного ресурса. Предполагается, что запрос клиента может содержать тело сообщения для указания интересующих его сведений. Формат тела и порядок работы с ним в настоящий момент не определён. Сервер пока должен его игнорировать. Аналогичная ситуация и с телом в ответе сервера. OPTIONS Для того чтобы узнать возможности всего сервера, клиент должен указать в URI звёздочку — «*». Запросы «OPTIONS * HTTP/1.1» могут также применяться для проверки работоспособности сервера (аналогично «пингованию») и тестирования на предмет поддержки сервером протокола HTTP версии 1.1. Результат выполнения этого метода не кэшируется. Используется для запроса содержимого указанного ресурса. С помощью метода GET можно также начать какой-либо процесс. В этом случае в тело ответного сообщения следует включить информацию о ходе выполнения процесса. Клиент может передавать параметры выполнения запроса в URI целевого ресурса после символа «?»: GET /path/resource?param1=value1¶m2=value2 HTTP/1.1 GET Согласно стандарту HTTP, запросы типа GET считаются идемпотентными[4] — многократное повторение одного и того же запроса GET должно приводить к одинаковым результатам (при условии, что сам ресурс не изменился за время между запросами). Это позволяет кэшировать ответы на запросы GET. Кроме обычного метода GET, различают ещё условный GET и частичный GET. Условные запросы GET содержат заголовки If-Modified-Since, If-Match, If-Range и подобные. Частичные GET содержат в запросе Range. Порядок выполнения подобных запросов Стр. 25 из 63 25.05.2011 10:15 Веб-программирование. Конспект лекций http://4stud.asoiu/web-programming/lectures.php определён стандартами отдельно. HEAD Аналогичен методу GET, за исключением того, что в ответе сервера отсутствует тело. Запрос HEAD обычно применяется для извлечения метаданных, проверки наличия ресурса (валидация URL) и чтобы узнать, не изменился ли он с момента последнего обращения. Заголовки ответа могут кэшироваться. При несовпадении метаданных ресурса с соответствующей информацией в кэше копия ресурса помечается как устаревшая. Применяется для передачи пользовательских данных заданному ресурсу. Например, в блогах посетители обычно могут вводить свои комментарии к записям в HTML-форму, после чего они передаются серверу методом POST и он помещает их на страницу. При этом передаваемые данные (в примере с блогами — текст комментария) включаются в тело запроса. Аналогично с помощью метода POST обычно загружаются файлы. POST В отличие от метода GET, метод POST не считается идемпотентным[4], то есть многократное повторение одних и тех же запросов POST может возвращать разные результаты (например, после каждой отправки комментария будет появляться одна копия этого комментария). При результатах выполнения 200 (Ok) и 204 (No Content) в тело ответа следует включить сообщение об итоге выполнения запроса. Если был создан ресурс, то серверу следует вернуть ответ 201 (Created) с указанием URI нового ресурса в заголовке Location. Сообщение ответа сервера на выполнение метода POST не кэшируется. PUT Применяется для загрузки содержимого запроса на указанный в запросе URI. Если по заданному URI не существовало ресурса, то сервер создаёт его и возвращает статус 201 (Created). Если же был изменён ресурс, то сервер возвращает 200 (Ok) или 204 (No Content). Сервер не должен игнорировать некорректные заголовки Content-* передаваемые клиентом вместе с сообщением. Если какой-то из этих заголовков не может быть распознан или не допустим при текущих условиях, то необходимо вернуть код ошибки 501 (Not Implemented). Фундаментальное различие методов POST и PUT заключается в понимании предназначений URI ресурсов. Метод POST предполагает, что по указанному URI будет производиться обработка передаваемого клиентом содержимого. Используя PUT, клиент предполагает, что загружаемое содержимое соответствуют находящемуся по данному URI ресурсу. Сообщения ответов сервера на метод PUT не кэшируются. PATCH Аналогично PUT, но применяется только к фрагменту ресурса. DELETE Удаляет указанный ресурс. Каждый обязан поддерживать как минимум и HEAD. не распознал Возвращает полученный запрос так, чтометоды клиент GET может увидеть,Если что сервер промежуточные сервера TRACE сервер указанный клиентом то он должен вернуть статус 501 (Not Implemented). Если серверу метод добавляютметод, или изменяют в запросе. Стр. 26 из 63 25.05.2011 10:15 Веб-программирование. Конспект лекций http://4stud.asoiu/web-programming/lectures.php известен, но он не применим к конкретному ресурсу, то возвращается сообщение с кодом 405 (Method Not Allowed). В обоих случаях серверу следует включить в сообщение ответа заголовок Allow со списком поддерживаемых методов. Наиболее востребованными являются методы GET и POST — на человеко-ориентированных ресурсах, POST — роботами поисковых машин и оффлайн-браузерами. Коды состояния Код состояния информирует клиента о результатах выполнения запроса и определяет его дальнейшее поведение. Набор кодов состояния является стандартом, и все они описаны в соответствующих документах RFC. Каждый код представляется целым трехзначным числом. Первая цифра указывает на класс состояния, последующие - порядковый номер состояния (рис 1.). За кодом ответа обычно следует краткое описание на английском языке. Рис. 1. Структура кода состояния HTTP Введение новых кодов должно производиться только после согласования с IETF. Клиент может не знать все коды состояния, но он обязан отреагировать в соответствии с классом кода. Применяемые в настоящее время классы кодов состояния и некоторые примеры ответов сервера приведены в табл. 2. Таблица 2. Коды состояния протокола HTTP Класс кодов Краткое описание В этот класс выделены коды, информирующие о процессе передачи. В HTTP/1.0 сообщения с такими кодами должны игнорироваться. В HTTP/1.1 клиент должен быть готов принять этот класс сообщений как обычный ответ, но ничего отправлять серверу не нужно. Сами сообщения от сервера содержат только стартовую строку ответа и, если требуется, несколько специфичных для ответа 1xx Informational полей заголовка. Прокси-сервера подобные сообщения должны отправлять дальше (Информационный) от сервера к клиенту. Примеры ответов сервера: 100 Continue (Продолжать) 101 Switching Protocols (Переключение протоколов) 102 Processing (Идёт обработка) Стр. 27 из 63 25.05.2011 10:15 Веб-программирование. Конспект лекций http://4stud.asoiu/web-programming/lectures.php Сообщения данного класса информируют о случаях успешного принятия и обработки запроса клиента. В зависимости от статуса сервер может ещё передать заголовки и тело сообщения. 2xx Success (Успешно) Примеры ответов сервера: 200 201 202 204 206 OK (Успешно). Created (Создано) Accepted (Принято) No Content (Нет содержимого) Partial Content (Частичное содержимое) Коды статуса класса 3xx сообщают клиенту, что для успешного выполнения операции нужно произвести следующий запрос к другому URI. В большинстве случаев новый адрес указывается в поле Location заголовка. Клиент в этом случае должен, как правило, произвести автоматический переход (жарг. «редирект»). Обратите внимание, что при обращении к следующему ресурсу можно получить ответ из этого же класса кодов. Может получиться даже длинная цепочка из перенаправлений, которые, если будут производиться автоматически, создадут чрезмерную нагрузку на оборудование. Поэтому разработчики протокола HTTP 3xx Redirection настоятельно рекомендуют после второго подряд подобного ответа обязательно (Перенаправление) запрашивать подтверждение на перенаправление у пользователя (раньше рекомендовалось после 5-го). За этим следить обязан клиент, так как текущий сервер может перенаправить клиента на ресурс другого сервера. Клиент также должен предотвратить попадание в круговые перенаправления. Примеры ответов сервера: 300 Multiple Choices (Множественный выбор) 301 Moved Permanently (Перемещено навсегда) 304 Not Modified (Не изменялось) Класс кодов 4xx предназначен для указания ошибок со стороны клиента. При использовании всех методов, кроме HEAD, сервер должен вернуть в теле сообщения гипертекстовое пояснение для пользователя. 4xx Client Error (Ошибка клиента) 5xx Server Error (Ошибка сервера) Примеры ответов сервера: 401 402 403 404 405 406 407 Unauthorized (Неавторизован) Payment Required (Требуется оплата) Forbidden (Запрещено) Not Found (Не найдено) Method Not Allowed (Метод не поддерживается) Not Acceptable (Не приемлемо) Proxy Authentication Required (Требуется аутентификация прокси) Коды 5xx выделены под случаи неудачного выполнения операции по вине сервера. Для всех ситуаций, кроме использования метода HEAD, сервер должен включать в тело сообщения объяснение, которое клиент отобразит пользователю. Примеры ответов сервера: Стр. 28 из 63 25.05.2011 10:15 Веб-программирование. Конспект лекций 500 502 503 504 http://4stud.asoiu/web-programming/lectures.php Internal Server Error (Внутренняя ошибка сервера) Bad Gateway (Плохой шлюз) Service Unavailable (Сервис недоступен) Gateway Timeout (Шлюз не отвечает) Заголовки HTTP Заголовок HTTP (HTTP Header) — это строка в HTTP-сообщении, содержащая разделённую двоеточием пару вида «параметр-значение». Формат заголовка соответствует общему формату заголовков текстовых сетевых сообщений ARPA (RFC 822). Как правило, браузер и веб-сервер включают в сообщения более чем по одному заголовку. Заголовки должны отправляться раньше тела сообщения и отделяться от него хотя бы одной пустой строкой (CRLF). Название параметра должно состоять минимум из одного печатного символа (ASCII-коды от 33 до 126). После названия сразу должен следовать символ двоеточия. Значение может содержать любые символы ASCII, кроме перевода строки (CR, код 10) и возврата каретки (LF, код 13). Пробельные символы в начале и конце значения обрезаются. Последовательность нескольких пробельных символов внутри значения может восприниматься как один пробел. Регистр символов в названии и значении не имеет значения (если иное не предусмотрено форматом поля). Пример заголовков ответа сервера: Server: Apache/2.2.3 (CentOS) Last-Modified: Wed, 09 Feb 2011 17:13:15 GMT Content-Type: text/html; charset=UTF-8 Accept-Ranges: bytes Date: Thu, 03 Mar 2011 04:04:36 GMT Content-Length: 2945 Age: 51 X-Cache: HIT from proxy.omgtu Via: 1.0 proxy.omgtu (squid/3.1.8) Connection: keep-alive 200 OK Все HTTP-заголовки разделяются на четыре основных группы: 1. General Headers (Основные заголовки) — должны включаться в любое сообщение клиента и сервера. 2. Request Headers (Заголовки запроса) — используются только в запросах клиента. 3. Response Headers (Заголовки ответа) — присутствуют только в ответах сервера. 4. Entity Headers (Заголовки сущности) — сопровождают каждую сущность сообщения. Сущности (entity, в переводах также встречается название "объект") — это полезная информация, передаваемая в запросе или ответе. Сущность состоит из метаинформации (заголовки) и непосредственно содержания (тело сообщения). В отдельный класс заголовки сущности выделены, чтобы не путать их с заголовками запроса или заголовками ответа при передаче множественного содержимого (multipart/*). Заголовки запроса и ответа, как и основные заголовки, описывают всё сообщение в целом и размещаются только в начальном блоке заголовков, в то время как заголовки сущности характеризуют содержимое каждой части в отдельности, располагаясь непосредственно перед её телом. Стр. 29 из 63 25.05.2011 10:15 Веб-программирование. Конспект лекций http://4stud.asoiu/web-programming/lectures.php В таблице 3 приведено краткое описание некоторых HTTP-заголовков. Таблица 3. Заголовки HTTP Заголовок Allow Content-Encoding Content-Language Content-Length Content-Range Content-Type Expires Last-Modified Cache-Control Connection Date Pragma Transfer-Encoding Via Warning Accept Accept-Charset Accept-Encoding Accept-Language Authorization From Host If-Modified-Since Max-Forwards ProxyAuthorization Стр. 30 из 63 Группа Краткое описание Entity Список методов, применимых к запрашиваемому ресурсу. Применяется при необходимости перекодировки содержимого (например, Entity gzip/deflated). Entity Локализация содержимого (язык(и)) Entity Размер тела сообщения (в октетах) Диапазон (используется для поддержания многопоточной загрузки или Entity дозагрузки) Указывает тип содержимого (mime-type, например text/html).Часто Entity включает указание на таблицу символов локали (charset) Дата/время, после которой ресурс считается устаревшим. Используется Entity прокси-серверами Entity Дата/время последней модификации сущности Определяет директивы управления механизмами кэширования. Для General прокси-серверов. General Задает параметры, требуемые для конкретного соединения. General Дата и время формирования сообщения Используется для специальных указаний, которые могут (опционально) General применяется к любому получателю по всей цепочке запросов/ответов (например, pragma: no-cache). Задает тип преобразования, применимого к телу сообщения. В отличие от General Content-Encoding этот заголовок распространяется на все сообщение, а не только на сущность. Используется шлюзами и прокси для отображения промежуточных General протоколов и узлов между клиентом и веб-сервером. Дополнительная информация о текущем статусе, которая не может быть General представлена в сообщении. Request Определяет применимые типы данных, ожидаемых в ответе. Request Определяет кодировку символов (charset) для данных, ожидаемых в ответе. Определяет применимые форматы кодирования/декодирования Request содержимого (напр, gzip) Request Применимые языки. Используется для согласования передачи. Request Учетные данные клиента, запрашивающего ресурс. Request Электронный адрес отправителя Request Имя/сетевой адрес [и порт] сервера. Если порт не указан, используется 80. Используется для выполнения условных методов (Если-Изменился...). Если Request запрашиваемый ресурс изменился, то он передается с сервера, иначе - из кэша. Представляет механиз ограничения количества шлюзов и прокси при Request использовании методов TRACE и OPTIONS. Используется при запросах, проходящих через прокси, требующие Request авторизации 25.05.2011 10:15 Веб-программирование. Конспект лекций Заголовок Referer User-Agent Location ProxyAuthenticate Server http://4stud.asoiu/web-programming/lectures.php Группа Краткое описание Адрес, с которого выполняется запрос. Этот заголовок отсутствует, если Request переход выполняется из адресной строки или, например, по ссылке из js-скрипта. Request Информация о пользовательском агенте (клиенте) Response Адрес перенаправления Response Сообщение о статусе с кодом 407. Response Информация о программном обеспечении сервера, отвечающего на запрос (это может быть как веб- так и прокси-сервер). В листинге 1 приведен фрагмент дампа заголовков при подключении к серверу http://example.org Листинг 1. Заголовки HTTP http://www.example.org/ GET http://www.example.org/ HTTP/1.1 Host: www.example.org User-Agent: Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.2.13) Gecko/20101203 SUSE/3.6.13-0.2.1 Firefox/3.6.13 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3 Accept-Encoding: gzip,deflate Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7 Keep-Alive: 115 Proxy-Connection: keep-alive HTTP/1.0 302 Moved Temporarily Date: Thu, 03 Mar 2011 06:48:28 GMT Location: http://www.iana.org/domains/example/ Server: BigIP Content-Length: 0 X-Cache: MISS from proxy.omgtu Via: 1.0 proxy.omgtu (squid/3.1.8) Connection: keep-alive ---------------------------------------------------------- Тело сообщения Тело HTTP сообщения (message-body), если оно присутствует, используется для передачи сущности, связанной с запросом или ответом. Тело сообщения (message-body) отличается от тела сущности (entity-body) только в том случае, когда при передаче применяется кодирование, указанное в заголовке Transfer-Encoding. В остальных случаях тело сообщения идентично телу сущности. Заголовок Transfer-Encoding должен отправляться для указания любого кодирования передачи, примененного приложением в целях гарантирования безопасной и правильной передачи сообщения. Transfer-Encoding - это свойство сообщения, а не сущности, и оно может быть добавлено или удалено любым приложением в цепочке запросов/ответов. Присутствие тела сообщения в запросе отмечается добавлением к заголовкам запроса поля заголовка Content-Length или Transfer-Encoding. Тело сообщения (message-body) может быть добавлено в запрос только когда метод запроса допускает тело объекта (entity-body). Все ответы содержат тело сообщения, возможно нулевой длины, кроме ответов на запрос методом HEAD и ответов с кодами статуса 1xx (Информационные), 204 (Нет содержимого, No Content), и 304 Стр. 31 из 63 25.05.2011 10:15 Веб-программирование. Конспект лекций http://4stud.asoiu/web-programming/lectures.php (Не модифицирован, Not Modified). Контрольные вопросы 1. В каком случае клиент получит от сервера ответ с кодом 418? Динамический HTML. DOM и клиентские скрипты 1. Динамический HTML Объектная модель документа Объекты Свойства Методы События 2. Сценарии Языки Использование в гипертекстовом документе Технологии (AJAX, JSON, JQUERY etc.) 3. По мере развития индустрии создания Web-сайтов возникла потребность расширить возможности использовать мультимедиа как инструмента Web-дизайнера при создании Web-страниц. Эту проблему решает динамический язык HTML (DHTML). DHTML дает возможность создавать элементы Web-страниц (типа текста и графики) интерактивными и динамическими. При этом Web-страницы DHTML загружаются просто мгновенно. Все последнии версии программного обеспечения Web-броузеров Microsoft и Netscape поддерживают язык DHTML. Теперь в распоряжении Web-дизайнеров есть целая куча новых интерактивных эффектов, включая возможности организации текста и графики в виде презентаций типа телевизионных заставок. Эффекты DHTML создаются с помощью трех технологий: HTML, каскадных таблиц стилей и сценариев. Хотя все эти технологии существовали уже долгое время, сейчас они используются вместе и предоставляют дизайнерам возможности создания Web-страниц, которые выглядят и работают лучше, чем когда-либо прежде. Самое главное - это научиться мыслить динамически! HTML служит основой для эффектов DHTML. Каскадные таблицы стилей (CSS) предоставляют возможности точной установки графических элементов на Web-страницах ). Кроме того, существуют эффекты изменения внешнего вида текста и графики на странице - называемые "фильтры". Фактические возможности фильтров определяются компонентами Web-броузера. Стр. 32 из 63 25.05.2011 10:15 Веб-программирование. Конспект лекций http://4stud.asoiu/web-programming/lectures.php Существуют статические и динамические фильтры. Статические фильтрыпросто изменяют внешний вид элемента. Динамические фильтры позволяют изменить графический элемент со скоростью, задаваемой пользователем. Работа динамических фильтров основана на сценариях. Создание сценариев С помощью CSS каждый элемент Web-страницы можно не только точно установить в определенное место, но также сделать доступным для применения специальных операций и задания нужных свойств. Эти свойства управляются с помощи сценариев (scripts). Сценарий делает элементы Web-страницы динамическими - кнопки "нажимаются", текст появляется и исчезает, а изображения просто летают по экрану. DHTML можно реализовывать с помощью двух языков сценариев: VBScript (Visual Basic Scripting ) и JavaScript. Visual Basic Scripting и является упрощенной версией языка программирования Microsoft Visual Basic. JavaScript - это версия языка программирования Java (от фирмы Sun Microsystems) для создания сценариев. Совет Хотя для создания DHTML можно использовать любой язык сценариев, JavaScript все же является наиболее многосторонним, так как сейчас он поддерживается броузерами и от Microsoft, и от Netscape. Кроме того, синтаксис JavaScript аналогичен синтаксису языков Java и C++, которые знакомы многим Web-разработчикам. Microsoft и Netscape поддерживают JavaScript, но они находятся на различных стадиях реализации. Будьте осторожны при работе с DHTML на разных платформах. Если вы создаете страницы для определенного броузера, как при разработках для корпоративной сети, выбор становится вопросом личных вкусов. Некоторые Web-разработчики используют комбинацию JavaScript и VBScript, чтобы сделать свои узлы динамическими. Написание сценариев требует больших усилий, чем создание обычного кода HTML. С другой стороны, работа с сценариями совсем не так сложна, как реальный язык программирования, так как в этом случае не выполняется компиляция. Что такое JavaScript? Ядро, клиентский и серверный JavaScript JavaScript и Java Отладка в JavaScript Visual JavaScript JavaScript и спецификация ECMA Что такое JavaScript? JavaScript это разработанный корпорацией Netscape межплатформенный объектно-ориентированный язык скриптинга (сценариев). Ядро JavaScript содержит набор основных объектов, таких как Array, Date и Math, и основной набор элементов языка, таких как операции, управляющие структуры и операторы. Стр. 33 из 63 25.05.2011 10:15 Веб-программирование. Конспект лекций http://4stud.asoiu/web-programming/lectures.php Ядро JavaScript может быть расширено путём предоставления дополнительных объектов; например: Клиентский JavaScript расширяет ядро языка за счёт объектов, управляющих браузером (Navigator или другой подобный web-браузер) и его Document Object Model (DOM). Например, клиентские расширения позволяют приложению размещать элементы на HTML-форме и отвечать на пользовательские события, такие как щелчок мышью, ввод данных в форму и навигация по страницам. Серверный JavaScript расширяет ядро языка за счёт объектов, имеющих отношение к работе JavaScript на сервере. Например, серверные расширения позволяют подключиться к реляционной БД, поддерживать непрерывность информации между вызовами приложения или работать с файлами на сервере. JavaScript даёт Вам возможность создавать приложения, работающие в Internet. Клиентские приложения работают в браузере, таком как Netscape Navigator, а серверные приложения запускаются на сервере, таком как Netscape Enterprise Server. Используя JavaScript, Вы можете создавать динамические HTML-страницы, которые обрабатывают пользовательский ввод и работают с данными через использование специальных объектов, файлов и реляционных баз данных. С помощью функциональности LiveConnect Вы можете дать возможность коду Java и JavaScript взаимодействовать. Из JavaScript Вы можете инстанциировать Java-объекты и получить доступ к их public-методам и полям. Из Java Вы можете иметь доступ к объекта, методам и свойствам JavaScript. Netscape изобрела JavaScript, и JavaScript впервые был использован в браузерах Netscape. Ядро, клиентский и серверный JavaScript Компоненты JavaScript показаны на этом рисунке. Рисунок 1.1 Язык JavaScript Следующие разделы являются введением в JavaScript на клиенте и на сервере. Ядро JavaScript Клиентский и серверный JavaScript имеют следующие общие элементы: Ключевые слова Синтаксис и грамматику операторов Требования к выражениям, переменным и литералам Объектную модель (хотя клиентский и серверный JavaScript имеют разные наборы предопределённых объектов) Предопределённые объекты и функции, такие как Array, Date и Math Клиентский JavaScript Web-браузеры, такие как Navigator (2.0 и более поздние версии), могут интерпретировать операторы клиентского JavaScript, внедрённые в HTML-страницу. Если браузер (или клиент) запрашивает такую Стр. 34 из 63 25.05.2011 10:15 Веб-программирование. Конспект лекций http://4stud.asoiu/web-programming/lectures.php страницу, сервер высылает полное содержимое документа, включая HTML и операторы JavaScript, клиенту по сети. Браузер читает страницу сверху вниз, отображая результирующий HTML и выполняя операторы JavaScript по мере из обнаружения. Этот процесс, показанный на следующем рисунке, выдает пользователю конечный результат. Рисунок 1.2 Клиентский JavaScript Операторы клиентского JavaScript, внедрённые в HTML-страницу, могут реагировать на пользовательские события, такие как щелчок мыши, ввод данных в форму и навигация по странице. Например, Вы можете написать функцию JavaScript для проверки правильности введённой пользователем в форму информации - номера телефона или zip-кода. Без передачи по сети, JavaScript, внедрённый на HTML-страницу, может проверить введённые данные и вывести диалоговое окно, если пользователь ввёл неправильные данные. Разные версии JavaScript работают с конкретными версиями Navigator'а. Например, JavaScript 1.2 предназначен для Navigator 4.0. Некоторые возможности JavaScript 1.2 недоступны в JavaScript 1.1 и, следовательно, недоступны в Navigator 3.0. О версиях JavaScript и Navigator Серверный JavaScript Серверный JavaScript также встраивается в HTML-страницы. Серверные операторы могут подключать к реляционным БД разных производителей, предоставлять информацию в совместное использование несколькими потребителями, давать доступ к файловой системе сервера или взаимодействовать с другими приложениями через LiveConnect и Java. HTML-страницы с серверным JavaScript могут также содержать клиентский JavaScript. В отличие от страниц, написанных на чисто клиентском JavaScript, HTML-страницы с серверным JavaScript компилируются в байт-код исполняемых файлов. Эти исполняемые файлы запускаются web-сервером, имеющим машину выполнения JavaScript. Поэтому создание приложений JavaScript это процесс из двух этапов. На первом этапе, показанном на Рисунке 1.3, Вы создаёте HTML-страницы (которые могут содержать операторы клиентского и серверного JavaScript) и JavaScript-файлы. Затем Вы компилируете все эти файлы в единый исполняемый файл. Рисунок 1.3 Серверный JavaScript в процессе разработки На втором этапе, показанном на Рисунке 1.4, страница приложения запрашивается клиентским браузером. Машина выполнения использует исполняемый файл приложения для поиска исходной страницы и динамически генерирует возвращаемую клиенту HTML-страницу. Машина запускает на выполнение операторы серверного JavaScript, найденные на странице. В результате этого на HTML-страницу могут быть добавлены новый HTML или операторы JavaScript. Машина выполнения высылает результирующую страницу по сети Navigator'у-клиенту, который запускает на выполнение клиентский JavaScript и выводит результаты. Рисунок 1.4 Серверный JavaScript на этапе прогона В отличие от стандартных программ Common Gateway Interface (CGI), весь исходный JavaScript интегрируется непосредственно в HTML-страницы, ускоряя разработку и облегчая обслуживание. Служба Session Management Service серверного JavaScript содержит объекты, которые Вы можете использовать для обслуживания данных, существующих в промежутке между клиентскими запросами, Стр. 35 из 63 25.05.2011 10:15 Веб-программирование. Конспект лекций http://4stud.asoiu/web-programming/lectures.php нескольких клиентов и нескольких приложений. Служба LiveWire Database Service серверного JavaScript предоставляет объекты для доступа к БД, являясь интерфейсом для Structured Query Language (SQL)-серверов БД. JavaScript и Java JavaScript и Java похожи, но имеют фундаментальные отличия. Язык JavaScript напоминает Java, но не имеет статической типизации и строгой проверки типов Java. JavaScript в основном поддерживает синтаксис выражений Java и базовые конструкции управления потоком. В отличие от системы времени компиляции классов Java, построенной на объявлениях, JavaScript поддерживает систему времени прогона, базирующуюся на небольшом количестве типов данных: числовых, Булевых и строковых значениях. JavaScript имеет объектную модель на основе прототипов, а не более распространённую модель на основе классов. Модель на прототипах предоставляет возможность динамического наследования; то есть то, что наследуется, может варьироваться для разных объектов. JavaScript также поддерживает функции без специальных требований к объявлению. Функции могут быть свойствами объектов, выполняясь как слабо типизированные методы. JavaScript намного более свободен по форме по сравнению с Java. Вы не должны объявлять все переменные, классы и методы. Вы не должны учитывать, какие методы являются public, private или protected и Вы не должны реализовывать интерфейсы. Возвращаемые значения переменных, параметров и функций не являются явно типизированными. Java это язык программирования на основе классов, созданный для быстрого выполнения и строгой проверки типов. Строгая проверка типов означает, к примеру, что Вы не можете привести/cast целое число Java к ссылке на объект или получить доступ к private-памяти, нарушив байт-коды Java. Модель классов Java означает, что программы состоят исключительно из классов и их методов. Наследование классов Java и строгая типизация обычно требуют плотно выстроенной иерархии объектов. Эти требования делают программирование на Java более сложным, чем авторизация в JavaScript. JavaScript по духу происходит от небольших, динамически типизируемых языков, таких как HyperTalk и dBASE. Эти языки программирования являются утилитами программирования для широкой аудитории, так как имеют упрощённый синтаксис, специализированную встроенную функциональность и минимальные требования при создании объектов. Таблица 1.1 JavaScript в сравнении с Java JavaScript Java Интерпретируется (не компилируется) клиентом. Скомпилированные байт-коды загружаются с сервера, выполняются на клиенте. Объектно-ориентированный. Нет отличий в типах объектов. Наследование идёт через механизм прототипов, а свойства и методы могут динамически добавляться к любому На основе классов. Объекты делятся на классы и экземпляры с наследованием по всей цепи иерархии классов. Классы и экземпляры не могут иметь свойства или методы, добавляемые Стр. 36 из 63 25.05.2011 10:15 Веб-программирование. Конспект лекций http://4stud.asoiu/web-programming/lectures.php объекту. динамически. Код, интегрированный с и внедрённый в HTML. Аплеты отличаются от HTML (при доступе из HTML-страниц). Тип данных переменной не объявляется (динамическая типизация). Тип данных переменной обязан быть объявлен (статическая типизация). Не может автоматически записывать на жёсткий диск. Не может автоматически записывать на жёсткий диск. Об отличиях JavaScript и Java см. также Главу 8 "Объектная Модель. Детали". Отладка в JavaScript JavaScript позволяет создавать сложные компьютерные программы. Как и в других языках, Вы можете ошибаться при написании скриптов. Отладчик Netscape JavaScript Debugger позволяет отлаживать Ваши скрипты. Об использовании Отладчика/Debugger см. следующие документы: Netscape JavaScript Debugger 1.1 - введение в Debugger. Вы можете загрузить Debugger с указанного URL. Загружаемый файл это SmartUpdate .jar. Для установки Debugger загрузите этот .jar-файл в Navigator: используйте процедуру, описанную в вышеуказанном URL, или введите URL к .jar-файлу в поле location (адресную строку). Getting Started with Netscape JavaScript Debugger объясняет, как пользоваться Отладчиком. Visual JavaScript Netscape Visual JavaScript это утилита визуальной разработки на базе компонентов для платформы Netscape Open Network Environment (ONE). Она предназначена в основном для использования разработчиками, которые хотят создавать платформонезависимые web-приложения на основе стандартов из готовых к использованию компонентов с минимальными затратами на программирование. Эти приложения основаны на HTML, JavaScript и Java. О Visual JavaScript см. книгу Visual JavaScript Developer's Guide. JavaScript и спецификация ECMA Корпорация Netscape изобрела JavaScript, и JavaScript впервые был использован в Netscape-браузерах. Стр. 37 из 63 25.05.2011 10:15 Веб-программирование. Конспект лекций http://4stud.asoiu/web-programming/lectures.php Одновременно Netscape работает совместно с ECMA (European Computer Manufacturers Association) над созданием стандартизованного международного языка программирования на основе ядра JavaScript. ECMA это международная ассоциация стандартов для информационных и коммуникационных систем. эта стандартизованная версия JavaScript, называемая ECMAScript, работает совершенно одинаково во всех приложениях, поддерживающих данный стандарт. Компании могут использовать этот открытый стандартный язык для разработки своих реализаций JavaScript. Первая версия стандарта ECMA документирована в спецификации ECMA-262. Стандарт ECMA-262 одобрен также ISO (International Organization for Standards) как ISO-16262. Вы можете найти PDF-версию ECMA-262 на сайте Netscape DevEdge Online. Вы можете также найти эту спецификацию на web-сайте ECMA. Спецификация ECMA не описывает Document Object Model (DOM), которая стандартизована консорциумом World Wide Web Consortium (W3C). DOM определяет способ, которым HTML-объекты документа экспонируются Вашему скрипту. Соотношение версий JavaScript и ECMA Netscape тесно сотрудничает с ECMA для создания ECMA-спецификации. В таблице показано соотношение между версиями JavaScript и ECMA. Таблица 1.2 Версии JavaScript и ECMA Версия JavaScript JavaScript 1.1 Сравнение с версией ECMA ECMA-262 основан на JavaScript 1.1. Работа над ECMA-262 не была завершена в момент выхода JavaScript 1.2. JavaScript 1.2 не полностью совместим с ECMA-262 по следующим причинам: JavaScript 1.2 Netscape разработал дополнения для JavaScript 1.2, которые не были учтены в ECMA-262. ECMA-262 добавил интернационализацию с использованием Unicode и универсальное поведение на всех платформах. Серверные возможности JavaScript 1.2, такие как объект Date, были платформозависимыми и использовали поведение, специфическое для конкретных платформ. JavaScript 1.3 полностью совместим с ECMA-262. JavaScript 1.3 В JavaScript 1.3 устранено несоответствие JavaScript 1.2 с ECMA-262 при сохранении всех дополнительных возможностей JavaScript 1.2, исключая == и !=, которые были изменены для обеспечения соответствия ECMA-262. Эти дополнительные возможности, включая некоторые новые из JavaScript 1.3, не являющиеся частью ECMA, рассматриваются при создании второй версии спецификации ECMA. Например, JavaScript 1.2 и 1.3 поддерживают регулярные выражения, которые не вошли в Стр. 38 из 63 25.05.2011 10:15 Веб-программирование. Конспект лекций http://4stud.asoiu/web-programming/lectures.php ECMA-262. Вторая версия спецификации ECMA не была закончена, когда JavaScript 1.3 был опубликован. В книге Клиентский JavaScript. Справочник. указано, какие возможности языка совместимы с ECMA. JavaScript всегда будет иметь возможности, не являющиеся частью спецификации ECMA; JavaScript совместим с ECMA, предоставляя дополнительные возможности. Документация JavaScript и спецификация ECMA Спецификация ECMA это набор требований по реализации ECMAScript; она может использоваться, если Вы хотите определить, поддерживается ли возможность JavaScript в ECMA. Если Вы планируете писать JavaScript-код, который использует только поддерживаемые ECMA возможности, Вам понадобится просмотреть спецификацию ECMA. Документ ECMA не предназначен для помощи программистам скриптов; о написании скриптов см. документацию JavaScript. JavaScript и терминология ECMA Спецификация ECMA использует терминологию и синтаксис, которые могут быть незнакомы программистам JavaScript. Хотя описание языка в ECMA может отличаться, сам язык остаётся тем же. JavaScript поддерживает всю функциональность спецификации ECMA. Документация JavaScript рассматривает аспекты языка, предназначенные для программиста JavaScript. Например: Объект global не обсуждается в документации JavaScript, поскольку Вы не используете его непосредственно. Методы и свойства объекта global, которые Вы используете, обсуждаются в документации JavaScript, но называются свойствами и методами верхнего уровня. Конструктор без параметров (zero-argument) с объектами Number и String не обсуждается в документации JavaScript, поскольку используется мало. Конструктор Number без аргумента возвращает +0, а конструктор String без аргумента возвращает "" (пустую строку). Общий шлюзовый интерфейс (CGI) Модули веб-сервера. ISAPI и apache modules Модульная архитектура веб-сервера Изначально, единственным средством выполнения программ на стороне веб-сервера был вызов CGI-обработчиков. Практика показала, что в CGI имеется ряд недостатков, в числе основных — высокие требования к аппаратным ресурсам веб-сервера и высокие накладные расходы на этапах загрузки и выгрузки CGI-приложений. Альтернативным решением стало использование модульной Стр. 39 из 63 25.05.2011 10:15 Веб-программирование. Конспект лекций http://4stud.asoiu/web-programming/lectures.php архитектуры веб-серверов, позволяющей расширять их возможности за счет внешних библиотек — модулей. Модули веб-сервера — это, как правило, статически или динамически подключаемые библиотеки функций, доступных веб-серверу. В отличие от CGI, модульные расширения быстрее и требуют меньших ресурсов, т.к. многопоточны, т.е. для обработки еще одного запроса не требуется загрузки еще одной копии приложения (Рис. 1). Рассмотрим модульные расширения наиболее распространенных веб-серверов — ISAPI для Internet Information Services и DSO для веб-сервера Apache. Рис. 1. Модульная архитектура веб-сервера ISAPI ISAPI (Internet Server Application Programming Interface) — это набор интерфейсов, предоставляемых веб-сервером MS IIS (Internet Information Services) для написания приложений, взаимодействующих с этим сервером и расширяющих его возможности. Приложения ISAPI представляют собой динамически подключаемые библиотеки (Dynamic Link Library, DLL), напрямую взаимодействующие с API IIS. Приложения ISAPI загружаются и выполняются в адресном пространстве IIS, поэтому серверу не нужно создавать новый процесс при каждом HTTP-запросе. Поскольку Windows загружает динамически подключаемую библиотеку один раз при первом вызове функции в DLL, то приложение ISAPI остается загруженным и не удаляется, пока не будет остановлен/выключен веб-сервер (если включено кэширование ISAPI), либо приложение не будет выгружено явным образом (если кэширование выключено). Приложения ISAPI могут быть оформлены или в виде расширений, или в виде фильтров. ISAPI-расширение — это приложение IIS, которое является адресатом запроса, оно выполняет действия, которые веб-сервер не может выполнять сам (например, обращение к базе данных). Расширение не влияет на параметры запроса, а использует их как Рис. 2. Архитектура ISAPI входные данные. В этом ISAPI-расширение напоминает CGI-приложение. ISAPI-расширение может быть вызвано как явно (через запрос вида http:///isapiext.dll?paramstring), так и неявно (через карту расширений, в которой указаны обработчики для зарегистрированных типов файлов (mapping), или при вызове через фильтр). Расширения ISAPI — наиболее частый способ применения ISAPI. ISAPI-фильтр, в отличие от расширения, является своего рода посредником в обработке пользовательского запроса с момента его получения веб-сервером и до момента отправки ответа. Фильтр может модифицировать запрос или ответ, вызвать специфичный для конкретного запроса обработчик и т.п., при этом сам фильтр не является конечным обработчиком. Фильтры ISAPI довольно сложны в разработке и сфера их использования ограничена, как правило, решением таких задач, как шифрование, журналирование, аутентификация, сжатие данных. Основное преимущество ISAPI — в скорости выполнения операций. ISAPI-приложение работает быстрее, чем обычная CGI-программа (которая должна всякий раз загружаться и выгружаться) или скрипт (который сначала должен быть загружен, потом обрабатан интерпретатором, которому, в общем случае, тоже нужно время на загрузку). Среди недостатков — трудности при отладке ISAPI-приложений. Незамеченная ошибка может привести Стр. 40 из 63 25.05.2011 10:15 Веб-программирование. Конспект лекций http://4stud.asoiu/web-programming/lectures.php к нарушению работоспособности не только самой библиотеки dll, но и всего веб-сервера. При разработке ISAPI-приложений на универсальных языках программирования, таких как C++ или Object Pascal еще одной проблемой становится неконтролируемый код. Т.е. разработчик должен сам заботиться об управлении памятью, «сборке мусора» и прочих аспектах системного уровня. Еще один недостаток, пожалуй, самый главный — непереносимость. Несмотря на то, что ISAPI — открытая спецификация и поддержка технологии реализована, например, в модуле mod_isapi.dll для Apache for Win32, нет никакой возможности применять ISAPI на платформах, отличающихся от MS Windows. NSAPI NSAPI (Netscape Server API) — это спецификация серверных расширений компании Netscape, разработанная для их же веб-сервера. Со снижением доли Netscape на рынке веб-серверов актуальность технологии снизилась, а в последствии компания и вовсе приняла и стала использовать спецификацию Microsoft ISAPI в своих веб-ориентированных разработках. Модули Apache. DSO Веб-сервер Apache имеет открытую архитектуру с открытым же исходным module_internalsApache2_BD.gif кодом. Различные версии Apache (как из ветки 1.3, так и 2.0) поддерживают модульность, более того, сам веб-сервер может быть представлен в виде модуля (apache core), обеспечивающего лишь базовую Структура модуля Apache функциональность. Дополнительные возможности вынесены во внешние модули, которые могут быть подключены к ядру статически или динамически. Это позволяет очень тонко настраивать Apache под конкретные задачи, включая в сборку только те функции, которые действительно нужны. Для статического подключения модулей Apache должен быть скомпилирован вместе с кодом нужных модулей. Динамически подключаемые модули добавляют свою функциональность при их загрузке во время запуска/перезапуска веб-сервера. Для динамического подключения модуль должен быть представлен в виде DSO (Dynamic Shared Object, Динамический Разделяемый Объект). Для поддержки DSO Apache использует опять же модуль, mod_so, который загружает модули в виде разделяемых библиотек или разделяемых файлов. Способ загрузки DSO указывается в конфигурационном файле веб-сервера Apache (httpd.conf) соответствующими директивами: LoadModule — задает связь с указанным модулем и добавляет его в список активных модулей. Синтаксис: LoadModule module filename Имя модуля является названием внешней переменной типа module и определено как Module Identifier в документации модуля. Имя файла (filename) задается относительно корня веб-сервера (ServerRoot). Пример: LoadModule status_module modules/mod_status.so LoadFile — задает связь с указанным файлом; используется для загрузки файла или библиотеки, котоые требуются для работы модуля. Синтаксис: Взаимодействие модулей и ядра Apache LoadFile filename [ filename ] ... Где filename — абсолютный путь к файл[у|ам] или относительный путь от корня веб-сервера Стр. 41 из 63 25.05.2011 10:15 Веб-программирование. Конспект лекций http://4stud.asoiu/web-programming/lectures.php (ServerRoot). Пример: LoadFile libexec/libxmlparse.so Модули взаимодействуют с сервером Apache через единый интерфейс. Они регистрируют свои обработчики в ядре Apache или в других модулях. Ядро Apache обращается к этим обработчикам когда это требуется. С другой стороны, модули могут обращаться к функциям и структурам данных ядра через Apache API. Это может потребоваться, например, при передаче данных или выделении памяти. Модуль Apache прозрачен для пользователя, т.е. не является конечной точкой клиентского запроса, чем напоминает ISAPI-фильтр. Модуль может представлять функции обработки программных прерываний (handlers for hooks), связывания директив конфигурации, фильтрации запроса и дополнительные функции. Программное прерывание (hook) — это любое критичное событие, произошедшее на этапе выполнения кода веб-сервера и которое должно быть обработано. Вызов функций этого типа контролируется ядром сервера, поскольку обработчики модуля могут дополнять код ядра. Функции связывания директив конфигурации предназначены для считывания и применения настроек модуля, которые у каждого модуля будут разными, из общего файла конфигурации веб-сервера. Фильтрация запросов позволяет выполнять обработку как входящих запросов, так и ответов сервера. Дополнительные функции — это некритичные функции и фильтры, результаты которых игнорируются ядром и возвращаются «как есть». Модули расширения Apache Приведем краткое описание некоторых модулей Apache. — отвечает за доступ к каталогам и файлам веб-сервера и переопределение ряда параметров веб-сервера для заданных каталогов и файлов. mod_alias — отвечает за переадресацию и использование псевдонимов, позволяет перенаправлять запросы к физическим каталогам по их псевдонимам (алиасам). Такое перенаправление используется, например, для каталога с CGI-скриптами. mod_asis позволяет отдавать клиенту запрошенный ресурс «как есть», без какой-либо обработки сервером. Модули из семейства mod_auth отвечают за аутентификацию пользователей. Различные модули из этого семейства реализуют разные способы аутентификации. Подробности — в документации на модули mod_auth, mod_auth_dbm, mod_auth_digest и подобных. mod_autoindex предназначен для автоматической генерации индексных файлов. Это может быть очень удобно при работе, например, с файловым архивом, когда нужно просто поместить на индексной странице названия файлов. С помощью директив этого модуля можно сортировать файлы, добавлять разным типам файлов свои иконки, отображать или скрывать файлы с заданными расширениями и так далее. mod_deflate позволяет сжимать файлы в формат GZIP перед отправкой пользователю для ускорения загрузки. mod_status позволяет администратору контролировать работу веб-сервера. Система будет сама записывать в файл все запросы, время перезагрузок и остановок сервера, загрузку процессора компьютера и другую информацию. mod_proxy позволяет использовать Apache в качестве прямого или обратного прокси-сервера. В первом случае он управляет доступом во внешнюю сеть из ЛВС, во втором — напротив, предоставляет доступ к узлам ЛВС, которые не видны «извне». mod_access Стр. 42 из 63 25.05.2011 10:15 Веб-программирование. Конспект лекций http://4stud.asoiu/web-programming/lectures.php mod_rewrite отвечает за перенаправление запросов и позволяет скрывать параметры скриптов. Например, с помощью этого модуля можно настроить преобразование клиентского запроса вида: http://example.com/news/2009/05/03 к фактическому виду: http://example.com/news.php?date=20090503 — загружаемый (а не вызываемый, как в CGI) интерпретатор Perl. mod_include — набор функций препроцессинга SSI (Server Side Includes), позволяющих «собирать» веб-страницу на стороне сервера из отдельных файлов. mod_perl Это далеко не полный перечень модулей Apache, но даже он позволяет дать представление о гибкости этого самого распространенного веб-сервера. Расширяемый язык разметки XML. Технологии на основе XML. 1. Что такое XML? 2. Возможности XML 3. Структура XML-документа DTD и XSLT well-formed и valid 4. Преобразование XML 5. Преимущества и недостатки XML интероперабельность 6. Технологии на основе XML SVG RDF RSS SOAP XUL Что такое XML? XML (англ. eXtensible Markup Language — расширяемый язык разметки) — рекомендованный W3C универсальный язык разметки, предназначенный для описания структурированных данных, обмена информацией между программами и создания специализированных языков разметки (XML-словарей). Целью создания XML было обеспечение совместимости при передаче структурированных данных между разными системами обработки информации, особенно при передаче таких данных через Интернет. Словари, основанные на XML (например, RDF, RSS, MathML, XHTML, SVG), сами по себе формально описаны на том же XML, что позволяет программно изменять и проверять документы на основе этих словарей, не зная их семантики, то есть не зная смыслового значения элементов. Важной особенностью XML также является применение так называемых пространств имён (англ. namespace). Годом рождения XML можно считать 1996 год, в конце которого появился черновой вариант спецификации языка, или 1998 года, когда эта спецификация была утверждена. А началось всё с Стр. 43 из 63 25.05.2011 10:15 Веб-программирование. Конспект лекций http://4stud.asoiu/web-programming/lectures.php появления в 1986 году языка SGML (англ. Standard Generalized Markup Language — стандартный обобщённый язык разметки) - гибкого и всеохватывающего мета-языка для создания языков разметки. Этот язык настолько универсален, что включает такие возможности, которые крайне редко используются. Ценой универсальности является сложность и, как следствие, дороговизна применения языка в практических разработках. В итоге большинство возможностей SGML попросту невостребованны. Однако SGML нашел свое применение в качестве основы для создания других языков разметки, в частности HTML - не в пример более простого и легкого в освоении языка. Но, по мере роста количества и изменения качества документов в Сети, росли и предъявляемые к ним требования, и простота HTML превратилась в его главный недостаток. Ограниченность количества тегов и полное безразличие к структуре документа побудили разработчиков в лице консорциума W3C к созданию такого языка разметки, который был бы не столь сложен, как SGML, и не настолько примитивен, как HTML. В результате на свет появился язык XML, сочетающий в себе простоту HTML, логику SGML и удовлетворяющий требованиям Интернета. * Правильно построенный (Well-formed). Правильно построенный документ соответствует всем общим правилам синтаксиса XML, применимым к любому XML-документу. И если, например, начальный тег не имеет соответствующего ему конечного тега, то это неправильно построенный документ XML. Документ, который неправильно построен, не может считаться документом XML; XML-процессор (парсер) не должен обрабатывать его обычным образом и обязан классифицировать ситуацию как фатальная ошибка. * Действительный (Valid). Действительный документ дополнительно соответствует некоторым семантическим правилам. Это более строгая дополнительная проверка корректности документа на соответствие заранее определённым, но уже внешним правилам, в целях минимизации количества ошибок, например, структуры и состава данного, конкретного документа или семейства документов. Эти правила могут быть разработаны как самим пользователем, так и сторонними разработчиками, например, разработчиками словарей или стандартов обмена данными. Обычно такие правила хранятся в специальных файлах — схемах, где самым подробным образом описана структура документа, все допустимые названия элементов, атрибутов и многое другое. И если документ, например, содержит не определённое заранее в схемах название элемента, то XML-документ считается недействительным; проверяющий XML-процессор (валидатор) при проверке на соответствие правилам и схемам обязан (по выбору пользователя) сообщить об ошибке. XML (eXtensible Markup Language) — это упрощенный диалект языка SGML, предназначенный для описания иерархических структур данных в World Wide Web. Он разрабатывается рабочей группой W3C с 1996 г.; в настоящее время принятой рекомендацией является вторая редакция языка XML 1.0 (октябрь 2000 г.), на которую и ориентируется дальнейшее изложение. XML, несомненно, входит в обойму наиболее перспективных технологий WWW, чем объясняется интерес, который уделяется ему и корпорациями-разработчиками, и широкой публикой. Прежде чем перейти к его описанию, представляется уместным обсудить причины его появления и последующего бурного развития. Попытаемся для этого взглянуть на те проблемы WWW, которые должны быть решены средствами нового поколения Веб-технологий. Чего не хватает HTML? HTML не выражает смысла документов. Язык HTML был создан для описания структуры документов (название, заголовки, списки, абзацы и т. п.) и, в некоторой степени, правил их отображения (полужирный шрифт, курсивный шрифт и т. п.). Он ни в коей мере не предназначен для описания смысла написанных на нем Стр. 44 из 63 25.05.2011 10:15 Веб-программирование. Конспект лекций http://4stud.asoiu/web-programming/lectures.php документов, а во многих случаях именно данные составляют существо документа, будь-то биржевая сводка или научная публикация. Поэтому появилась необходимость в языке описания данных, причем данных, организованных в иерархические структуры. HTML громоздок и негибок. За последние годы HTML превратился в нагромождение тегов, которые часто дублируют друг друга и отнюдь не вносят ясности в текст документа. Если добавить сюда еще и нестандартные расширения HTML, которыми грешат все разработчики обозревателей, то создание мало-мальски сложных HTML-документов становится серьезной задачей. С другой стороны, раз и навсегда зафиксированный набор тегов часто оказывается недостаточно гибким для выражения нужного нам содержания. Концепция Веб-обозревателя слишком ограничена. С появлением Java-аплетов, сценарных языков и элементов ActiveX Веб-обозреватели перестали быть простыми "отображателями" HTML-документов; сегодня скорее они выглядят как программы, запускающие конкретные приложения. Тем не менее, сама концепция обозревателя накладывает излишние ограничения на пользователя; во многих случаях нам нужны Веб-ориентированные приложения, т. е. программы, способные читать специализированную информацию с Веб-узлов и выдавать нам ее в привычном виде, например, в виде электронных таблиц. Поиск документов возвращает слишком много ссылок. Все мы постоянно пользуемся поисковыми системами и постоянно клянем их за неудобство работы. Допустим, что мне нужны все тексты книг Сергея Довлатова, имеющиеся в Сети. Попытка поиска по имени автора приведет к тому, что я получу список всех ссылок с этим именем, включая воспоминания о Довлатове, рецензии на его книги и т. д. Намного удобнее было бы воспользоваться специальным тегом , чтобы указать, что именно я ищу. Невозможно найти взаимосвязанные ресурсы. Допустим теперь, что я все же нашел несколько рассказов Довлатова, которые явно составляют единый сборник. Хорошо, если они содержат ссылку на оглавление, но часто это не так. Поэтому необходим способ указания того, что данная группа страниц составляет единый ресурс и должна обрабатываться соответственно. Для этого необходима стандартизованная и развитая система метаописателей Веб-страниц. Что предлагает XML? XML — это попытка решить перечисленные проблемы путем создания простого языка разметки, описывающего произвольные структурированные данные. Точнее говоря, это метаязык, на котором пишутся специализированные языки, описывающие данные определенной структуры. Такие языки называются XML-словарями. В отличие от HTML, XML не содержит никаких указаний на то, как описанные в XML-документе данные должны отображаться. Способ отображения данных для различных устройств задается языком описания стилей XSL, который играет для XML примерно ту же роль, что CSS дл HTML. Другое принципиальное его отличие от HTML состоит в том, что XML может содержать любые теги, которые сочтут нужным использовать создатели XML-словаря. Приведем список лишь нескольких специализированных языков на базе XML, которые сегодня находятся в разных стадиях разработки рабочими группами W3C: MathML — язык математических формул; SMIL — язык интеграции и синхронизации мультимедийных средств; SVG — язык двумерной векторной графики; RDF — язык метаописаний ресурсов; XHTML — переформулировка HTML в терминах XML. Процесс обработки XML-документа состоит в следующем. Его текст анализируется специальной Стр. 45 из 63 25.05.2011 10:15 Веб-программирование. Конспект лекций http://4stud.asoiu/web-programming/lectures.php программой, которая называется XML-процессором. XML-процессор ничего не знает о семантике данных в документе; он только производит синтаксический разбор (parsing) текста документа и проверяет его правильность с точки зрени правил XML. Если документ правильно оформлен (wellformed), то результаты разбора текста передаются XML-процессором прикладной программе, которая выполняет их содержательную обработку; если же документ оформлен неверно, т. е. содержит синтаксические ошибки, то XML-процессор должен сообщить о них пользователю. Применения XML Возникает вопрос: а какой смысл в использовании "пустого языка", лишенного собственного содержания? Дело в том, что, несмотря на внешнюю простоту, XML обладает достаточно изощренными механизмами контроля правильности данных, позволяет производить проверку иерархических отношений внутри документа, и, самое главное, устанавливает единый стандарт для документов, хранящих данные, какова бы ни была природа этих данных. Остановимся подробнее на некоторых сферах применения языка XML. Традиционная обработка данных Перечисленные выше возможности позволяют рассматривать XML как платформо-независимый стандарт хранения и представления информации, который в сочетании с другими современными технологиями (в частности, с технологиями Java) способен стать основой для создания любых машинно-независимых приложений, в т. ч. для обмена данными между сервером и клиентом. Кроме того, активно разрабатываемые сегодня языки запросов на базе XML могут составить серьезную конкуренцию языку SQL. Программирование, управляемое документом XML-документы могут служить контейнерами для построения приложений из существующих интерфейсов и компонентов. В этом случае документ состоит из ссылок на компоненты пользовательского интерфейса и модули обработки данных, которые связываются в процессе отображения страницы на экране. Архивирование компонентов Современное программирование базируется на использовании компонентов, которые в идеале должны легко собираться в единое целое с помощью несложного дополнительного кодирования. Основой для этого служит архивирование компонентов, которое, в свою очередь, требует единообразного подхода к их хранению и последующему использованию. Есть все основания полагать, что в ближайшем будущем XML-документы окажутся альтернативой распространенному сегодня хранению компонентов в виде двоичных модулей. Внедрение данных После того, как мы определили структуру данных XML, принципиально несложно написать генератор кода, обрабатывающего эти данные. По мере развития подобных программных средств вся рутинная обработка данных (включая проверку их правильности, представление в нужном формате и т. п.) может быть автоматизирована, позволяя разработчикам сосредоточиться на нестандартных частях создаваемого продукта. Структура XML-документа XML-документ состоит из деклараций, элементов, комментариев, специальных символов и директив. Все эти составляющие документа описаны в данной главе. Элементы и атрибуты XML — это теговый язык разметки документов. Иными словами, любой документ на языке XML Стр. 46 из 63 25.05.2011 10:15 Веб-программирование. Конспект лекций http://4stud.asoiu/web-programming/lectures.php представляет собой набор элементов, причем начало и конец каждого элемента обозначается специальными пометками, называемыми тегами. Элемент состоит из трех частей: начального тега, содержимого и конечного тега. Тег — это текст, заключенный в угловые скобки "<" и ">". Конечный тег имеет то же имя, что начальный тег, но начинается с косой черты "/". Пример XML-элемента: Сергей Довлатов Имена элементов зависят от регистра, т. е. , и — это имена различных элементов. Наличие закрывающего тега всегда обязательно. Если тег является пустым, т. е. не имеет содержимого и закрывающего тега, то он имеет специальную форму: <элемент/> Любой элемент может иметь атрибуты, содержащие дополнительную информацию об элементе. Атрибуты всегда включаются в начальный тег элемента и имеют вид: имя_атрибута="значение_атрибута" Аттрибут обязан иметь значение, которое всегда должно быть заключено в одинарные или двойные кавычки. Имена атрибутов также зависят от регистра. Пример элемента, имеющего атрибут: Сергей Довлатов Элементы должны либо следовать друг за другом, либо быть вложены один в другой: Часть речи Бродский, Иосиф Марш одиноких Довлатов, Сергей Здесь элемент books (книги) содержит два вложенных элемента book (книга), которые, в свою очередь, имеют атрибут isbn и содержат три последовательных элемента: title (название), author (автор) и present (есть в наличии), причем последний пуст, т. к. в данном случае соответствует логическому флажку. Из приведенного описания видно, что синтаксис XML напоминает синтаксис HTML (что естественно, т. к. оба они являются диалектами одного языка SGML), но требования к оформлению правильных XML-документов выше. Еще одним очень важным отличием XML от HTML является то, что содержимое элементов, т. е. все, что содержится между начальным и конечным тегами, считается данными. Это означает, что XML не игнорирует символы пробела и разрыва строк, как это делает HTML. 8.1.3.2. Пролог и директивы Стр. 47 из 63 25.05.2011 10:15 Веб-программирование. Конспект лекций http://4stud.asoiu/web-programming/lectures.php Любой XML-документ состоит из пролога и корневого элемента, например: Марш одиноких Довлатов, Сергей В этом примере пролог сводится к единственной директиве (первая строка документа), указывающей версию XML. За ней следует XML-элемент с уникальным именем, который содержит в себе все остальные элементы и называется корневым. Директива (processing instruction) — это выражение, заключенное в специальные теги "", которое содержит указания программе, обрабатывающей XML-документ. Стандарт XML резервирует только одну директиву , указывающую на версию языка XML, которой соответствует данный документ (второй версии XML пока нет). В действительности, эта директива несколько богаче и в самом общем виде выглядит так: Здесь атрибут encoding задает кодировку символов документа. По умолчанию считается, что XML-документы должны создаваться в формате UTF-8 или UTF-16. Если же используется какая-либо другая кодировка символов, то ее название согласно Таблицы П7.1 должно быть указано в данном атрибуте, как показано в примере. Атрибут standalone говорит о том, содержит ли данный документ внешние разделы. Значение yes означает, что таких разделов нет, значение no — что они есть. В общем случае, пролог может содержать также декларации типа документа. Комментарии XML-документы могут содержать комментарии, которые игнорируются приложением, обрабатывающим документ. Комментарии строятся по тем же правилам, что и в HTML: начинайте комментарий с символов "", не используйте внутри комментария символов "--". Пример комментариев: Имена и данные Все имена элементов, атрибутов и разделов должны начинаться с буквы Unicode и состоять из букв, цифр, символов точки (.), подчеркивания (_) и дефиса (-). Единственное ограничение состоит в том, что они не должны начинаться с комбинации букв xml в любом регистре; подобные имена зарезервированы для будущих расширений языка. Существенно, что стандарт допускает использование в именах не только английских букв, но и любых других, хотя существующие XML-процессоры часто ограничены теми системами кодировок, которые в них заложены создателями. Поэтому мы в своих примерах пишем имена по-английски. Стр. 48 из 63 25.05.2011 10:15 Веб-программирование. Конспект лекций http://4stud.asoiu/web-programming/lectures.php Данные, т. е. содержимое элементов и значения атрибутов, могут состоять из любых символов, кроме перечисленных в следующем разделе. Специальные символы Ряд символов в языке XML зарезервирован и должен представляться специальным образом: левая угловая скобка ("<") < правая угловая скобка (">") > амперсант ("&") & двойная кавычка (") в значениях атрибутов " одинарная кавычка (') в значениях атрибутов ' При желании можно пользоваться числовой кодировкой символов в стандарте Unicode. При этом символ может быть задан своим десятичным кодом (&#код;) или шестнадцатеричным кодом (&#xкод;). Например © представляет символ авторского права ©, а А – русскую букву А. Как мы увидим в дальнейшем, XML гораздо богаче, чем HTML, в использовании подобных конструкций, поскольку позволяет осуществлять подстановку в текст документов любых символьных выражений. Секции CDATA Еще одним способом включения в содержимое XML-элементов недопустимых символов является использование т. н. секций CDATA (сокр. от Character DATA, т. е. символьные данные). Допустим, что мы хотим сделать содержимым элемента layout фрагмент HTML-текста, например:

    Заголовок

    Подобная конструкция неверна, т. к. HTML-тег H1 будет в данном случае воспринят как тег XML. Для того, чтобы все содержимое элемента layout воспринималось как данные, мы должны заключить его в секцию CDATA: Заголовок]]> Как мы видим из этого примера, секция CDATA заключается в ограничители . Все внутри этой секции считается символьными данными; в частности, секции CDATA не могут вкладываться друг в друга. Разделы и их декларации Разделы XML-документа Физически XML-документ может состоять из несколько разделов (entities). При этом корневой элемент документа также является разделом, который называется разделом документа, хотя он никак Стр. 49 из 63 25.05.2011 10:15 Веб-программирование. Конспект лекций http://4stud.asoiu/web-programming/lectures.php специально не оформлен. Все разделы имеют содержимое; все они, кроме раздела документа и внешней DTD, имеют имя. С точки зрения синтаксического разбора документа разделы подразделяются на анализируемые и неанализируемые. Неанализируемый раздел (unparsed entity) — это ресурс, содержимое которого XML-процессор воспринимает как внешние данные без их синтаксического анализа (например, текст, не являющийся XML-документом). Неанализируемые разделы всегда имеют нотацию, указывающую на их формат. Анализируемые разделы (parsed entities) предназначены для текстовой подстановки: всякий раз, когда XML-процессор встречает в документе имя такого раздела, он заменяет его на содержимое этого раздела. Внутренние разделы Декларации разделов подразделяются на внутренние и внешние. Декларация внутреннего раздела выглядит так: Она включает в себя содержимое объекта (параметр значение) и используется для подстановки этого значения вместо имени раздела. Мы можем, например, ввести в пример с книгами атрибут жанр и использовать для задания жанра внутренние разделы: ]> Часть речи Бродский, Иосиф Марш одиноких Довлатов, Сергей Из этого примера видно, что ссылка на раздел (entity reference) выглядит точно так же, как ссылка на специальный символ, т. е. имеет вид &имя;. На самом деле, специальные символы — это точно такие же ссылки, но соответствующие разделы заданы неявно во внутренней декларации языка XML. Подобные текстовые подстановки удобны для задания сокращений, позволяющих уменьшить объем документа, и для введения обозначений для часто изменяемых полей документа. Так, например, мы можем вынести во внутренний раздел дату очередной ревизии публикации и затем изменять только значение этого раздела. Внешние разделы Существуют два варианта деклараций внешнего раздела: Первый вариант называется системным разделом, второй — публичным разделом. Они оба связывают имя раздела с внешним ресурсом, заданным своим URI, который должен иметь кодированную форму и не содержать закладок. URI внешнего ресурса называется системным идентификатором раздела. Использование внешнего ресурса зависит от нескольких факторов: Стр. 50 из 63 25.05.2011 10:15 Веб-программирование. Конспект лекций http://4stud.asoiu/web-programming/lectures.php Если декларация содержит параметр NDATA, задающий нотацию раздела, то раздел является неанализируемым. Если параметр NDATA не задан, то раздел анализируемый, и соответствующий ресурс должен быть XML-документом. Это означает, что вместо ссылки на раздел в текст документа будет включаться текст соответствующего ресурса. Публичный раздел может содержать строку, задающую публичный идентификатор раздела. XML-процессор может использовать этот идентификатор для генерации альтернативного URI данного раздела. Если ему это не удалось, то он должен использовать системный идентификатор для загрузки содержимого раздела. Примеры деклараций внешних ресурсов: Внешний анализируемый раздел должен начинаться с директивы , которая может не содержать номера версии, но обязана содержать кодировку символов. Эта директива не входит в состав подставляемого текста. 8.1.5. Декларация типа документа Декларация типа XML-документа (document type declaration) содержит определение типа документа (document type definition, DTD) или указывает на него. DTD — это специальная грамматика, описывающая синтаксис определенного класса документов; правила создания DTD рассмотрены в гл. 8.2. Здесь же приводится только описание деклараций, которые обеспечивают доступ к DTD. Декларация типа документа, как и декларация раздела, может быть внутренней или внешней. Внутренняя декларация имеет вид: а внешняя — те же два варианта, что и внешние разделы: Таким образом, отличие декларации типа документа от декларации раздела состоит только в том, что: она начинается с ключевого слова !DOCTYPE, а не !ENTITY; она может иметь тело, заключенное в квадратные скобки. Имя такой декларации должно совпадать с именем корневого элемента, который она описывает, а тело должно соответствовать правилам построения DTD и будет описано в гл. 8.2. Пока отметим, что оно может содержать декларации разделов. Примеры внешних деклараций: Отметим, что внешняя декларация типа документа может содержать и ссылку на DTD, которая называется внешним подмножеством DTD, и тело, которое описывает дополнения к внешней DTD (оно Стр. 51 из 63 25.05.2011 10:15 Веб-программирование. Конспект лекций http://4stud.asoiu/web-programming/lectures.php называется внутренним подмножеством DTD). Пример XML-документа Чтобы собрать все описанные выше понятия в единое целое, приведем пример законченного XML-документа, содержащего прейскурант книжного магазина. [ "поэзия"> "проза"> "драматургия"> ]> Марш обреченных Сергей Довлатов 60.00 Часть речи Иосиф Бродский 55.00 Антигона Софокл 103.50 Перспективы развития веб-технологий Перспективы Веб? WEB 0.0 — юзер мечтает законнектиться с кем или чем либо WEB 1.0 — юзер получает контент WEB 2.0 — юзер создаёт контент WEB 3.0 — коллективное создание контента WEB 4.0 — контент думает за юзера Стр. 52 из 63 25.05.2011 10:15 Веб-программирование. Конспект лекций http://4stud.asoiu/web-programming/lectures.php WEB 5.0 — контент общается с контентом WEB 6.66 — контент удаляет юзеров, поняв что они бессмысленны WEB 7.0 — весь контент самоудаляется, поняв что он бессмысленен... [схабрено] Небольшой (по историческим меркам) срок существования сервиса WWW показал его востребованность все возрастающему числу пользователей. Это стало хорошим стимулом для развития веб-ориентированных концепций и технологий, увеличивающих возможности пользователей. Массовое внедрение и использование этих решений - причина качественных изменений во Всемирной паутине, своего рода смена «версии» Web. На текущий момент аналитики Интернет выделяют три таких «версии» — Web 1.0, Web 2.0 и Web 3.0 (стоит отметить, что деление это условное и часто критикуемое). Web 1.0 Понятие Web 1.0 — это общий термин, описывающий состояние Всемирной Паутины за первое десятилетие ее существования. Для 90-х годов XX века были характерны низкая компьютерная грамотность пользователей, медленные типы подключения и ограниченное число сервисов Интернет. Веб-сайтам того времени были присущи следующие основные черты: Статичное содержимое веб-страниц, контент создавался и поддерживался разработчиками веб-сайта. Фреймовая и/или табличная верстка. Низкое качество разметки (зачастую контент был представлен в виде обычного текста, заимствованного из конференций UseNet и подобных источников, и заключенного в тег
    ).
    Широкое использование нестандартных тегов, поддерживаемых только конкретным браузером
    (см. «войны браузеров» самостоятельно).
    Использование физических или внедренных стилей, редко - встраиваемых и, тем более, связанных
    таблиц стилей.
    Указание информации о рекомендованной версии браузера и разрешении монитора, при которых
    дизайн сайта отображается корректно.
    Гостевые книги, форумы или чаты — как инструменты обратной связи и придания
    интерактивности.
    Использование графических и текстовых информеров (погода, курс доллара и т.п.) для
    агрегирования информации.
    Условное окончание эпохи «Web 1.0» датируется 2001 годом, когда произошел обвал акций интернеткомпаний (об этом говорят так: «лопнул пузырь доткомов» (от англ. .com)). Собственно,
    существовавшие сайты никуда не делись, но вот вновь создаваемые сайты все больше и больше
    отличались от типичных «веб-один-нольных».
    Web 2.0
    Web 2.0 — совокупность веб-технологий, ориентированная на активное участие пользователей в
    создании контента веб-сайтов.
    Появление названия Web 2.0 принято связывать со статьёй Тима О’Рейли «What Is Web 2.0» от 30
    Стр. 53 из 63
    25.05.2011 10:15
    Веб-программирование. Конспект лекций
    http://4stud.asoiu/web-programming/lectures.php
    сентября 2005 года
    Особенности web 2.0
    Привлечение «коллективного разума» для наполнения сайта;
    Взаимодействие между сайтами с использованием веб-сервисов;
    Обновление веб-страниц без перезагрузки;
    Агрегирование и синдикация информации;
    Объединение различных сервисов для получения нового функционала;
    Дизайн с применением стилевой разметки и акцентом на юзабилити.
    Основные элементы web 2.0
    Веб-сервисы
    Веб-сервисы (веб-службы) — это сетевые приложения, доступные по протоколу HTTP, в качестве
    протоколов взаимодействия использующие основанные на XML форматы данных (RPC, SOA и
    подобные). В результате программное обеспечение может использовать веб-службы вместо того, чтобы
    самостоятельно реализовывать требуемый функционал (например, проверить введенный в форме
    почтовый адрес). В отличие от обычных динамических библиотек, такой подход обладает рядом
    плюсов:
    Веб-служба находится на серверах компании, которая её создала (рис. 1). Поэтому в любой
    момент пользователю доступна самая свежая версия программы и ему не приходится заботиться
    об обновлениях и вычислительных мощностях, требуемых для выполнения операции.
    Инструменты для работы с HTTP и XML есть в любом современном языке программирования,
    поэтому веб-службы являются платформонезависимыми.
    Стр. 54 из 63
    25.05.2011 10:15
    Веб-программирование. Конспект лекций
    http://4stud.asoiu/web-programming/lectures.php
    Рис. 1. Google Docs как пример веб-сервиса.
    AJAX
    Asynchronous JavaScript and XML — подход к построению пользовательских интерфейсов
    веб-приложений, при котором веб-страница, не перезагружаясь, асинхронно загружает нужные
    пользователю данные. Использование Ajax стало наиболее популярно после того, как Google начала
    активно использовать его при создании своих сайтов, таких как Gmail и Google Maps. Часто Ajax
    считают синонимом Веб 2.0, что совершенно не так. Веб 2.0 не привязан к какой-то одной технологии
    или набору технологий, с тем же успехом ещё в 1999 году возможность асинхронного обновления
    страницы уже предоставлял Flash 4.
    Веб-синдикация
    Одновременное распространение информации в том числе аудио- и видео- на различные страницы или
    web-сайты, как правило, с использованием технологий RSS или Atom. Принцип заключается в
    распространении заголовков материалов и ссылки на них (например, последние сообщения форумов, и
    т. п.). Первоначально эта технология использовалась на новостных ресурсах и в блогах, но постепенно
    сфера применения расширилась.
    Mash-up
    Стр. 55 из 63
    25.05.2011 10:15
    Веб-программирование. Конспект лекций
    http://4stud.asoiu/web-programming/lectures.php
    Веб mash-up (дословный перевод — «смешение») — сервис, который полностью или частично
    использует в качестве источников информации другие сервисы, предоставляя пользователю новую
    функциональность для работы. В результате такой сервис может становиться также новым источником
    информации для других веб mash-up сервисов. Таким образом образуется сеть зависимых друг от друга
    сервисов, интегрированных друг с другом.
    Например, сайт транспортной фирмы может использовать карты сервиса Google Maps для
    отслеживания местонахождения перевозимого груза.
    Метки (теги)
    Ключевые слова, описывающие рассматриваемый объект, либо относящие его к какой-либо категории.
    Это своего рода метки, которые присваиваются объекту, чтобы определить его место среди других
    объектов. С понятием меток тесно связано понятие фолксономии — термина, о котором широко
    заговорили именно в связи с ростом сервисов Веб 2.0, таких как Flickr, del.icio.us, и, в дальнейшем,
    Wink.
    Появление и быстрое распространение блогов тоже вписывается в концепцию Веб 2.0, создавая так
    называемую «редактируемую Паутину» (writable web).
    Возможность пометить документ ключевыми словами существует и в языке HTML (англ. keywords),
    однако этот способ был полностью скомпрометирован широким его использованием в целях поискового
    спама.
    Социализация
    Использование разработок, которые позволяют создавать сообщества пользователей.
    В понятие социализация сайта можно также включить возможность индивидуальных настроек
    сайта и создание личной зоны (личные файлы, изображения, видео, блоги) для пользователя,
    чтобы пользователь чувствовал свою уникальность.
    Поощрение, поддержка и доверие «коллективному разуму».
    При формировании сообщества большое значение имеет соревновательный элемент, Репутация
    или Карма, которые позволяют сообществу саморегулироваться и ставить пользователям
    дополнительные цели присутствия на сайте.
    Дизайн
    Понятие Веб 2.0 также отразилось и в дизайне. Предпочтительными стали округлость, имитация
    выпуклых поверхностей, имитация отражений на манер глянцевого пластика современных hi-end
    устройств (к примеру, плееры). В целом, восприятие внешнего вида на глаз кажется более приятным.
    Графика таких сайтов занимает больший объём, нежели при использовании аскетичного дизайна.
    Отчасти эта тенденция связана с совпавшим по времени выходом новых версий операционных систем
    использующих вышеупомянутые идеи.
    Однако однообразие таких сайтов явно и в последнее время считается, графический облик
    классического дизайна веб 2.0, устаревшим и не креативным. Особенно это отражается в современной
    тенденции создания информативных сайтов, где главную роль играет простота, изящество, графичность
    и юзабилити. В дизайне не должно быть ограничений, но веб 2.0 их прививает.
    Недостатки Веб 2.0
    Стр. 56 из 63
    25.05.2011 10:15
    Веб-программирование. Конспект лекций
    http://4stud.asoiu/web-programming/lectures.php
    При использовании технологий web 2.0 вы становитесь арендатором сервиса и/или дискового
    пространства у какой-то сторонней компании. Возникающая при этом зависимость формирует ряд
    недостатков новых сервисов:
    зависимость сайтов от решений сторонних компаний, зависимость качества работы сервиса от
    качества работы многих других компаний;
    слабая приспособленность нынешней инфраструктуры к выполнению сложных вычислительных
    задач в браузере;
    уязвимость конфиденциальных данных, хранимых на сторонних серверах, для злоумышленников
    (известны случаи хищения личных данных пользователей, массовых взломов учётных записей
    блогов).
    Фактически сайт эпохи Веб 2.0 на первый взгляд интерактивен и дружелюбен, позволяет себя легко
    настраивать. Однако сбор статистики о пользователях, их предпочтениях и интересах, личной жизни,
    карьере, круге друзей могут помочь владельцу сайта манипулировать сообществом. По самым
    пессимистичным прогнозам многочисленные сайты Веб 2.0 вкупе с другими современными
    технологиями дают прообраз тоталитарной системы «Большого брата».
    Web 3.0
    Web 3.0 — это принципиально новый подход к обработке информации, представленной во Всемирной
    паутине. Web 3.0 в первую очередь подразумевает под собой иной подход к обработке информации
    сообществом пользователей. Если Web 1.0 предполагает веб-мастера в качестве поставщика контента, а
    Web 2.0 — сообщество равноправных пользователей, генерирующих контент в рамках тематического
    проекта, то Web 3.0 уже позволяет этим самым равноправным пользователям "выбирать" экспертов в
    заданной области (или в нескольких областях) и "наделять его властью". Такие общепризнанные
    эксперты-выдвиженцы постепенно расширяют свое влияние на сообщество, могут выступать его
    модераторами, управлять сообществом при помощи дополнительных прав и расширенных
    возможностей в рамках интернет-проекта. Это исключает возможность управления сообществом
    некомпетентных и малозначимых его участников, что является очень важным вещью — достаточно
    вспомнить «вебдванольное» равноправие на проекте Wikipedia, из-за которого ее создатель должен был
    более десятка раз исправлять свою собственную (!) биографию – пользователи считали, что в ней есть
    неточности и честно ее исправляли.
    Также термином Web 3.0 часто называют концепцию семантической паутины (Semantic Web).
    Semantic Web
    Семантическая паутина (англ. Semantic Web) — часть глобальной концепции развития сети Интернет,
    целью которой является реализация возможности машинной обработки информации, доступной во
    Всемирной паутине. Основной акцент концепции делается на работе с метаданными, однозначно
    характеризующими свойства и содержание ресурсов Всемирной паутины, вместо используемого в
    настоящее время текстового анализа документов. Термин впервые введён Тимом Бернерсом-Ли в мае
    2001 года в журнале «Scientific American», и называется им «следующим шагом в развитии Всемирной
    паутины». В семантической паутине предполагается повсеместное использование, во-первых,
    унифицированных идентификаторов ресурсов (URI), а во-вторых — онтологий и языков описания
    метаданных.
    Эта концепция была принята и продвигается Консорциумом W3 (Рис. 2). Для её внедрения
    предполагается создание сети документов, содержащих метаданные о ресурсах Всемирной паутины и
    Стр. 57 из 63
    25.05.2011 10:15
    Веб-программирование. Конспект лекций
    http://4stud.asoiu/web-programming/lectures.php
    существующей параллельно с ними. Тогда как сами ресурсы предназначены для восприятия человеком,
    метаданные используются машинами (поисковыми роботами и другими интеллектуальными агентами)
    для проведения однозначных логических заключений о свойствах этих ресурсов.
    Рис. 2. Стек протоколов Semantic Web
    Основная идея
    Семантическая паутина — это надстройка над существующей Всемирной паутиной, которая призвана
    сделать размещённую в ней информацию более понятной для компьютеров. Машинная обработка
    возможна в семантической паутине благодаря двум её важнейшим характеристикам:
    Повсеместное использование унифицированных идентификаторов ресурсов (URI). Традиционная
    схема использования таких идентификаторов в современном Интернете сводится к установке
    ссылок, ведущих на объект, им адресуемый. Очевидным свойством такой ссылки является
    возможность «загрузки» объекта, на который она указывает. Таким объектом может быть
    веб-страница, файл произвольного содержания, фрагмент веб-страницы, а также неявное указание
    на обращение к реально существующему физическому ресурсу по протоколу, отличному от HTTP
    (например, ссылки mailto:). Концепция семантической паутины расширяет это понятие, включая в
    него ресурсы, недоступные для скачивания. Адресуемыми с помощью URI ресурсами могут быть,
    например, отдельные люди, города и другие географические сущности, художественные
    артефакты и т. д. К идентификатору предъявляются несколько простых требований: он должен
    быть уникальной строкой определённого формата, адресующей реально существующий объект.
    Повсеместное использование онтологий и языков описания метаданных. Современные методы
    автоматической обработки данных, доступных в Интернете, как правило, основаны на частотном
    и лексическом анализе текстового содержимого, которое прежде всего предназначено для
    восприятия человеком. В семантической паутине предлагается использовать форматы описания,
    доступные для машинной обработки (например, семейство форматов, часто упоминаемое в
    литературе как «Semantic Web family»: RDF, RDF Schema или RDF-S, и OWL), в свою очередь,
    использующие URI для адресации описываемых и описывающих объектов, а также онтологии и
    дескрипционные логики в качестве базовых математических формализмов.
    Критика
    Несмотря на все преимущества, предоставляемые семантической паутиной в случае её внедрения,
    существуют сомнения в возможности её полной реализации.
    Практическая нереализуемость
    Стр. 58 из 63
    25.05.2011 10:15
    Веб-программирование. Конспект лекций
    http://4stud.asoiu/web-programming/lectures.php
    Разные комментаторы высказывают различные причины, которые могут быть препятствием к этому,
    начиная с человеческого фактора (люди склонны избегать работы по поддержке документов с
    метаданными, открытыми остаются проблемы истинности метаданных, и т. д.), и заканчивая
    сложностью определения онтологии верхнего уровня (корня иерархии), критической для семантической
    паутины.
    Дублирование информации
    Необходимость описания метаданных так или иначе приводит к дублированию информации. Каждый
    документ должен быть создан в двух экземплярах: размеченным для чтения людьми, а также в
    машинно-ориентированном формате.
    Невозможность получения коммерческой выгоды
    Известно, что основное финансирование современных интернет-ресурсов (за исключением строго
    некоммерческих проектов) обеспечивают рекламодатели. Главный критерий, от которого зависит
    стоимость рекламного места — посещаемость сайта. Однако в случае реализации семантических
    поисковых систем, которые будут сами отбирать и сразу предоставлять нужную пользователю
    информацию, отпадает необходимость посещать сайт — источник материала, а значит пользователь не
    увидит рекламу, и как следствие прекратится финансирование интернет-проектов.
    Реализация
    Языки описания
    Техническую часть семантической паутины составляет семейство стандартов на языки описания,
    включающее XML, XML Schema, RDF, RDF Schema, OWL, а также некоторые другие. Располагая их в
    порядке повышения уровня абстракции, реализуемого тем или иным языком, получаем:
    XML предоставляет синтаксис для определения структуры документа, подлежащего машинной
    обработке. Синтаксис XML не несёт семантической нагрузки.
    XML Schema определяет ограничения на структуру XML-документа. Стандартный
    синтаксический анализатор языка XML в состоянии проверить произвольный XML-документ на
    соответствие его структуры так называемой схеме документа, описанной в XML Schema.
    RDF представляет собой простой способ описания экземплярных данных в формате субъектотношение-объект, в котором в качестве любого элемента этой тройки используются только
    идентификаторы ресурсов. Существует стандартизованное отображение этих троек на
    XML-документы предопределённой структуры (т. е. консорциумом W3 определена схема
    XML-документов, содержащих RDF-описания), а также на другие форматы представления
    (например, в нотацию N3).
    RDF Schema описывает набор атрибутов (здесь их точнее назвать отношениями), таких, как
    rdfs:Class, для определения новых типов RDF-данных. Языком поддерживается также отношение
    наследования типов rdfs:subClassOf.
    OWL расширяет возможности по описанию новых типов (в частности, добавлением
    перечислений), а также позволяет описывать новые типы данных RDF Schema в терминах уже
    существующих (например, определять тип, являющийся пересечением или объединением двух
    существующих).
    Логический вывод
    Стр. 59 из 63
    25.05.2011 10:15
    Веб-программирование. Конспект лекций
    http://4stud.asoiu/web-programming/lectures.php
    Форматы описания метаданных в семантической паутине предполагают проведение логического вывода
    на этих метаданных, и разрабатывались с оглядкой на существующие математические формализмы в
    этой области. Математическое обоснование тех или иных конструкций языка описания необходимо для
    проведения заключений о свойствах программ, обрабатывающих данные в этом формате.
    Особенно сильно это относится к языку OWL. Базовым формализмом для него являются
    дескрипционные логики, а сам язык разбит на три вложенных подмножества (в порядке вложенности):
    OWL Lite, OWL DL и OWL Full. Доказано, что логический вывод на метаданных с выразительностью
    OWL Lite выполняется за полиномиальное время (другими словами, задача вывода принадлежит к
    классу P). OWL DL описывает максимальное разрешимое в данный момент подмножество
    дескрипционных логик, но некоторые запросы по таким данным могут требовать экспоненциального
    времени выполнения. OWL Full реализует все существующие конструкторы дескрипционных логик, но
    не каждый запрос в этом подмножестве языка может быть разрешён (слово «разрешён» здесь
    употребляется в значении, основанном на корне «решать»).
    Простая структура предикатов языка RDF, в свою очередь, позволяет использовать при его обработке
    опыт из теорий логических баз данных, логики предикатов, и т. д.
    Проекты
    Дублинское ядро
    Одним из первых серьёзных и популярных проектов, основанным на принципах семантической
    паутины, стал проект «Дублинское ядро» (англ. Dublin Core), реализуемый инициативной организацией
    Dublin Core Metadata Initiative (DCMI). Это открытый проект, цель которого — разработать стандарты
    метаданных, которые были бы независимы от платформ и подходили бы для широкого спектра задач.
    Конкретнее, DCMI занимается разработкой словарей метаданных общего назначения,
    стандартизирующих описания ресурсов в формате RDF.
    RSS (версий 0.90 и 1.0)
    Версии 0.90 и 1.0 формата RSS основаны на RDF. Информация в нём представляется как и в RDF,
    тройками субъект-отношение-объект. Необходимо отметить, что несмотря на то, что ему присущи
    многие недостатки семантической паутины (дублирование информации, например), этот простейший
    формат быстро стал чрезвычайно популярным за счёт узкой категоризации подмножества используемых
    метаданных. Отличие RSS от RDF состоит в том, что субъектом тройки всегда является сайт-источник
    RSS-файла, а в качестве отношений используются самые очевидные свойства документов, имеющие
    отношение к часто обновляющимся источникам информации: дата написания, автор, постоянная
    ссылка, и т. д. Другими словами, RSS — узкоспециализированное подмножество RDF.
    Помимо недостатков, RSS унаследовал и все достоинства форматов из семейства семантической
    паутины: гибкость RSS позволяет использовать его не только для проверки на наличие новой
    информации на регулярно обновляющихся сайтах, но и для подкастов, и торренттрекеров.
    Заметим, что формат RSS версии 2.0, хотя и не является форматом, основанным на RDF, позволяет
    внедрение произвольного XML-содержимого, находящегося в собственных пространствах имён XML.
    Это позволяет использовать RDF-описания также и в нём (используя пространство имён rdf).
    FOAF
    Стр. 60 из 63
    25.05.2011 10:15
    Веб-программирование. Конспект лекций
    http://4stud.asoiu/web-programming/lectures.php
    Проект «Friend of a Friend» («Друг друга») позволяет описывать отношение знакомства с помощью RDF.
    Любой его участник может идентифицировать себя уникальным образом с помощью URI (например,
    mailto-адресом электронной почты, адресом блога, и т. п.), создать свой профиль, используя
    предопределённые для FOAF отношения на языке RDF, и перечислить идентификаторы людей, которых
    этот участник знает. Это описание может обрабатываться автоматически; на его основе можно строить
    сети доверия, анализировать структуру социальных групп, и т. д.
    Семантические веб-сервисы
    В то время как совокупность ресурсов и их метаданных можно считать статической частью
    семантической паутины, её динамическую часть представляют т. н. семантические веб-сервисы —
    законченные элементы программной логики с однозначно описанной семантикой, доступные через
    Интернет и пригодные для поиска, композиции и выполнения.
    Технически, семантический веб-сервис отличается от обычного веб-сервиса наличием не только
    описания интерфейса (обычно на языке WSDL) в терминах типов данных, передаваемых сервису,
    возвращаемых значений и генерируемых ошибок, но и семантического описания всех его
    характеристик. Заметим, что дублирования данных, упомянутого в числе недостатков семантической
    паутины, здесь не происходит: WSDL-описания изначально были предназначены для машинной
    обработки.
    Потенциальная выгода от использования семантических веб-сервисов заключается в возможности
    автоматического поиска (а также композиции) программными агентами подходящих сервисов для
    решения поставленных задач. Тем не менее, сложность этой задачи в её общей формулировке пока
    позволяет добиваться некоторых положительных результатов только в узкоспециализированных
    отраслях, явным образом выигрывающих от внедрения сервисно-ориентированной архитектуры,
    например в интеграции корпоративных приложений.
    Вместо эпилога
    Для более полного представления о том, какие перспективы несет семантический веб выделим ряд
    факторов сравнения и выведем сводную таблицу, характеризующую прошлое, настоящее и будущее
    Всемирной паутины (Табл.1).
    Таблица 1. Сравнение технологий web 1.0, web 2.0 и web 3.0
    Обобщенное
    описание
    Единица
    представления
    Значимая единица
    обмена данными
    Зернистость данных
    Представляемые
    услуги
    Стр. 61 из 63
    Web 1.0
    Интерактивная
    паутина
    Web 2.0
    Веб-страница
    Веб-приложение
    Пространство данных
    Адрес страницы
    (URL)
    Низкая (HTMLстраница)
    Поиск (возможность
    ИСКАТЬ
    ИНФОРМАЦИЮ,
    результаты поиска не
    Адрес веб-приложения
    (URL)
    URI ресурса, сущности,
    объекта
    Средняя (XML-тег)
    Высокая (объекты RDF)
    Сообщества (блоги в
    социальных сетях)
    Поиск (способ
    НАХОДИТЬ
    ИНФОРМАЦИЮ,
    результаты поиска точны )
    Программируемая паутина
    Web 3.0
    Паутина связанных
    данных
    25.05.2011 10:15
    Веб-программирование. Конспект лекций
    http://4stud.asoiu/web-programming/lectures.php
    точны)
    Фактор участия
    низкий
    пользователя
    Фактор
    удовлетворенности
    низкий
    пользователя от
    использования сайта
    Фактор ссылаемости
    на данные
    низкий (документы)
    (обращения по
    ссылкам)
    Фактор
    субъективности
    Уровень
    трансклюзивности
    содержимого
    Уровень соответствия
    видимого
    предпочитаемому
    (What You See Is What
    You Prefer
    (WYSIWYP))
    Доступность данных
    (открытый доступ к
    данным)
    Средства
    идентификации
    пользователей
    высокий
    низкий
    средний
    высокий
    средний
    высокий
    средний (документы)
    высокий (документы и их
    отдельные части)
    средний (возможность
    выбора партнеров (friend
    lists) или установления
    ограничений на доступ к
    данным в блогах)
    средний ("смешивание"
    данных, управляемое кодом
    приложения)
    низкий (каждый может
    обратиться к ресурсу
    через URI)
    высокий ("смешивание"
    данных, управляемое
    данными)
    низкий
    средний
    высокий (настраиваемое
    описание представления
    ресурсов)
    низкая
    средняя (доступ через
    бункеры данных —
    серверные приложения)
    высокая (прямой доступ)
    слабые
    средние (OpenID)
    сильные (FOAF+SSL)
    Модель
    развертывания
    системы
    Централизованная
    Централизованная, с
    делегированием части
    полномочий пользователем
    (регистрация нового
    пользователя автоматически
    приводит к созданию среды
    для него )
    Распределенная, с
    выделенными
    централизованными
    функциями
    Модель данных
    Логическая
    (иерархическая, на
    основе DOM)
    Логическая (иерархическая, Концептуальная (графы
    на основе XML)
    RDF)
    Пользовательский
    интерфейс
    Динамически
    генерируемый
    (server-side)
    статичный интерфейс
    (client-side)
    Динамически генерируемый
    (server-side), с
    возможностью частичного
    изменения на стороне
    клиента (XSLT,
    XQuery/XPath)
    Стр. 62 из 63
    Полностью динамический
    интерфейс,
    представляемый
    возможностью
    самоописания RDF
    25.05.2011 10:15
    Веб-программирование. Конспект лекций
    Возможности
    запросов данных
    Web как средство
    массовой
    информации
    Стр. 63 из 63
    http://4stud.asoiu/web-programming/lectures.php
    Полнотекстовый поиск +
    поиск в графовых
    Полнотекстовый
    Полнотекстовый поиск
    структурах с помощью
    поиск
    SPARQL (Structured Graph
    Pattern Query Language)
    Отражает мнение
    Представляет мнение
    Представляет мнение социальной группы,
    социальной группы,
    автора/издателя
    состоящей из равноправных подкрепленное
    авторов и комментаторов
    экспертными оценками
    25.05.2011 10:15
                                
    «Веб-программирование.» 👇
    Готовые курсовые работы и рефераты
    Купить от 250 ₽
    Решение задач от ИИ за 2 минуты
    Решить задачу
    Найди решение своей задачи среди 1 000 000 ответов
    Найти
    Найди решение своей задачи среди 1 000 000 ответов
    Крупнейшая русскоязычная библиотека студенческих решенных задач

    Тебе могут подойти лекции

    Смотреть все 493 лекции
    Все самое важное и интересное в Telegram

    Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

    Перейти в Telegram Bot