Электронная библиотека
Программисту веб-дизайнеру
Другие материалы
Спецификация HTML 4.01, рекомендации W3C от 24 декабря 1999 года
предыдущий
следующий содержание
элементы атрибуты индекс
12 Гиперссылки
Содержание
12.1 Гиперссылки и якоря. Введение
HTML предлагает большое количество
согласованных публичных идиом для создания
сложных структурированных документов, но
что отличает его от большинства других
языков разметки, так это богатые
возможности гипертекста и интерактивные
документы.
В этом разделе вводится понятие ссылки
(или гиперссылки, ссылки Web), базовой
конструкции гипертекста. Ссылка это
соединение одного Web-ресурса с другим.
Несмотря на простоту концепции, ссылка
является одной из фундаментальных сил,
приведших к успешному развитию
Web.
Ссылка имеет два конца - называемых якорями - и направление. Ссылка начинается от якоря "источника" и указывает на якорь "назначения", который может быть любым ресурсом Web (напр., изображением, видеоклипом, аудиофрагментом, программой, документом HTML, элементом в документе HTML и т.д.).
12.1.1 "Посещение" связанного ресурса
Акцией по умолчанию, ассоциированной со ссылкой, является запрос другого ресурса Web. Такое действие является обычным и неявно подразумевается при выборе гиперссылки (напр., щелчком на ней мышью, вводом с клавиатуры и т.д.).
Следующий отрывок HTML содержит две ссылки, якорь одной из которых указывает на документ HTML с названием "chapter2.html", а якорь другой - на GIF-изображение в файле "forest.gif":
<BODY> ...текст... <p>Вы найдете многое на <A href="chapter2.html">chapter two</A>. См. также здесь <A href="../images/forest.gif">карту леса.</A> </BODY>
Активировав эту ссылку (щелчком мыши, вводом с клавиатуры, голосовой командой и т.п.), пользователь может посетить этот ресурс. Заметьте, что атрибут href в каждом якоре специфицирует адрес якоря назначения с применением URI.
Якорь назначения для гиперссылки может быть элементом в документе HTML. Якорю назначения должно быть дано имя, и любой URI, адресующий этот якорь, должен включать это имя как идентификатор фрагмента.
Якоря назначения в документах HTML могут быть специфицированы элементом A (атрибутом name) или любым другим элементом (атрибутом id).
Так, например, автор может создать оглавление, вхождения которого связаны с элементами H2, H3 и т.д. в этом же документе. Используя элемент A для создания якоря назначения, мы могли бы написать:
<H1>Оглавление</H1> <p><A href="#section1">Введение</A><BR> <A href="#section2">Фон</A><BR> <A href="#section2.1">Несколько заметок</A><BR> ...остальная часть оглавления... ...тело документа... <H2><A name="section1">Введение</A></H2> ...раздел 1... <H2><A name="section2">Фон</A></H2> ...раздел 2... <H3><A name="section2.1">Несколько заметок</A></H3> ...раздел 2.1...
Того же эффекта можно достичь, сделав элементы-заголовки якорями:
<H1>Оглавление</H1> <p><A href="#section1">Введение</A><BR> <A href="#section2">Фон</A><BR> <A href="#section2.1">Несколько заметок</A><BR> ...остальная часть оглавления... ...тело документа... <H2 id="section1">Introduction</H2> ...раздел 1... <H2 id="section2">Фон</H2> ...раздел 2... <H3 id="section2.1">Несколько заметок</H3> ...раздел 2.1...
12.1.2 Другие соотношения гиперссылок
Чаще всего гиперссылки используются для запроса другого ресурса Web, как в предыдущих примерах. Однако, авторы могут включать в свои документы гиперссылки, которые не только выполняют действия типа "активировать эту ссылку для посещения соответствующего ресурса". Гиперссылки, выражающие соотношения других типов, имеют тот или иной тип ссылок, специфицированный в якоре этого ресурса.
Роли гиперссылки, определяемые A или LINK, установлены атрибутами rel и rev.
Например, ссылки, определенные элементом LINK, могут описывать позицию документа в серии документов. В следующем отрывке гиперссылки в документе, озаглавленном "Chapter 5", указывают на следующую и предыдущую главы:
<HEAD> ...другая информация "шапки"... <TITLE>Chapter 5</TITLE> <LINK rel="prev" href="chapter4.html"> <LINK rel="next" href="chapter6.html"> </HEAD>
Тип первой ссылки - "prev", а второй - "next" (два из нескольких распознаваемых типов ссылок). Гиперссылки, специфицированные в LINK, не рассматриваются как содержимое документов, хотя ПА могут отображать их другими способами (напр., утилитами навигации).
Даже если они не используются для навигации, эти гиперссылки могут интерпретироваться интересными способами. Например, ПА, печатающий серию документов HTML как единый документ, может использовать информацию этих ссылок как базис связного линеарного документа. Ниже дана информация о гиперссылках для использования возможностей поисковых машин.
12.1.3 Спецификация якорей и гиперссылок
Хотя гиперссылки на другие ресурсы
создаются разными элементами и атрибутами (напр.,
элемент IMG, элемент FORM
и т.д.), в этом разделе рассматриваются
гиперссылки и якоря, создаваемые
элементами LINK и A.
Элемент LINK может появляться
только в "шапке" документа.
Элемент A может появляться только в теле
документа.
Если в элементе A установлен атрибут href, этот элемент определяет якорь-источник гиперссылки, который может быть активирован пользователем для запроса Web-ресурса. Якорь источника это размещение объекта A, а якорь назначения - это ресурс Web.
Запрошенный ресурс может быть обработан ПА различными способами:
Поскольку элемент A имеет содержимое (текст, изображения и т.п.), ПА могут обозначить наличие этого содержимого, например, подчеркиванием гиперссылки.
Если атрибуты name или id элемента A установлены, данный элемент определяет якорь, который может служить якорем назначения других гиперссылок.
Авторы могут установить атрибуты name и href одновременно в одном и том же A.
Элемент LINK определяет взаимоотношение между текущим документом и другим ресурсом. Хотя LINK не имеет содержимого, взаимоотношения, определяемые им, могут воспроизводиться некоторыми ПА.
Атрибут title может быть установлен элементами A и LINK для добавления информации о ссылке. Эта информация может произноситься ПА, может быть показана как подсказка, вызывать изменение вида курсора и т.д.
Таким образом, мы можем расширить предыдущий пример, добавив заголовок к каждой ссылке:
<BODY> ...текст... <p>Вы найдете многое на <A href="chapter2.html" title="Go to chapter two">chapter two</A>. <A href="./chapter2.html" title="Get chapter two.">chapter two</A>. См. также здесь <A href="../images/forest.gif" title="GIF image of enchanted forest">карту леса.</A> </BODY>
12.1.5 Интернационализация и гиперссылки
Поскольку гиперссылки могут указывать на документ, имеющий другой набор символов, элементы A и LINK поддерживают атрибут charset. Этот атрибут дает авторам возможность уведомлять ПА о кодировке, дате и других данных.
Атрибут hreflang снабжает ПА информацией о языке ресурса гиперссылки так же, как атрибут lang дает информацию о языке содержимого элемента или значениях атрибутов.
Вооруженные новыми данными, ПА должны исключить показ пользователю различного "мусора". Вместо этого они могут или указать на ресурсы, необходимые для корректного воспроизведения документа, или, при невозможности размещения ресурса, как минимум предупредить пользователя о том, что документ не будет прочитан и указать причину.
<!ELEMENT A - - (%inline;)* -(A) -- якорь --> <!ATTliST A %attrs; -- %coreattrs, %i18n, %events -- charset %Charset; #ПРЕДПОЛАГАЕТСЯ -- набор символов связанного ресурса -- type %ContentType; #ПРЕДПОЛАГАЕТСЯ -- информативный тип содержимого -- name CDATA #ПРЕДПОЛАГАЕТСЯ -- имя целевой ссылки -- href %URI; #ПРЕДПОЛАГАЕТСЯ -- URI связанного ресурса -- hreflang %LanguageCode; #ПРЕДПОЛАГАЕТСЯ -- код языка -- rel %linkTypes; #ПРЕДПОЛАГАЕТСЯ -- типы ссылок вперед -- rev %linkTypes; #ПРЕДПОЛАГАЕТСЯ -- типы ссылок назад -- accesskey %Character; #ПРЕДПОЛАГАЕТСЯ -- символ быстрого доступа -- shape %Shape; rect -- для использования с клиентскими картами -- coords %Coords; #IПРЕДПОЛАГАЕТСЯ -- для использования с клиентскими картами -- tabindex NUMBER #ПРЕДПОЛАГАЕТСЯ -- позиция в порядке табуляции -- onfocus %Script; #ПРЕДПОЛАГАЕТСЯ -- элемент получил фокус -- onblur %Script; #ПРЕДПОЛАГАЕТСЯ -- элемент потерял фокус -- >
Конечный тег: необходим, Конечный тег: необходим
Определения атрибутов
Этот атрибут именует текущий якорь, который может стать якорем назначения для другой гиперссылки. Значением этого атрибута должно быть уникальное имя якоря. Областью видимости этого имени является текущий документ. Обратите внимание, что этот атрибут использует то же пространство имен, что и атрибут id.
Определяет размещение ресурса Web, определяя таким образом ссылку с текущего элемента (якоря-источника) на якорь назначения, определенный этим атрибутом.
Определяет базовый язык ресурса, обозначенного в href, и может использоваться, только если href определен.
Определяет уведомляющую подсказку, к примеру, о типе содержимого, находящегося по целевому адресу гиперссылки. Она позволяет ПА решить, использовать ли fallback-механизм, или получить содержимое, получив предупреждение о том, что это содержимое имеет тип, не поддерживаемый ПА.
Авторы, используя этот атрибут, несут ответственность за обслуживание риска наличия несоответствия с реальным содержимым, находящимся на конечном адресе гиперссылки.
Текущий список зарегистрированных типов содержимого см. в [MIMETYPES].
Описывает соотношение между текущим документом и якорем, определенным атрибутом href. Значением этого атрибута является список разделенных пробелами типов ссылок.
Этот атрибут используется для описания ссылки возврата от якоря, специфицированного атрибутом href, к текущему документу. Значением этого атрибута является разделенный пробелами список типов ссылок.
Определяет набор символов ресурса, на который указывает гиперссылка. См. детали в разделе кодировка символов.
Атрибуты, определенные в другом месте
Каждый элемент A определяет якорь:
Авторы могут также создать элемент A, который не специфицирует никаких якорей, т.е. не специфицирует href, name или id. Значения этих атрибутов могут быть установлены позже с помощью скриптов.
В следующем примере элемент A определяет гиперссылку. Якорь-источник - это текст "W3C Web site", а якорь-назначение - это "http://www.w3.org/":
Дополнительную информацию о W3C см. на <A href="http://www.w3.org/">W3C Web сайте</A>.
Эта гиперссылка указывает на домашнюю страницу World Wide Web Consortium. Если пользователь активирует эту гиперссылку в ПА, ПА запросит соответствующий ресурс, в данном случае - документ HTML.
ПА обычно отображают гиперссылки так, чтобы сделать их явно видимыми для пользователя (подчеркиванием, обратной прокруткой видео и т.п.). Конкретный вариант зависит от ПА. Вид может зависеть от того, посетил ли уже пользователь ссылку или нет. Предыдущая ссылка может выглядеть так
Дополнительную информацию о W3C см. на W3C Web сайте.
Чтобы явно указать ПА набор символов страницы назначения, установите значение атрибута charset:
Дополнительную информацию о W3C см. на <A href="http://www.w3.org/" charset="ISO-8859-1">W3C Web сайте</A>
Предположим, мы определили якорь "anchor-one" в файле "one.html".
...текст перед якорем... <A name="anchor-one">This is the location of anchor one.</A> ...текст после якоря...
Так создается якорь вокруг текста "This is the location of anchor one.". Обычно содержимое A не отображается, если A определяет только якорь.
Определив якорь, мы можем ссылаться на
него из этого же или другого документа.
URI,
обозначающие якорь, содержат символ "#" и
следующее за ним имя якоря (идентификатор
фрагмента). Вот несколько примеров таких
URI:
http://www.mycompany.com/one.html#anchor-one
./one.html#anchor-one
orone.html#anchor-one
#anchor-one
Таким образом, гиперссылка, определенная в файле "two.html" в той же директории, что и "one.html", будет ссылаться на якорь так:
...текст перед ссылкой... Дополнительную информацию см. на <A href="./one.html#anchor-one"> anchor one</A>. ...текст после ссылки...
Элемент A в следующем примере определяет гиперссылку (с помощью href) и одновременно создает именованный якорь (с помощью name):
I just returned from vacation! Here's a <A name="anchor-two" href="http://www.somecompany.com/People/Ian/vacation/family.png"> photo of my family at the lake.</A>.
Этот пример содержит ссылку на Web-ресурс другого типа (изображение PNG). Активация гиперссылки должна вызвать получение ресурса из Web (и, возможно, отображение его, если система сконфигурирована соответствующим образом).
Примечание. ПА должны уметь находить якоря, созданные пустыми элементами A, но некоторые ПА не делают этого. Например, некоторые ПА могут не обнаруживать "empty-anchor" в следующем фрагменте HTML:
<A name="empty-anchor"></A> <EM>...some HTML...</EM> <A href="#empty-anchor">link to empty anchor</A>
Имя якоря - это значение атрибута name или id, когда используется в контексте якорей. Имена якорей должны соблюдать следующие правила:
Таким образом, следующий пример корректен в отношении совпадения строк и должен рассматриваться ПА как совпадение:
<p><A href="#xxx">...</A> ...документ... <p><A name="xxx">...</A>
НЕВЕРНОЕ ИСПОЛЬЗОВАНИЕ:
Это пример неверного использования имен,
поскольку имена одинаковы и различаются
только регистром:
<p><A name="xxx">...</A> <p><A name="XXX">...</A>
Хотя следующий отрывок HTML верен, поведение ПА в этом случае не определено; некоторые ПА могут (некорректно) рассматривать это как совпадение, а другие - нет.
<p><A href="#xxx">...</A> ...документ... <p><A name="XXX">...</A>
Имена якорей должны быть указаны в символах ASCII. См. в приложении дополнительную информацию о не-ASCII символах в значениях атрибутов URI.
12.2.2 Вложение ссылок не допускается
Ссылки и якоря, определенные элементом A, не могут вкладываться; элемент A не должен содержать других элементов A.
Поскольку ОТД определяет элемент LINK как пустой, элементы LINK также не могут вкладываться.
Атрибут id может использоваться для создания якоря в начальном теге любого элемента (включая элемент A).
Этот пример иллюстрирует использование атрибута id для размещения якоря в элементе H2. Якорь связан посредством элемента A.
Об этом Вы можете узнать больше в <A href="#section2">Section Two</A>. ...позже в документе <H2 id="section2">Раздел 2</H2> ...позже в документе <p>Смотрите <A href="#section2">Раздел 2</A> выше по тексту.
В следующем примере якорь назначения именован с помощью атрибута id:
I just returned from vacation! Here's a <A id="anchor-two">photo of my family at the lake.</A>.
Атрибуты id и name используют общее пространство имен. Это означает, что они не могут одновременно определять якорь с одним именем в одном и том же документе. Допускается использовать оба атрибута для определения уникальных идентификаторов следующих элементов: A, APPLET, FORM, FRAME, IFRAME, IMG и MAP. Если оба атрибута использованы в одном элементе, их значения должны быть идентичны.
ПРИМЕР НЕПРАВИЛЬНОГО
ИСПОЛЬЗОВАНИЯ:
Следующий отрывок HTML неверен, поскольку эти
атрибуты объявляют одно имя дважды в одном
документе:
<A href="#a1">...</A> ... <H1 id="a1"> ...страницы документа... <A name="a1"></A>
Следующий пример показывает, что id и name должны быть идентичными, если оба появляются в начальном теге элемента:
<p><A name="a1" id="a1" href="#a1">...</A>
В соответствии со своей спецификацией в ОТД HTML, атрибут name может содержать символьные мнемоники. Так, значение Dürst является верным значением атрибута name, как и Dürst. Атрибут id, однако, не может содержать символьных мнемоник.
Использовать id или name? Авторы должны учитывать следующие обстоятельства при решении вопроса использования для именования якоря id или name:
12.2.4 Недоступные и неидентифицируемые ресурсы
Ссылка не недоступный или неидентифицируемый ресурс является ошибкой. Хотя ПА могут по разному обрабатывать такие ошибки, мы рекомендуем следующее поведение ПА:
12.3 Взаимосвязи документов: элемент
LINK
<!ELEMENT LINK - O EMPTY -- медиа-независимая ссылка --> <!ATTliST LINK %attrs; -- %coreattrs, %i18n, %events -- charset %Charset; #ПРЕДПОЛАГАЕТСЯ -- набор символов связанного ресурса -- href %URI; #ПРЕДПОЛАГАЕТСЯ -- URI связанного ресурса -- hreflang %LanguageCode; #ПРЕДПОЛАГАЕТСЯ -- код языка -- type %ContentType; #ПРЕДПОЛАГАЕТСЯ -- информативный тип содержимого -- rel %linkTypes; #ПРЕДПОЛАГАЕТСЯ -- типы ссылок вперед -- rev %linkTypes; #ПРЕДПОЛАГАЕТСЯ -- типы ссылок назад -- media %MediaDesc; #ПРЕДПОЛАГАЕТСЯ -- для представления на данном носителе -- >
Начальный тег: необходим, Конечный тег: запрещен
Атрибуты, определенные в другом месте
Этот элемент определяет ссылку. В отличие от A, он может появляться только в разделе HEAD - "шапки" документа, хотя и может появляться любое количество раз. Хотя LINK не имеет содержимого, он выражает информацию о взаимоотношениях, которая может отображаться ПА различными способами (напр., панель с выпадающим меню со ссылками).
Этот пример показывает, как различные определения LINK могут появляться в разделе HEAD документа. Текущий документ - "Chapter2.html". Атрибут rel специфицирует соотношение связанного документа с текущим. Значения "Index", "Next" и "Prev" разъясняются в разделе типы ссылок.
<!DOCTYPE HTML PUBLIC "-//W3C//Dtd HTML 4.01//EN" "http://www.w3.org/tr/html4/strict.dtd"> <HTML> <HEAD> <TITLE>Chapter 2</TITLE> <LINK rel="Index" href="../index.html"> <LINK rel="Next" href="Chapter3.html"> <LINK rel="Prev" href="Chapter1.html"> </HEAD> ...оставшаяся часть документа...
12.3.1 Гиперссылки вперед и назад
Атрибуты rel и rev дополнительно могут: атрибут rel - определять ссылки вперед, а атрибут rev - ссылки назад.
Рассмотрим два документа - A и B.
Document A: <LINK href="docB" rel="foo">
имеет то же значение, что и:
Document B: <LINK href="docA" rev="foo">
Оба атрибута могут быть определены одновременно.
12.3.2 Гиперссылки и внешние таблицы стилей
Если элемент LINK связывает внешнюю таблицу стилей с документом, то атрибут type определяет язык таблицы стилей, а атрибут media определяет соответствующие носители представления. ПА могут сэкономить время, запрашивая из сети только те таблицы стилей, которые применимы к текущему устройству.
Типы носителя рассматриваются в разделе о таблицах стилей.
12.3.3 Гиперссылки и машины поиска
Авторы могут использовать элемент LINK для предоставления поисковым машинам различной информации, в том числе:
Ниже пример иллюстрирует, как информация о языке, типах носителя и типах ссылок может быть объединена для упрощения обработки документа поисковой машиной.
Здесь мы используем атрибут hreflang, чтобы сообщить поисковой машине, где найти датскую, португальскую и арабскую версии документа. Обратите внимание на использование атрибута charset для арабского варианта учебника. Отметьте также использование атрибута lang для указания на то, что значение атрибута title элемента LINK, указывающего на французский учебник, - французский.
<HEAD> <TITLE>Учебник на английском</TITLE> <LINK title="Учебник на датском" type="text/html" rel="alternate" hreflang="nl" href="http://someplace.com/manual/dutch.html"> <LINK title="Учебник на португальском" type="text/html" rel="alternate" hreflang="pt" href="http://someplace.com/manual/portuguese.html"> <LINK title="Учебник на арабском" type="text/html" rel="alternate" charset="ISO-8859-6" hreflang="ar" href="http://someplace.com/manual/arabic.html"> <LINK lang="fr" title="La documentation en Français" type="text/html" rel="alternate" hreflang="fr" href="http://someplace.com/manual/french.html"> </HEAD>
В следующем примере мы сообщаем поисковой машине, где искать версию для печати:
<HEAD> <TITLE>Справочник</TITLE> <LINK media="print" title="Справочник в postscript" type="application/postscript" rel="alternate" href="http://someplace.com/manual/postscript.ps"> </HEAD>
В следующем примере мы сообщаем поисковой машине, где искать начальную страницу коллекции документов:
<HEAD> <TITLE>Справочник -- Страница 5</TITLE> <LINK rel="Start" title="Первая страница" type="text/html" href="http://someplace.com/manual/start.html"> </HEAD>
Дополнительная информация находится в примечаниях: помощь поисковым машинам в индексации Вашего Web-сайта.
12.4 Информация пути: элемент BASE
<!ELEMENT BASE - O EMPTY -- базовый URI документа --> <!ATTliST BASE href %URI; #НЕОБХОДИМ -- URI, действующий как базовый URI -- >
Начальный тег: необходим, Конечный тег: запрещен
Определение атрибута
Этот атрибут определяет абсолютный URI, действующий как базовый URI для разрешения (расширения) относительных URI.
Атрибут, определенный в другом месте
В HTML гиперссылки и ссылки на внешние изображения, аплеты, программы обработки форм, таблицы стилей и т.д. всегда специфицируются в URI. Относительные URI разрешаются (расширяются) в соответствии с базовым URI, который может поступать из различных источников. Элемент BASE позволяет авторам явно указать базовый URI.
При наличии, элемент BASE должен появляться в разделе HEAD документа HTML перед любым элементом, ссылающимся на внешний ресурс. Специфицированная элементом BASE информация о пути действует только на URI в том документе, где элемент BASE появляется.
Например, при объявлении следующих BASE и A:
<!DOCTYPE HTML PUBLIC "-//W3C//Dtd HTML 4.01//EN" "http://www.w3.org/tr/html4/strict.dtd"> <HTML> <HEAD> <TITLE>Наши Продукты</TITLE> <BASE href="http://www.aviary.com/products/intro.html"> </HEAD> <BODY> <p>Вы видели наши <A href="../cages/birds.gif">Клетки для Птиц</A>? </BODY> </HTML>
относительный URI "../cages/birds.gif" будет расширен до:
http://www.aviary.com/cages/birds.gif
12.4.1 Расширение относительных URI
ПА должны вычислять базовый URI для
расширения относительных URI в соответствии
с [RFC1808], раздел 3.
Ниже объясняется, как
[RFC1808] применяется в специфике HTML.
ПА должны высчитывать базовый URI в такой последовательности (приоритет от высшего к низшему):
В дополнение к сказанному, элементы OBJECT и APPLET определяют атрибуты, имеющие преимущество перед значениями, установленными элементом BASE. См. определения этих элементов для получения дополнительной информации о вопросах URI, касающихся конкретно этих элементов.
Примечание. Для версий HTTP, определяющих "шапку" link, ПА могут обрабатывать эти "шапки" точно так же, как элементы LINK в документе. HTTP 1.1, как определено в [RFC2616], не содержит поле "шапки" link (см. раздел 19.6.3).
предыдущий следующий содержание элементы атрибуты индекс