Базовые элементы Web-технологий (1127027), страница 3
Текст из файла (страница 3)
Он также имеет атрибуты title, ISBN, year, hardcover, pages и language(название книги, ее международный стандартный номер, т.е. International Standard BookNumber или ISBN, плюс год издания, наличие твердой обложки, число страниц и язык).Тег <publisher>, в свою очередь, имеет атрибуты title и address (название июридический адрес издательской организации).Элементы XML-документа, называемые также сущностями, являются в некоторомсмысле аналогами значений структурных типов значений, а значения их атрибутов —аналогами соответствующих значений полей. При этом теги играют роль самих типов, аатрибуты и вложенные теги — роль их полей, имеющих, соответственно, примитивные иструктурные типы. Расширяемым XML назван потому, что можно задать специальнуюструктуру тегов и их атрибутов для некоторого вида документов.
Эта структураописывается в отдельном документе, называемом схемой, который сам написан наспециальном подмножестве XML, DTD (Document Type Declaration, декларация типадокумента) [3-5] или XMLSchema [6].XML-документ всегда начинается заголовком, описывающим версию XML, которойсоответствует документ, и используемую кодировку. По умолчанию используетсякодировка UTF-8.Затем чаще всего идет описание типа документа, указывающее схему, которой онсоответствует, и тег корневого элемента, содержащего все остальные элементы данногодокумента.
Схема может задаваться в формате DTD или XMLSchema. Второй, хотя иявляется более новым, пока еще используется реже, потому что достаточно многодокументов определяется с помощью DTD и очень многие инструменты для обработкиXML могут пользоваться этим форматом. Используемая схема определяется сразу двумяспособами — при помощи строки, которая может служить ключом для поиска схемы наданной машине, и при помощи унифицированного идентификатора документа (UnifiedResource Identifier, URI), содержащего ее описание и используемого в том случае, если еене удалось найти локально.Ниже приводится пример заголовка и описания типа документа для дескриптораразвертывания EJB компонентов.<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE sun-ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD ApplicationServer 8.1 EJB 2.1//EN" "http://www.sun.com/software/appserver/dtds/sun-ejbjar_2_1-1.dtd"><sun-ejb-jar>…</sun-ejb-jar>Другой пример показывает заголовок документа DocBook — основанного на XMLформата для технической документации, которая может быть автоматическипреобразована в HTML, PDF и другие документы с определенными для них правиламиверстки.<?xml version="1.0" encoding="windows-1251"?><!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN""http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"><article>…</article>Помимо элементов данных и заголовка с описанием типа документа, XML-документможет содержать комментарии, помещаемые в теги <!-- … -->, инструкции обработкивида <? processor-name … ?> (здесь processor-name — идентификатор обработчика,которому предназначена инструкция) и секции символьных данных CDATA, которыеначинаются набором символов <![CDATA[, а заканчиваются с помощью ]]>.
Внутрисекций символьных данных могут быть любые символы, за исключением закрывающейкомбинации. В остальных местах некоторые специальные символы должны бытьпредставлены комбинациями символов в соответствии с Таблицей 1.СимволПредставление в XML<>&"'<>&"'Таблица 1. Представления специальных символов в XML.XML содержит много других конструкций, помимо уже перечисленных, но ихрассмотрение выходит за рамки данного курса. Читатель, желающий узнать больше обэтом языке и связанных с ним технологиях, может обратиться к [1-7].Протокол передачи гипертекста HTTPПоскольку основная функциональность компонентов интерфейса Web-приложенийсвязана с созданием и обработкой сообщений HTTP, знание элементов этого протоколанеобходимо для понимания технологий разработки приложений такого рода.HTTP (Hypertext Transfer Protocol, протокол передачи гипертекста) представляет собойпротокол прикладного уровня, использующий для пересылки данных протоколтранспортного уровня.
Достаточно подробное описание его можно найти в [8,9].Сообщения HTTP бывают двух видов: запросы клиента и ответы сервера.Запрос HTTP состоит из идентификации метода запроса, идентификатора запрашиваемогоресурса (URI), указания версии протокола и, возможно, набора заголовков сдополнительной информацией, а также поля данных общего вида.<Request> ::= GET <URI> CrLf| <Method> <URI> <HTTP-Version> CrLf <Req-Header>* ( <Data> )?<Req-Header> ::= <Field> : <Value> CrLfCrLf ::= '\r''\n'Основные методы протокола HTTP следующие.•GETСлужит для получения любой информации по URI запроса, обычно — документа,хранящегося по указанному адресу или генерируемого по запросу с таким URI.Может иметь заголовок If-Modified-Since, который предписывает не посылать телозапрашиваемого ресурса, если он не изменялся с указанной даты.•POSTСлужит для создания нового ресурса, связанного с указанным по URI.
Чаще всегоиспользуется для аннотации ресурсов, добавления сообщений в группы новостей,дистанционной работы с базами данных. Реальная обработка такого запросазависит от содержащегося в нем URI.Остальные методы — HEAD, PUT, DELETE, LINK, UNLINK — используются гораздореже.Заголовки запроса служат для передачи дополнительной информации об этом запросе илио клиенте. Заголовок состоит из идентификатора поля и его значения, разделенныхдвоеточием, и бывает одного из следующих типов.•FromСодержит e-mail адрес пользователя, под чьим именем работает клиент.Пример: From: webmaster@yandex.ru•Accept, Accept-Encoding, Accept-Charset и Accept-LanguageВ таком заголовке через запятую перечисляются возможные форматы(соответственно, кодировки, используемые таблицы символов и языки) ответов наданный запрос.Пример: Accept: text/plain, text/html, text/x-dvi; q=.8; mxb=100000; mxt=5.0•User-AgentСодержит название используемой клиентской программы.•RefererИспользуется для указания адреса ресурса, с которого был получен данныйзапрос.•If-Modified-SinceИспользуется для отмены ответной пересылки документов, модифицированных непозднее указанной даты, с целью снижения нагрузки на сеть.•AuthorizationСодержит авторизационную информацию, специфичную для используемыхсервером протоколов авторизации.•ChargeToСодержит информацию о том, куда выставить счет за обработку запроса.•PragmaСодержит дополнительные директивы для промежуточных серверов, например,прокси-серверов.Пример запроса.GET /locate?keywords=HTTP+description HTTP/1.1Date: Mon, 15 Dec 2004 12:18:15 GMTAccept: image/gif, image/jpg, */*Accept-Charset: iso-8859-1, *, utf-8Accept-Language: enConnection: keep-AliveUser-Agent: Mozilla/4.7 [en] (Win98; u)Группакодов1xx2xxКодФраза-объяснение,следующая за кодом200201OKCreated301302Moved PermanentlyMoved Temporarily400401403404Bad RequestUnauthorizedForbiddenNot Found500Internal Server Error3xx4xx5xxЗначение кодаИнформационное сообщениеУспешная обработкаВcе нормальноДокумент созданПеренаправление запросаРесурс перемещенРесурс перемещен временноОшибка клиентаНекорректно составленный запросНужна аутентификация клиентаДоступ к ресурсу запрещенЗапрашиваемый ресурс отсутствуетОшибка сервераВнутренняя ошибка сервераТаблица 2.
Некоторые коды статуса ответа HTTP и их объяснение.Ответ сервера на HTTP-запрос состоит либо только из запрашиваемого клиентомдокумента, либо в дополнение к нему содержит код статуса ответа и, возможно, несколькозаголовков ответа.<Response> ::= ( <Content> )?| <HTTP-Version> <Code> <Explanation> CrLf <Resp-Header>* ( <Content> )?<Resp-Header> ::= <Field> : <Value> CrLfCrLf ::= '\r''\n'Некоторые коды статуса ответа поясняются в Таблице 12.Возможны следующие заголовки ответа.•AllowedПеречисляются через пробел доступные для пользователя методы запросов поданному URI.•PublicПеречисляет доступные всем методы запросов.•Content-Length, Content-Type, Content-Encoding и Content-LanguageЗадают размер содержимого в байтах (подразумевается, что содержимое имеетбинарный формат и не должно разбиваться на строки при чтении), его формат илиMIME-тип, кодировку и язык.•DateДата создания содержащегося документа или объекта.•Last-ModifiedДата последнего изменения содержащегося объекта.•ExpiresДата, послед которой содержащийся объект считается устаревшим.•URIURI содержащегося объекта.•TitleЗаголовок содержащегося документа.•ServerОписывает серверную программу.•Retry-AfterОпределяет промежуток времени на обработку запроса, до прохождения которогоне надо направлять запрос повторно, если ответа на него еще нет.Пример HTTP-ответа.HTTP/1.0 200 OKContent-Length: 2109Content-Type: text/htmlExpires: 0Last-Modified: Thu, 08 Feb 2001 09:23:17 GMTServer: Apache/1.3.12<HTML> <HEAD> <TITLE> … </TITLE> </HEAD><BODY> …</BODY></HTML>Язык разметки гипертекста HTMLHTML (Hypertext Markup Language, язык разметки гипертекста) — язык разметки, т.е., каки XML, использующий для выделения различных элементов теги, предназначенный дляописания гипертекстовых документов, содержащих, помимо обычного форматированноготекста, ссылки на картинки, видео, звуковые файлы, а также другие документы илифайлы.
В отличие от XML правила оформления тегов менее жесткие — некоторыеэлементы могут не иметь закрывающих тегов, а некоторые — содержания.Здесь дается поверхностный обзор основных элементов HTML, для более детальногознакомства с этим языком см. [10-12].Структура документов HTMLHTML-документ обычно построен по следующему шаблону. В начале идет декларациятипа документа.<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">Затем — основной элемент <html> с заголовком и содержимым.<html><head><title>Заголовок документа</title></head><body>Содержимое документа</body></html>Тип документа — специфический формат, определяющий набор используемых тегов иправила их интерпретации браузером, указывается в самом первом теге. В приведенномпримере — это HTML версии 4.01. Можно встретить такие объявления типа документа.<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">или<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">В последнем случае указывается, что документ составлен на XHTML.