tanenbaum_seti_all.pages (525408), страница 194
Текст из файла (страница 194)
Надо отметить, что, хотя наш ХЯ:файл сдержит нечто вроде цикла, веб-страницы на ХМ). и ХВ1. все равно остаются статическими, поскольку они содержат лишь инструкции, указываюшие браузеру, как отображать страницу. Тем же, в принципе, занимается и НТМ1.. Разумеется, чтобы интерпретировать ХМ1. и ХЯ., браузер должен поддерживать эти языки. На сегодняшний день, впрочем, большинство браузеров имеют такую возможность. До сих пор не очень понятно, заменит ли Х$1. традиционные таблицы стилей, Мы не показали этою в нашем примере, но ХМ1.
позволяет разработчику вебстраницы определять структуры заранее в специальном файле. Такие файлы определений затем можно подключать для построения сложных страниц. Дополнительную информацию, касаюшуюся этого и многих других свойств ХМ1. и ХЯ., можно найти в любой из многочисленных книг, посвященных этой теме. Например, в (1.1тг)пйзсоп, 2000; тй/111!ашзоп, 2001). Перед тем как закончить наш краткий рассказ об ХМ1 и ХЯ., будет нелишним прокомментировать идеологическую борьбу между консорциумом %'>1/ЪЧ и сообществом веб-дизайнеров. Изначальной целью НТМ1. было определенно именно структттуры документа, а вовсе не его еттешгтего вида. Например, строка <Ь1>Фотографии Натальи</Ь1> сообщает браузеру о том, что следует выделить заголовок, однако ничего не говорит о его гарнитуре, размере или цвете, Все эти детали реализует браузер по своему усмотрению: у него есть преимущество, состоящее в том, что он знает свойства конкретного монитора (например, сколько на нем точек).
Однако дизайнерам веб-страниц в какой-то момент захотелось получить тотальный контроль над видом создаваемых страниц. Тогда были добавлены новые теги, уточняюшие, как должен выглядеть документ. Например, <трос гасе-"не1честсе" зтхе-"24" со1ог-"гео"> Фотографии натальи </тоос> Были добавлены также методы точного позиционирования элементов на экране. Проблема, присущая такому подходу, заключается в том, что такие страницы не обладают свойством переносимости. Они могут замечательно смотреться на браузере у создателя, однако на другом браузере, другой версии того же браузера или просто на экране с другим разрешением могут выглядеть совершеннейшей кашей.
Одна из задач ХМ1. состояла в попытке вернуться к истокам, когда определялась только структура, а не внешний вид документа. Вместе с тем, ХВ1. 726 Глава 7. прикладной уровень позволяет управлять тем, как выглядят страницы. Оба языка, впрочем, порой используются не по назначению.
Следует иметь зто в виду. ХМЕ можно использовать не только для описания веб-страниц. Все чаше он используется в качестве языка для связи между прикладными программами, В частности, ГОАР (31шр!е ОЪ)есс Асеева Ргогосо! — простой протокол доступа кобъектам) предоставляет возможность выполнения удаленных вызовов процедур между приложениями способом, независимым от языка и системы.
Клиент формирует запрос в виде сообщения ХМ1 и отсылает его на сервер по описываемому далее протоколу НТМ1. Сервер отсылает назад ответ, представляющий собой форматированное ХМ1.-сообщение. Таким образом могут общаться приложения, работающие на разнородных платформах. ХНТМЬ вЂ” расширенный язык разметки гипертексте К языку НТМ1 постоянно предъявляются новые требования. Многие представители этой индустрии чувствуют, что в будущем большинство устройств, связанных со Всемирной паутиной, будут представлять собой не ПК, а беспроводные портативные устройства типа Р1)А.
У таких мини-компьютеров нет столь большого объема памяти, чтобы работать с большими браузерами, обладающими сложной эвристикой, с помощью которой они пытаются отображать синтаксически некорректные страницы. Таким образом, следующей версией после НТМ1 4 должен стать язык, отличающийся крайне высокой требовательностью. Он называется не НТМ1. 5, а ХНТМ?„поскольку, по сути дела, представляет собой НТМ1. 4, приведенный к стандарту ХМ1.. Под этим мы подразумеваем, что тети типа <э1> не имеют существенного значения.
Чтобы добиться от такого тега того эффекта, который он производит в НТМ1 4, необходимо написать определение на Х31. в отдельном файле. ХНТМ1 — это новый веб-стандарт, который рекомендуется использовать при создании любых веб-страниц для достижения максимальной переносимости на другие платформы и независимости отображения от браузера. Между ХНТМ1 и НТМ1 4 существует шесть существенных и множество мелких различий. Во-первых, страницы и браузеры стандарта ХНТМ1 должны работать в строгом соответствии со стандартом.
Низкопробные страницы уже отжили свой век. Это свойство унаследовано из ХМ1.. Во-вторых, все тети и атрибуты должны быть написаны строчными буквами. Так, тег <НТМ!.> будет считаться некорректным в ХНТМ1.. Необходимо писать <!Па!>. Аналогично, некорректной записью считается такая: <1а0 ййС "р!с001.300"> Она содержит имя атрибута, написанное заглавными буквами, а это запрещено. В-третьих, всегда должны присутствовать закрывающие тети, даже для </р>.
Бели у тета не может быть естественного закрывающего тега (например, <Ьг>, <Ъг>, <1а0>Ъ то перед закрывающей скобкой тета следует ставить косую черту. Например <1а0 згс "р1с001.000" /> В-четвертых, все значения атрибутов должны указываться в двойных кавычках. Вот пример неправильного использования тега: <1а0 згс "Ис001,4рв" Ье10Ь~-500 /> Всемирная паутина (тЛ/тЛАЛ/1 727 Число 500 должно быть заключено в двойные кавычки, как и имя,1РБС-файла, В-пятых, свойство вложенности тегов должно использоваться корректно, В прошлом это не требовалось, важно было только получить ожидаемый результат.
Раньше вполне легальным было написать: <сепгег> <Ь> Летние фотографии </сепСег> </Ь> В ХНТМ1 это запрещено. Закрывающие теги должны быть написаны строго в обратном порядке по отношению к открывающим тегам. В-шестых, в каждом документе должен быть указан его тип. Мы имели возможность в этом убедиться на примере листинга 7.8. Все серьезные и мелкие изменения, которые происходят в стандартах, обсуждаются на сайте впали.и/В.огд. Динамические веб-документы Все идеи, рассматривавшиеся до сих пор, соответствуют модели, показанной в листинге 6.1: клиент сообщает серверу имя файла, а тот в ответ возвращает файл.
В первые годы существования Всемирной паутины все ее содержимое и в самом деле было статическим (просто файлы). Однако в последние годы в Сети появляется все больше динамических объектов, то есть таких, которые создаются по требованию, а не хранятся постоянно на диске. Автоматическое создание объектов может происходить как на стороне сервера, так и на стороне клиента. Рассмотрим оба случая по порядку. Динамическая генерация содержимого веб-страниц на стороне сервера Чтобы понять, зачем вообще нужна динамическая генерация веб-страниц на стороне сервера, рассмотрим использование форм, описанных ранее. Когда пользователь заполняет поля формы и нажимает кнопку яиЬттт (Подтверждение), серверу отправляется сообщение, содержащее в себе данные, предоставленные пользователем.
Это сообщение не содержит имя запрашиваемого файла. Требуется, чтобы оно было передано для обработки программе или скрипту. Обычно обработка подразумевает использование пользовательских данных для поиска по базе данных на серверном диске и создание НТМ|-страницы, содержимое которой зависит от результатов этого поиска. Затем страница отсылается клиенту. Например, в приложении для электронной коммерции нажатие кнопки ПЕРЕЙТИ К РАСЧЕТАМ приводит к тому, что браузер возвращает на сервер соо)<1е-файл с содержимым корзины клиента. На сервере при этом должны запуститься определенные программы или скрипты, в задачу которых входят обработка соок(е и генерация НТМ1:страницы.
Отправляемая клиенту НТМ1.-страница может содержать форму со списком товаров, положенных в корзину, и адрес доставки вместе с запросом подтверждения заказа и предложением выбрать одну из возможных форм оплаты. Этапы обработки информации, полученной из НТМ(.-формы, показаны на рис.
7.15. Традиционный способ работы с формами и другими видами интерактивных вебстраниц связан с использованием системы СС1 (Сопппоп Оасеч/ау 1псег(асе— 728 Глава ?. Прикладной уровень общий шлюзовой интерфейс). Это стандартизованный интерфейс, позволяющий веб-серверам общаться с прикладными программами и скриптами, разрешающими вводить данные (например, в формы) и в ответ генерировать НТМ1-страницы, Обычно такие прикладные программы представляют собой скрипты, написанные на языке описания сценариев Рег1, поскольку писать их проще и быстрее, чем программы (по крайней мере, если вы умеете программировать на Рег1). Существует договоренность, в соответствии с которой эти скрипты должны размещаться в каталоге СО!-В!Ы, который доступен при помощи 1)К1..
Иногда вместо Рег1 используется другой язык написания скриптов, РугЬоп. Скрнпт База данных Пользователь Брвузер Сервер СО! нв диске Рнс.?.1Б. Этапы абрвботкн информации, полученной нз формы В качестве примера работы СО1 рассмотрим случай, когда продукция компании «Великие Штуковины» приходит без гарантийного талона. Вместо этого клиенту предлагается зарегистрироваться в Интернете по адресу ааа.дпес!,сот. Там имеется ссылка: Щелкните здесь для регистрации приобретения Ссылка эта может указывать, например, па сценарий на языке Рег1, расположенный по адресу аав.дпкк!.согп!сд!-Ь!л/гед.рег!.
При запуске этого сценария без параметров обратно отсылается НТМ|-страница, содержащая регистрационную форму. Когда пользователь заполняет ее и нажимает кнопку Яибгл!д скрипту передается сообщение, содержащее указанные им значения. Вид этого сообщения традиционен при работе с формами. Что происходит дальше, предугадать нетрудно. Рег!-скрипт анализирует параметры, создает в базе данных запись о новом клиенте, отсылает назад НТМ1 с регистрационным номером и телефоном службы поддержки. Понятно, что это не единственный способ обработки форм, однако он является наиболее распространенным, О создании СО1-скриптов и программировании на Рег1 написано много книг.
Среди них стоит отметить (Напейап, 2001; 1.азЬ, 2002; Ме!гзег и М!сЬа1Й1, 2001). Динамическое создание веб-страниц на стороне сервера может быть реализовано не только с помощью СО1-скрип?оп, Существует еше один распространенный способ, который заключается во внедрении небольших скриптов в НТМ1.- страницы. Они выполняются на сервере, в их задачу входит генерирование страницы. Популярным инструментом для написания таких скриптов является РНР (Нуреггехг Ргергосеззог — гипертекстовый препроцессор). При его использовании требуется, чтобы сервер понимал РНР (точно так же, как браузер должен понимать ХМ1., чтобы интерпретировать стршгицы, написанные на одноименном языке).
Обычно серверы предполагают, что у файлов страниц, написанных на РНР, расширение рпр, а не Ьтгл или Ьзпз!. Всемирная паутина (уууууу) 729 В листинге 7.9 приведен пример маленького скрипта на РНР; он должен работать на любом сервере, если на нем установлен гипертекстовый препроцессор.