8.3 Синтаксис имён якорей

Имя якоря — это значение атрибута 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.

Вложение ссылок не допускается

Ссылки и якоря, определённые элементом A, не могут вкладываться; элемент A не должен содержать других элементов A.

Поскольку ОТД определяет элемент LINK как пустой, элементы LINK также не могут вкладываться.

Якоря с атрибутом id

Атрибут 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&uuml;rst. Атрибут id, однако, не может содержать символьных мнемоник.

Использовать id или name? Авторы должны учитывать следующие обстоятельства при решении вопроса использования для именования якоря id или name:

  • Атрибут id может действовать не только как имя якоря (напр., селектор таблиц стилей, идентификатор процесса и т.д.).
  • некоторые старые ПА не поддерживают якоря, созданные атрибутом id.
  • Атрибут name допускает расширенные имена якорей (с мнемониками).

Недоступные и неидентифицируемые ресурсы

Ссылка на недоступный или неидентифицируемый ресурс является ошибкой. Хотя ПА могут по разному обрабатывать такие ошибки, мы рекомендуем следующее поведение ПА:

  • Если ПА не может обнаружить связанный ресурс, он должен предупредить пользователя.
  • Если ПА не может идентифицировать тип связанного ресурса, он должен попытаться обработать его. Он должен предупредить пользователя и может дать ему (пользователю) возможность доступа для идентификации типа документа.