Язык гипертекстовой разметки HTML и протокол обмена гипертекстовой информацией HTTPП. Храмцов, РНЦ "Курчатовский Институт"
Реферат
Язык гипертекстовой разметки HTML является одним из компонентов технологии ведения гипертекстовых распределенных баз данных World Wide Web. Все программы- интерфейсы - Mosaic, Netscape, Arena, Cello, Lynx и т.п. являются, фактически, интерпретаторами этого языка. В настоящее время готовится третья версия языка, которая отражает как существующую практику разработки гипертекстовых баз данных, так и является в некоторой степени ориентиром для разработчиков программных средств. Данный доклад посвящен краткой характеристике возможностей HTML и его средствам управления обменом гипертекстовой информацией.
Язык гипертекстовой разметки HTML (HyperText Markup Language) был предложен Тимом Бернерсом-Ли в 1989 году в качестве одного из компонентов технологии разработки распределенной гипертекстовой системы World Wide Web.
К моменту создания HTML существовал стандарт языка разметки печатных документов - Standard Generalised Markup Language, который и был взят в качестве основы HTML. Предполагалось, что такое решение поможет использовать существующее программное обеспечение для интерпретации нового языка. Однако, будучи доступен широкому кругу пользователей Internet, HTML зажил своей собственной жизнью. Я думаю, что многие администраторы баз данных WWW и разработчики программного обеспечения для этой системы имеют довольно смутное представление о стандартном языке разметки SGML. В последнее время интерес к SGML стал снова возрастать. Обобщенный язык разметки позволяет создавать документы, которые можно затем использовать для разных целей как то: опубликование в виде обычных текстовых документов, создание архивов документов, и, конечно, опубликование на Internet. Вторым важным моментом, повлиявшим на судьбу 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 стала на сегодняшний день фактическим стандартом языка.
Таговая модель описывает документ как совокупность элементов, каждый из которых окружен тагами. По своему значению таги близки к понятию скобок "begin/end" в универсальных языках программирования, которые задают области действия имен локальных переменных, динамику распределения памяти блока и т.п.. Таги определяют область действия правил интерпретации текстовых элементов документа. В последнее время элементы документа, размеченного при помощи HTML, стало принято называть контейнерами. Общая схема построения элемента текста в формате HTML может быть записана в следующем виде: "элемент" := <"имя элемента" "список атрибутов">, содержание элемента </"имя элемента">, Конструкция перед содержанием элемента называется тагом начала документа, а конструкция, расположенная после содержания элемента, -таг конца элемента. Этот текст содержит Здесь элемент "A", который в HTML называют якорем (anchor), использует атрибут "HREF", который обозначает гипертекстовую ссылку (Hypertext REFerence), для записи этой ссылки в форме URL. Данная ссылка указывает на документ с именем "index.html" в директории "altai" на сервере "polyn.net.kiae.su", доступ к которому осуществляется по протоколу "http". <HTML>, Содержание документа </HTML>, Сам элемент HTML или гипертекстовый документ состоит из двух частей: заголовка документа (HEAD) и тела документа (BODY): <HTML>, Теоретически обсуждать язык разметки всегда очень трудно, поэтому приведем просто пример документа на HTML и обсудим на нем особенности языка: <HTML>, Все что расположено между <HTML>, и </HTML>, - это документ. Содержание элемента HEAD определяет заголовок документа, который состоит из двух элементов: TITLE и BASE. Вслед за заголовком начинается тело документа, которое содержит в своих первых строках некоторую вводную информацию и содержание документа, оформленное в виде списка. <BODY>, Первым Элементом тела документа является его название, которое задано заглавием первого уровня - H1. Обычно, для отображения таких заглавий используют самый крупный шрифт. Вслед за заглавием идет список примеров, который оформлен как ненумерованный список UL. Выделение элементов списка синим цветом показывает, что это гипертекстовые ссылки. которые записаны в виде тагов вида: <A NAME="list">, При выборе гипертекстовой ссылки происходит переход на указанную в ссылке метку. <H2>,Выделение заголовков</H2>, Следует обратить внимание еще на два тага: <HR>, и <BR>,. Первый вызывает подведение сплошной черты под текстом на всю ширину рабочей области интерфейса, а второй вызывает принудительный перевод строки. В принципе, программа интерфейса пользователя автоматически вписывает текст в окно рабочей области интерфейса, поэтому все концы строк в исходных файлах игнорируются. Но часто бывает полезно перевести строку по месту. для этой цели и используется таг <BR>,. <FORM METHOD=POST ACTION=http://polyn.net.kiae.su/cgi-bin/test>, В примере данные, введенные в эту форму будут переданы программе test(атрибут ACTION). В поле с именем INPUT можно ввести текст до 1024 символов (в старых версиях программ-интерфейсов до 128 символов) и выбрать из меню одну из альтернатив. Поле с именем SUBMIT определяет кнопку, при нажатии на которую данные отправляются в сеть.
Как уже упоминалось выше на сегодняшний день существует два законченных стандарта языка 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.
Фреймы - это долгожданная многооконность, которая позволяет решить сразу множество проблем связанных с разработкой документов. В первую очередь возможность одновременной работы с текстом и меню, текстовым меню и графикой. Параллельно решаются проблема BANNER, для которой в HTML+ предлагался новый тег. Фрейм позволяет использовать часто встречающиеся фрагменты текста, например, постоянную заставку в качестве отдельного фрейма. Многие пользователи Internet наверняка встречались с этим механизмом при использовании поисковой службы InfoSeek (http://www.infoseek.com/). Если раньше нужно было постоянно вставлять в текст либо готовые части страницы, которые появляются в начале и конце каждого документа или использовать server site includes, то теперь это можно делать при помощи фреймов. Вообще, на мой взгляд, фреймы очень органичное решение, т.к. документ с фреймами является просто суперпозицией простых HTML-документов.
Дополнительные окна - это тесно связанный с фреймами механизм. Но если страница с фреймами делит рабочую область Navigator на несколько частей, не выходя за пределы окна программы, то в случае дополнительного окна разработчик страницы Web имеет возможность открыть новое окно Navigator и тем самым предать как бы новое измерение просмотру. Такое направление интерфейса лежит в русле разработки много оконных интерфейсов гипертекстовых систем, о которых в академических кругах говорят уже лет десять, но к единой модели такого интерфейса так до сих пор еще и не пришли. Очевидно одно, что это позволяет оставлять видимые закладки при проходе по гипертекстовой сети по инициативе разработчика страниц, что является в некоторых случаях достаточно полезным решением, которое расширяет привычную двухуровневую схему просмотра, когда в отдельное окно помещали либо графику, либо файл специального формата.
Динамическое обновление документов - это возможность построения самопросматривающихся страниц и, если позволяет скорость линии связи примитивной мультипликации. Если разработчики Arena только обещают использование заголовка HTML-документа для управления просмотром последнего, то в Netscape это уже делается. В данном случае используется тег META с атрибутом HTTP-EQUIV, в котором и указывается скважность обращения Navigator к серверу за обновленным документом, которым может быть либо новая копия просматриваемого документа, либо другой документ.
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 в контексте HTML собственно не приходится. Мобильный код Java заключается внутри контейнера APPLET и выполняется интерпретатором после загрузки документа. Java позволяет реализовать сложные мультимедийные страницы, но к языку разметки это имеет довольно косвенное отношение. В рамках короткого доклада невозможно подробно обсудить все возможности языка HTML. К настоящему времени по своим выразительным возможностям HTML вместе со своими расширениями достиг уровня языков управления интерфейсом локальных гипертекстовых информационных систем. Основная задача разработчиков Web-страниц состоит в том, чтобы освоить эти возможности, и тогда станет понятно куда можно развиваться дальше.
|