3.3.4 Объявления атрибутов
Объявление
атрибутов, которые может иметь элемент, начинается с ключевого слова
<!ATTLIST. За ним следует имя элемента с вопросительным знаком, список
определений атрибутов и закрывающий символ >. Каждое определение атрибута - это
тройка, определяющая:
- Имя атрибута.
- Тип значения атрибута или явный набор допустимых значений. Значения,
определенные явным образом при помощи DTD,
учитывают регистр. Подробнее о типах значений атрибутов см. в разделе
основные типы данных HTML.
- Является ли значение атрибута по умолчанию
неявным (ключевое слово "#IMPLIED"), то есть значение по умолчанию
устанавливается агентом пользователя (в некоторых случаях с использованием
наследования от родительских элементов); всегдаобязательным
(ключевое слово "#REQUIRED"); или
фиксированным данным значением (ключевое слово "#FIXED"). Некоторые
определения атрибутов явным образом указывают значение атрибута по
умолчанию.
В этом примере атрибут имя определен для
элемента MAP. Атрибут на является обязательным
для этого элемента.
<!ATTLIST MAP
name CDATA #IMPLIED
>
Тип значений, допустимых для этого атрибута, дается как CDATA, тип данных
SGML. CDATA - это текст,
который может содержать ссылки на символы.
Подробнее о типах данных "CDATA", "NAME", "ID" и др. см. в разделе типы
данных HTML.
В следующих примерах показано несколько определений атрибутов:
rowspan NUMBER 1 -- число строк, охватываемых ячейкой --
http-equiv NAME #IMPLIED -- Имя заголовка ответа HTTP --
id ID #IMPLIED -- уникальный ИД в пределах документа --
valign (top|middle|bottom|baseline) #IMPLIED
Для атрибута rowspan необходимы значения типа NUMBER. Значение
по умолчанию дается явно - "1". Для необязательного атрибута http-equiv
необходимы значения типа NAME. Для необязательного атрибута id
необходимы значения типа ID. Необязательный атрибут valign
ограничен значениями из набора {top, middle, bottom, baseline}.
Комбинации DTD в определениях атрибутов
Определения атрибутов могут также содержать ссылки на комбинации параметров.
В этом примере мы видим, что список определений атрибутов для элемента
LINK начинается с комбинации параметров
"%attrs;".
<!ELEMENT LINK - O EMPTY -- ссылка, независимая от устройства -->
<!ATTLIST LINK
%attrs; -- %coreattrs, %i18n, %events --
charset %Charset; #IMPLIED -- кодировка связанного документа --
href %URI; #IMPLIED -- URI для связанного документа --
hreflang %LanguageCode; #IMPLIED -- код языка --
type%ContentType; #IMPLIED -- рекомендуемый тип содержимого --
rel%LinkTypes; #IMPLIED -- типы ссылок для перехода вперед --
rev%LinkTypes; #IMPLIED -- типы ссылок для перехода назад --
media%MediaDesc; #IMPLIED -- для генерации на этом устройстве --
>
Начальный тег: обязателен, Конечный тег:
запрещен
Комбинация параметров "%attrs;" определена следующим образом:
<!ENTITY % attrs "%coreattrs; %i18n; %events;">
Комбинация "%coreattrs;" в определении "%attrs;" разворачивается
следующим образом:
<!ENTITY % coreattrs
"idID #IMPLIED -- уникальный ИД в пределах документа --
classCDATA #IMPLIED -- список классов, разделенных пробелами --
style%StyleSheet; #IMPLIED -- информация о стиле --
title%Text; #IMPLIED -- рекомендуемый заголовок/распространение --"
>
Комбинация параметров
"%attrs;" определена для удобства, поскольку эти
атрибуты определены для большинства типов элементов HTML.
Таким же образом DTD определяет комбинацию параметров "%URI;" как расширение
строки "CDATA".
<!ENTITY % URI "CDATA"
-- Универсальный идентификатор ресурсов, см. [URI]
-->
Как показано в этом примере, комбинация параметров "%URI;" предоставляет
читателям DTD больше информации, чем для типа данных, ожидаемого для этого
атрибута. Похожие entities определены для "%Color;", "%Charset;", "%Length;",
"%Pixels;" и т.д.
Логические атрибуты
Некоторые атрибуты играют роль логических переменных (например, атрибут
selected для элемента
OPTION). Их наличие в начальном тэге элемента подразумевает, что
значением атрибута является "истина". Их отсутствие означает "ложь".
Логические атрибуты могут принимать только одно значение: собственно имя
атрибута (например, selected="selected").
В этом примере атрибут selected
определяется как булев.
selected (selected) #IMPLIED -- уменьшенный интервал между элементами --
Для атрибута устанавливается значение "истина", поскольку он находится в
начальном тэге элемента:
<OPTION selected="selected">
...contents...
<OPTION>
В HTML логические атрибуты могут быть в
минимизированной форме -- в начальном тэге элемента находится
только значение атрибута. Таким образом,
selected можно установить, написав:
<OPTION selected>
вместо:
<OPTION selected="selected">
Авторам следует знать, что многие агенты пользователей распознают
только минимизированную форму логических атрибутов и не распознают
полную.
|