Язык гипертекстовой разметки HTML и протокол обмена гипертекстовой информацией HTTP

П. Храмцов, РНЦ "Курчатовский Институт"


Реферат

Язык гипертекстовой разметки HTML является одним из компонентов технологии ведения гипертекстовых распределенных баз данных World Wide Web. Все программы- интерфейсы - Mosaic, Netscape, Arena, Cello, Lynx и т.п. являются, фактически, интерпретаторами этого языка. В настоящее время готовится третья версия языка, которая отражает как существующую практику разработки гипертекстовых баз данных, так и является в некоторой степени ориентиром для разработчиков программных средств. Данный доклад посвящен краткой характеристике возможностей HTML и его средствам управления обменом гипертекстовой информацией.

Введение

Язык гипертекстовой разметки HTML (HyperText Markup Language) был предложен Тимом Бернерсом-Ли в 1989 году в качестве одного из компонентов технологии разработки распределенной гипертекстовой системы World Wide Web.
Разработчики HTML пытались решить две задачи:

Первая задача была решена за счет выбора таговой модели описания документа. Такая модель широко применяется в системах подготовки документов для печати. Примером такой системы является хорошо известный язык разметки научных документов TeX, предложенный Американским Математическим Обществом, и программы его интерпретации.
К моменту создания HTML существовал стандарт языка разметки печатных документов - Standard Generalised Markup Language, который и был взят в качестве основы HTML. Предполагалось, что такое решение поможет использовать существующее программное обеспечение для интерпретации нового языка. Однако, будучи доступен широкому кругу пользователей Internet, HTML зажил своей собственной жизнью. Я думаю, что многие администраторы баз данных WWW и разработчики программного обеспечения для этой системы имеют довольно смутное представление о стандартном языке разметки SGML. В последнее время интерес к SGML стал снова возрастать. Обобщенный язык разметки позволяет создавать документы, которые можно затем использовать для разных целей как то: опубликование в виде обычных текстовых документов, создание архивов документов, и, конечно, опубликование на Internet.
Вторым важным моментом, повлиявшим на судьбу HTML, стал выбор в качестве элемента гипертекстовой базы данных обычного текстового файла, который хранится средствами файловой системы операционной среды компьютера. Такой выбор был сделан под влиянием следующих факторов:
Таким образом гипертекстовая база данных в концепции WWW - это набор текстовых файлов, написанных на языке HTML, который определяет форму представления информации (разметка) и структуру связей этих файлов (гипертекстовые ссылки). В реальности база данных WWW гораздо более сложная вещь. В ней могут храниться и программы, написанные в соответствии со спецификацией CGI(Common Gateway Interface), и данные обычных баз данных под управлением СУБД, к которым обеспечивается доступ через программы-шлюзы, и Java-applet-ы, и графика и многое другое. Но для простоты изложения HTML можно считать, что база данных WWW - это документы, размеченные HTML.
Такой подход предполагает наличие еще одной компоненты технологии - интерпретатора языка. В World Wide Web функции интерпретатора разделены между сервером гипертекстовой базы данных и интерфейсом пользователя.
Сервер кроме доступа к документам и обработки гипертекстовых ссылок осуществляет также препроцессорную обработку документов, в то время как интерфейс пользователя осуществляет интерпретацию конструкций языка, связанных с представлением информации. Инструкции для предварительной подготовки документов сервером записываются в таги комментариев. Различные серверы имеют разные наборы инструкций. Наиболее развитым языком такого описания действий сервера является HTML-Script, который реализован в виде CGI-программы.
К настоящему времени известна уже третья версия языка - HTML 3.0, которая находится в стадии развития. Если первая версия языка (HTML 1.0) была направлена на представления языка как такового, где описание его возможностей носило скорее рекомендательный характер, вторая версия языка ( HTML 2.0) фиксировала практику использования конструкций языка, версия + ( HTML+) новые возможности, расширяя набор элементов HTML в сторону отображения научной информации и таблиц, а также улучшения стиля компоновки изображений и текста, то третья версия призвана упорядочить все нововведения и согласовать их с существующей практикой. Кроме этого, в третьей версии снова делается попытка формализации интерфейса пользователя гипертекстовой распределенной системы. Кроме того, существуют еще расширения и дополнения перечисленных выше версий языка. Наиболее известны Netscape Extensions и Microsoft Extensions. Широкое распространение Netscape Navigator привело к тому, что версия HTML от Netscape стала на сегодняшний день фактическим стандартом языка.

Принципы построения и интерпретации HTML

Таговая модель описывает документ как совокупность элементов, каждый из которых окружен тагами. По своему значению таги близки к понятию скобок "begin/end" в универсальных языках программирования, которые задают области действия имен локальных переменных, динамику распределения памяти блока и т.п.. Таги определяют область действия правил интерпретации текстовых элементов документа. В последнее время элементы документа, размеченного при помощи HTML, стало принято называть контейнерами.

Общая схема построения элемента текста в формате HTML может быть записана в следующем виде:

"элемент" := <"имя элемента" "список атрибутов">, содержание элемента </"имя элемента">,

Конструкция перед содержанием элемента называется тагом начала документа, а конструкция, расположенная после содержания элемента, -таг конца элемента.
Структура гипертекстовой сети задается гипертекстовыми ссылками. Гипертекстовая ссылка - это адрес другого HTML документа, который тематически, логически или каким-либо другим способом связан с документом, в котором ссылка определена.
Для записи гипертекстовых ссылок в системе WWW была разработана специальная форма, которая называется Universe Resource Locator. Типичным примером использования этой записи можно считать следующую запись:

Этот текст содержит
<A HREF="http://polyn.net.kiae.su/altai/index.html">,гипертекстовую ссылку</A>,.

Здесь элемент "A", который в HTML называют якорем (anchor), использует атрибут "HREF", который обозначает гипертекстовую ссылку (Hypertext REFerence), для записи этой ссылки в форме URL. Данная ссылка указывает на документ с именем "index.html" в директории "altai" на сервере "polyn.net.kiae.su", доступ к которому осуществляется по протоколу "http".
Гипертекстовые ссылки в HTML делятся на два класса: контекстные ссылки и общие. Контекстные ссылки вмонтированы в тело документа, как это было продемонстрировано в предыдущем примере, в то время как общие ссылки связаны со всем документом в целом и могут быть использованы при просмотре любого фрагмента документа. Оба класса ссылок присутствуют в стандарте языка с самого его рождения, однако, первоначально наибольшей популярностью пользовались контекстные ссылки. Эта популярность привела к тому, что механизм использования общих ссылок практически полностью "атрофировался". Однако по мере стандартизации интерфейса пользователя и стилей представления информации, разработчики языка снова вернулись к общим ссылкам и стремятся приспособить их к задачам управления этим интерфейсом.
Структура HTML документа позволяет использовать вложенные друг в друга элементы. Собственно, сам документ - это один большой элемент с именем "HTML":

<HTML>, Содержание документа </HTML>,

Сам элемент HTML или гипертекстовый документ состоит из двух частей: заголовка документа (HEAD) и тела документа (BODY):

<HTML>,
<HEAD>,
Содержание заголовка
</HEAD>,
<BODY>,
Содержание тела документа
</BODY>,
</HTML>,

Теоретически обсуждать язык разметки всегда очень трудно, поэтому приведем просто пример документа на HTML и обсудим на нем особенности языка:

<HTML>,
<HEAD>,
<TITLE>,Это пример документа на языке HTML.</TITLE>,
<BASE HREF="http://144.206.192.4/html30/">,
<!-- Author: Pavel Khramtsov -->,
<!-- Date: 09.08.95 -->,
</HEAD>,
<BODY BACKGROUND="back.gif">,
............ тело документа .............
</BODY>,
</HTML>,

Все что расположено между <HTML>, и </HTML>, - это документ. Содержание элемента HEAD определяет заголовок документа, который состоит из двух элементов: TITLE и BASE. Вслед за заголовком начинается тело документа, которое содержит в своих первых строках некоторую вводную информацию и содержание документа, оформленное в виде списка.
Каждый документ в системе World Wide Web имеет свое имя, которое указывается в элементе TITLE заголовка документа. Его мы видим в первой строке интерфейса. Вслед за TITLE в заголовке указан элемент BASE. Этот элемент не отображается, однако содержание его атрибута используется при формировании гипертекстовых ссылок. За заглавием следует тело документа, заключенное в таги <BODY>,.....</BODY>,. Приведем простой пример тела документа.

<BODY>,
<H1>,Простой пример HTML документа.</H1>,
<HR>,
Данный пример показывает простейшие способы представления информации на языке HTML:
<UL>, <LI>, <A HREF="#first">,Разбиение текста на параграфы</A>,
<LI>, <A HREF="#second">,Выделение заголовков</A>,
<LI>, <A HREF="#list">,Создание списка</A>,
<LI>, <A HREF="#graph">,Встроенную графику</A>,
</UL>,
Каждая из позиций приведенного выше списка является гипертекстовой ссылкой на раздел данного примера.
............
</BODY>,

Первым Элементом тела документа является его название, которое задано заглавием первого уровня - H1. Обычно, для отображения таких заглавий используют самый крупный шрифт. Вслед за заглавием идет список примеров, который оформлен как ненумерованный список UL. Выделение элементов списка синим цветом показывает, что это гипертекстовые ссылки. которые записаны в виде тагов вида:
<A HREF="#list">,Создание списка</A>,
Решетка перед словом "list" означает, что это ссылка на метку внутри документа, которая определена как:

<A NAME="list">,

При выборе гипертекстовой ссылки происходит переход на указанную в ссылке метку.
Начало нового параграфа определяется тагом <P>,. Таг конца параграфа не требуется, т.к. при вводе тага <P>, старый параграф кончается, а новый начинается. Конец параграфа определяется и рядом других тагов. Параграф заканчивается, если начинается список например. Выделение заглавий осуществляется тагами заглавий разного уровня. В данном примере все разделы документа выделены как заглавия второго уровня:

<H2>,Выделение заголовков</H2>,

Следует обратить внимание еще на два тага: <HR>, и <BR>,. Первый вызывает подведение сплошной черты под текстом на всю ширину рабочей области интерфейса, а второй вызывает принудительный перевод строки. В принципе, программа интерфейса пользователя автоматически вписывает текст в окно рабочей области интерфейса, поэтому все концы строк в исходных файлах игнорируются. Но часто бывает полезно перевести строку по месту. для этой цели и используется таг <BR>,.
Нумерованный список начинается с тага <OL>, и заканчивается тагом </OL>,. От ненумерованного он отличается тем, что перед каждым элементом списка проставляется номер по порядку. В языке существует еще несколько видов списков.
Встроенный графический образ монтируется в текст при помощи тага <IMG ...>,. Программа интерпретации языка сначала запрашивает собственно текст документа у сервера гипертекстовой базы данных, а за тем по мере просмотра графические образы, которые должны быть подготовлены в форматах GIF или JPEG. Первый формат более предпочтителен.
В HTML 3.0 для отображения графики, обтекаемой текстом стал применяться другой элемент - FIG. Его преимущество перед IMG заключается в том, что он разрешает обтекание картинки текстом и создание в тексте документа на базе графического образа стека графических ссылок. Следует заметить, что Netscape Extensions для обтекания графики текстом применяется контейнер IMG с атрибутом align, которому можно присвоить значения right или left. Графика в этом случае будет придвинута к соответствующему краю страницы, и текст ее будет обтекать также как и в случае контейнера FIG.
Однако, HTML позволяет не только отображать информацию и управлять навигацией по гипертекстовым базам данных, но создавать интерфейсы пользователя для доступа к другим программам. Для этой цели в языке предусмотрен механизм форм. Форма - это набор полей документа, в который пользователь может вводить информацию и затем передавать ее через сервер WWW удаленной программе. Для описания формы в языке зарезервированы конструкции типа:

<FORM METHOD=POST ACTION=http://polyn.net.kiae.su/cgi-bin/test>,
Type yourinformation here: <INPUT NAME="INPUT" VALUE="none" TYPE="text">,
Select from list:
<SELECT NAME="menu">,
<OPTION>,novice
<OPTION>,expert
<OPTION>,wizard
</SELECT>,
<HR>,
<INPUT NAME="SUBMIT" TYPE="submit" VALUE="Submit">,
</FORM>,

В примере данные, введенные в эту форму будут переданы программе test(атрибут ACTION). В поле с именем INPUT можно ввести текст до 1024 символов (в старых версиях программ-интерфейсов до 128 символов) и выбрать из меню одну из альтернатив. Поле с именем SUBMIT определяет кнопку, при нажатии на которую данные отправляются в сеть.

Новые возможности HTML

Как уже упоминалось выше на сегодняшний день существует два законченных стандарта языка HTML: HTML 1.0 и HTML 2.0. Для дальнейшего развития этого языка было предложено несколько путей. Первый из них - это HTML+, который является базой для следующей версии HTML - HTML 3.0. Именно в этом варианте языка были определены таблицы, стили и математические формулы. Концептуальным интерфейсом для HTML 3.0 является программа Arena, главное назначение которой - продемонстрировать возможности HTML 3.0. Другим направлением развития HTML стали, так называемы Netscape Extensions. Первоначально эта спецификация развивала синтаксис HTML 2.0 в сторону более выразительных средств представления документов (возможность смены фона, выравнивание текста, обтекание графики текстом и т.п.). Netscape Extensions были предложены компанией Netscape Communication и реализованы в программе Netscape Navigator версии 1.1 и старше. Фактически, если HTML+ был направлен на расширение HTML в сторону реализации публикаций научно технического характера, то Netscape Extensions развивали HTML в сторону рекламно-издательской деятельности. Это направление Netscape Communication продолжила и в следующей версии Navigator. В Navigator 2.0 и Navigator Gold 2.0 были добавлены две принципиально новые возможности разработки Web-страниц: фреймы и JavaScript. Заявлена также и поддержка Java, но об этом языке как о концептуальном развитии технологии лучше говорить в контексте другой программы - HotJava компании Sun Microsystems. Не отстает на поприще развития стандартов Web и Microsoft. В настоящее время для пользователей Internet доступны свободнораспростроняемые сервер и интерфейс Internet Explorer. Важным здесь является тот факт, что Microsoft не просто путается поддерживать то: что предлагают другие: но и сама предлагает новые расширения языка. Они касаются главным образом возможностей разработки мультимедийных страниц и являются в некотором смысле альтернативой тому, что предлагают разработчики Java и JavaScript. Таким образом в настоящее время следует выделить следующие основные направления развития технологии Web: HTML 3.0 (HTML+), HTML 2.0 Netscape Extensions, JavaScript, Java, Microsoft Extensions.
На самом деле, чуть в стороне от основных направлений развития Web-технологии стоит еще одна ветвь исследований - создание трехмерных страниц, ярким представителем которой является язык моделирования виртуальной реальности VRML, который предложен компанией Silicon, но во-первых ни один из наиболее популярных с Сети интерфейсов его не поддерживает (загружается специальная программа), а во-вторых работать на нем широкие массы пользователей Internet вряд ли будут - все-таки это скорее средство для профессионалов, чем для простых пользователей.

Фреймы

Фреймы - это долгожданная многооконность, которая позволяет решить сразу множество проблем связанных с разработкой документов. В первую очередь возможность одновременной работы с текстом и меню, текстовым меню и графикой. Параллельно решаются проблема BANNER, для которой в HTML+ предлагался новый тег. Фрейм позволяет использовать часто встречающиеся фрагменты текста, например, постоянную заставку в качестве отдельного фрейма. Многие пользователи Internet наверняка встречались с этим механизмом при использовании поисковой службы InfoSeek (http://www.infoseek.com/). Если раньше нужно было постоянно вставлять в текст либо готовые части страницы, которые появляются в начале и конце каждого документа или использовать server site includes, то теперь это можно делать при помощи фреймов. Вообще, на мой взгляд, фреймы очень органичное решение, т.к. документ с фреймами является просто суперпозицией простых HTML-документов.

Дополнительные окна

Дополнительные окна - это тесно связанный с фреймами механизм. Но если страница с фреймами делит рабочую область Navigator на несколько частей, не выходя за пределы окна программы, то в случае дополнительного окна разработчик страницы Web имеет возможность открыть новое окно Navigator и тем самым предать как бы новое измерение просмотру. Такое направление интерфейса лежит в русле разработки много оконных интерфейсов гипертекстовых систем, о которых в академических кругах говорят уже лет десять, но к единой модели такого интерфейса так до сих пор еще и не пришли. Очевидно одно, что это позволяет оставлять видимые закладки при проходе по гипертекстовой сети по инициативе разработчика страниц, что является в некоторых случаях достаточно полезным решением, которое расширяет привычную двухуровневую схему просмотра, когда в отдельное окно помещали либо графику, либо файл специального формата.

Динамическое обновление документов

Динамическое обновление документов - это возможность построения самопросматривающихся страниц и, если позволяет скорость линии связи примитивной мультипликации. Если разработчики Arena только обещают использование заголовка HTML-документа для управления просмотром последнего, то в Netscape это уже делается. В данном случае используется тег META с атрибутом HTTP-EQUIV, в котором и указывается скважность обращения Navigator к серверу за обновленным документом, которым может быть либо новая копия просматриваемого документа, либо другой документ.

JavaScript

JavaScript - это еще одно средство создания "оживших" страниц Web. Собственно, - это объектно-ориентированный язык программирования, привязанный к Navigator, отдельные компоненты которого и являются объектами это языка. Часто пишут, что Java и JavaScript - близнецы-братья. Может быть они и братья, но отнюдь не близнецы. Во-первых для JavaScript не требуется специального компилятора и скрипт размещается прямо в теле документа. Его интерпретирует непосредственно Navigator. Конечно возможности программирования анимации в JavaScript очень ограничены. Можно организовать бегущую строку, идущие часы, меняющиеся картинки, но не более. Главным на мой взгляд достоинством JavaScript является организация всего этого без использования сервера. Navigator c JavaScript позволяет организовать многооконную локальную гипертекстовую систему с контекстной справочной системой, что раньше требовало достаточно больших усилий по программирования. Но конечно, это не дается просто так, за все приходится платить. Начав опыты со скриптами на Windows 3.x, я очень скоро убедился, что "ожившие" страницы требуют очень много ресурсов, а иногда могут даже привести к "зависанию" системы. Из разъяснений, полученных из comp.lang.javascript, javascript@oberon.edu, а также аналогичного списка Netscape следовало примерно следующее: "Не валяй дурака и ходи как все по камешкам - ставь многопотоковые Windows 95, а лучше NT и не морочь занятым людям головы." А если серьезно, то Navigator для Windows 3.1х является лишь калькой 32-х разрядных версий этой программы и, так как в 16-разрядной ОС нет реальной вытесняющей многозадачности, то при использовании отложенных вызовов функций в цикле по setTimeout происходит просто "отъедание" ресурсов, которые естественно небезграничны. Замечание по поводу Windows`95 или NT вызвано тем обстоятельством, что вообще говоря прикладная задача в Windows`95 может писать информацию куда угодно, в том числе и в область операционной системы, что, как показала практика использования Navigator приводит иногда к зависанию системы. В заключении следует отметить, что возможностей "уронить" чужую машину при использовании JavaScript сколь угодно много и Navigator еще надо доводить и доводить на предмет тестирования кода на запрещенные конструкции в скриптах.

Java

Много говорить о Java в контексте HTML собственно не приходится. Мобильный код Java заключается внутри контейнера APPLET и выполняется интерпретатором после загрузки документа. Java позволяет реализовать сложные мультимедийные страницы, но к языку разметки это имеет довольно косвенное отношение.

Заключение

В рамках короткого доклада невозможно подробно обсудить все возможности языка HTML. К настоящему времени по своим выразительным возможностям HTML вместе со своими расширениями достиг уровня языков управления интерфейсом локальных гипертекстовых информационных систем. Основная задача разработчиков Web-страниц состоит в том, чтобы освоить эти возможности, и тогда станет понятно куда можно развиваться дальше.

[Назад] [Содержание] [Вперед]