Язык гипертекстовой разметки HTML
Из истории языка
Структура документа HTML
Документ HTML 4 состоит из трех частей:
- строка, содержащая информацию о версии HTML,
- объявляющий раздел header/"шапка" (ограниченный элементом HEAD ),
- тело, содержащее собственно сам документ.
Тело может содержаться в элементах BODY или FRAMESET. Пробельные символы (пробелы, символы новой строки, символы табуляции и комментарии) могут появляться до или после этого раздела.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <HTML> <HEAD> <TITLE> Simple page </TITLE> </HEAD> <BODY> <H1>Hello world!</H1> </BODY> </HTML>
Документ начинается с элемента типа документа, или doctype. Он описывает, какой тип HTML будет использован - чтобы клиентское приложение пользователя могло определить, как интерпретировать документ, и решить, следует ли он тем правилам, которым собирался следовать по своему заявлению.
После этого можно видеть открывающий тег элемента html. Это оболочка вокруг всего документа. Закрывающий тег html является последним объектом в любом документе HTML.
Внутри элемента html имеется элемент head. Он содержит информацию о документе (метаданные). Внутри head находится элемент title, который определяет заголовок "Simple page" в панели меню.
После элемента head следует элемент body, который является оболочкой, содержащей реальное содержимое страницы - в данном случае только элемент заголовка первого уровня ( h1 ), который содержит текст "Hello world!" .
Элементы часто содержат другие элементы. Тело документа всегда будет содержать множество вложенных друг в друга элементов.
Разделы страницы создают общую структуру документа, и могут содержать подразделы. Они также могут содержать заголовки, параграфы, списки и т.д. Параграфы могут содержать элементы, которые создают ссылки на другие элементы, цитаты, выделения и т.д.
Синтаксис элементов HTML
Базовый элемент в HTML состоит из двух тэгов вокруг блока текста. Существуют элементы, которые не являются оболочкой для текста, и почти в каждом случае элементы могут содержать подэлементы (как html содержит head и body в примере выше).
Элементы могут также иметь атрибуты, которые могут модифицировать поведение элемента и вводить дополнительное значение.
<div id="masthead"> <h1>Основы <abbr title="Hypertext Markup Language">HTML</abbr> </h1> </div>
В этом примере элемент div (раздел страницы, способ разбиения документов на логические блоки) имеет добавленный атрибут id, для которого задано значение masthead. Элемент div содержит элемент h1 (заголовок первого, или самого важного уровня), который в свою очередь содержит некоторый текст. Часть этого текста упакована в элемент abbr (который используется для определения расширения сокращений), который имеет атрибут title, значение которого задано как Hypertext Markup Language.
Многие атрибуты в HTML являются общими для всех элементов, но некоторые являются специфическими для данного элемента или элементов. Все они имеют форму:
ключевое_слово="значение"
Значение должно быть помещено в одиночные или двойные кавычки (в некоторых ситуациях кавычки могут отсутствовать, но это не слишком хорошо с точки зрения предсказуемости, понимания).
Атрибуты и их возможные значения определяются в основном спецификациями HTML (http://www.w3.org/TR/html401/index/attributes.html), поэтому - нельзя создавать свои собственные атрибуты. Единственными реальными исключениями являются атрибуты id и class, значения полностью которых предназначены для добавления в документы вашего собственного значения и семантики.
Элемент внутри другого элемента называют "потомком" этого элемента. В примере выше abbr является потомком h1, который в свою очередь является потомком div. И наоборот, div является "предком" элемента h1.
Элементы блочного уровня и строковые элементы
Имеется две основные категории элементов в HTML, которые соответствуют типам контента и структуре, которую представляют эти элементы - элементы блочного уровня и строковые элементы.
Блочный уровень означает более высокий уровень элемента, обычно информирующий о структуре документа. Элементы блочного уровня можно представлять как элементы, которые начинаются с новой строки, отрываясь от того, что было перед этим. Распространенными блочными элементами являются параграфы, пункты списка, заголовки и таблицы.
Строковые элементы содержатся внутри структурных элементов блочного уровня и охватывают только части текста документа, а не целые области. Строковый элемент не приводит к появлению в документе новой строки, т.к. они являются элементами, которые появляются в параграфе текста. Распространенными строковыми элементами являются гипертекстовые ссылки, выделенные слова или фразы и краткие цитаты.
Заголовок
Заголовок HTML -документа является необязательным элементом разметки. Первоначально существование заголовка определялось необходимостью именования окна браузер. Это достигалось за счет элемента разметки TITLE:
<HTML> <HEAD> <TITLE>Это заголовок</TITLE> ... </HEAD> <BODY> ... </BODY> </HTML>
Еще одной функцией заголовка HTML -документа является управление HTTP -обменом через элемент разметки META. При современной практике размещения Веб-узлов компаний на серверах провайдеров администраторы этих узлов могут не иметь возможности управлять программой-сервером. В этом случае для управления обменом остается только одна возможность - через заголовок HTML -документа.
Заголовок HTML -документа также предназначен для описания поискового образа документа, необходимого для индексирования документа роботами поисковых систем. Элемент META позволяет хранить списки ключевых слов и описания документа, которые будут использоваться для составления индекса поисковой системы и появляться в качестве описания документа в случае выдачи ссылки на него при поиске по ключевым словам.
Основные теги заголовка - это элементы HTML -разметки, которые наиболее часто встречаются в заголовке HTML -документа, т.е. внутри элемента разметки HEAD:
- TITLE (заглавие документа);
- BASE (база URL );
- ISINDEX (поисковый шаблон);
- META (метаинформация);
- LINK (общие ссылки);
- STYLE (описатели стилей);
- SCRIPT (сценарии).
Чаще всего применяются элементы TITLE, SCRIPT, STYLE. Использование элемента META говорит об осведомленности автора о правилах индексирования документов в поисковых системах и возможности управления HTTP -обменом данными. BASE и ISINDEX в последнее время практически не применяются. LINK указывают только при использовании внешних относительно данного документа описателей таблиц стилей.
Элемент разметки HEAD содержит заголовок HTML -документа. Данный элемент разметки не является обязательным. При наличии тега начала элемента разметки желательно использовать и тег конца элемента разметки. По умолчанию элемент HEAD закрывается, если встречается либо тег начала контейнера BODY, либо тег начала контейнера FRAMESET.
Контейнер заголовка служит для размещения информации, относящейся ко всему документу в целом.
Элемент разметки TITLE служит для именования документа в World Wide Web. При выборе текста для содержания контейнера TITLE следует учитывать, что отображается он системным шрифтом, так как является заголовком окна браузера.
Синтаксис контейнера TITLE в общем виде выглядит следующим образом:
<TITLE>название документа</TITLE>
Заголовок не является обязательным контейнером документа. Его можно опустить. Роботы многих поисковых систем используют содержание элемента TITLE для создания поискового образа документа. Слова из TITLE попадают в индекс поисковой системы. Из этих соображений элемент TITLE всегда рекомендуется использовать на страницах Веб-узла.
Элемент разметки BASE служит для определения базового URL для гипертекстовых ссылок документа, заданных в неполной (частичной) форме. Кроме того, BASE позволяет определить целевое окно загрузки документа по умолчанию при выборе гипертекстовой ссылки текущего документа. Наиболее часто BASE встречается на страницах узлов, которые имеют "зеркала". Часть документов основного сервера по разным причинам на "зеркальный" сервер не переносится. В этом случае документ с принудительно заданным базовым URL всегда будет ссылаться на основной сервер.
Тег начала контейнера содержит один обязательный атрибут HREF, и может содержать один необязательный атрибут TARGET. Синтаксис контейнера BASE в общем виде выглядит следующим образом:
<BASE HREF="http://www.example.com/intro.html"> <BASE HREF=http://www. example.com/intro.html TARGET=next>
Элемент разметки ISINDEX используется для указания поискового шаблона и унаследован от ранних версий HTML. В HTML 4.0 этот контейнер не определен.
Элемент разметки META
META содержит управляющую информацию, которую браузер использует для правильного отображения и обработки содержания тела документа, например с помощью атрибута Content-type можно задать перекодировку документа на стороне клиента.
С помощью META также можно задать и другие операторы. Например, запретить кэширование документа. Для запрета кэширования достаточно вставить в заголовок META -тег вида:
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
В новой версии протокола HTTP (HTTP 1.1) управление кэшированием осуществляется через оператор Cache-Control. Для получения такого же результата, как в случае с Pragma, в заголовке HTML -документа достаточно указать:
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
Можно запретить хранение документа после пересылки:
<META HTTP-EQUIV="Cache-Control" CONTENT="no-store">
Точно так же можно задать время последней модификации ( Last-Modified ) или дату истечения актуальности документа ( Expire ).
META -тег часто используется для описания поискового образа документа.
Собственно, для описания документа используется два META -тега. Один определяет список ключевых слов, а второй - краткое содержание документа. Контейнер TITLE здесь также используется в качестве названия документа.
<TITLE> Веб-технологии</TITLE> <META NAME="description" http-equiv="description" content="Учебный курс Веб-технологии. Тема: Обзор структуры и возможносетй языка гипертекстовой разметки."> <META NAME="keywords" HTTP-EQUIV="keywords" CONTENT="учебный курс; Веб-технологии; HTML 4.1; язык гипертекстовой разметки; заголовок HTML-документа; заголовок; HTML; документ; контейнер; элемент; разметка">
META -тег используют также программы подготовки документов., размещая в нем свой идентификатор. В общем случае контейнер META выглядит следующим образом:
<META [name=имя] [HTTP-EQUIV=имя_HTTP-оператора] CONTENT=текст >
Элемент разметки LINK
Элемент разметки LINK - это результат давно предпринятой попытки придать HTML академический вид. Согласно теории гипертекстовых систем, все гипертекстовые связи разделяют на два типа: контекстные и общие. Такое деление чисто условное и определяется тем, что контекстную связь можно привязать к определенному месту документа, а общую - отнести только ко всему документу целиком. Гипертекстовая связь задает отношение на множестве информационных узлов.
Контекстная связь определяет отношение на паре узлов. При этом в модели World Wide Web один из узлов является источником, а второй - целью ( target ). Собственно, это и отражено в названии элемента разметки A (anchor), который определяет гипертекстовую ссылку (не путать с гипертекстовой связью).
Общие ссылки нельзя привязать по контексту. Например, два информационных узла находятся в отношении следования, т.е. при "линейном" просмотре одна Веб-страница является следующей для другой Веб-страницы. В этом случае речь идет о страницах целиком, а не об отдельных их частях. Такой же общей связью является принадлежность к Веб-узлу, который ассоциируется со своей домашней страницей.
В настоящее время в браузерах не существует единого способа программирования или определения общих гипертекстовых связей.
Существенный сдвиг в этом направлении произошел после реализации поддержки описателей стилей в веб-браузерах. CSS ( Cascade STYLE Sheets, каскадные таблицы стилей) позволяют определять для различных типов гипертекстовых связей вид гипертекстовых ссылок. При этом можно определять различные типы контекстных ссылок. Контейнер LINK позволил загружать внешние описатели стилей:
<LINK REL=stylesheet href="../css/style.css" TYPE="text/css" >
В данном случае атрибут REL определяет тип гипертекстовой связи, HREF (Нуреrtехt REFerence) указывает адрес документа, идентифицирующего связь, а атрибут TYPE определяет тип содержания этого документа.
В общем случае контейнер LINK имеет следующий вид:
<LINK [REL=тип_отношения] [HREF=URL] [TYPE=тип_содержания] >
Для разных типов содержания действия по интерпретации элемента разметки будут различными.