- •3.1 Введение в sgml
- •3.2 Конструкции sgml используемые в html
- •3.2.1 Элементы
- •3.2.2 Атрибуты
- •3.2.3 Указатели символов
- •3.2.4 Коментарии
- •3.3 Как читать dtd для html
- •3.3.1 Коментарии в dtd
- •3.3.2 Определения параметрических сущностей
- •3.3.3 Объявления элементов
- •Определения модели содержания
- •3.3.4 Объявления атрибутов
- •Сущности dtd в определениях атрибутов
- •Булевы атрибуты
- •4 Согласования: требования и рекомендации
- •4.1 Определения
- •4.3 Тип содержания "text/html"
- •5 Представление документа html
- •5.1 Набор символов документа
- •5.2 Символьные кодировки
- •5.2.1 Выбор кодировки
- •Примечание о специфических кодировках
- •5.2.2 Указание символьной кодировки
- •5.3 Символьные ссылки
- •5.3.1 Числовые символьные ссылки
- •5.3.2 Символьные сущностные ссылки
- •5.4 Неотображаемые символы
- •6 Основные типы данных html
- •6.1 Информация о регистре
- •6.2 Основные типы sgml
- •6.3 Текстовые строки
- •6.5 Цвета
- •6.5.1 Примечание об использовании цветов.
- •6.6 Длины
- •6.7 Типы содержания (типы mime)
- •6.8 Языковые коды
- •6.9 Символьные кодировки
- •6.10 Одиночные символы
- •6.11 Дата и Время
- •6.12 Типы связей
- •6.13 Описатели среды
- •6.14 Данные сценариев
- •6.15 Данные таблиц стилей
- •6.16 Фреймовые целевые имена
Определения модели содержания
Модель содержания описывает что может заключатся внутри элемента данного типа. Определения модели содержания могут включать в себя:
Назвалия допустимых или запрещенных типов элементов (например, элемент типа UL содержит элементы типа LI, а элемент типа P не может содержать другие элементы типа P).
Сущности DTD (например, элемент типа LABEL содержит параметрические сущности "%inline;").
Текст документа (указывается конструкцией SGML "#PCDATA"). Текст может содержать указатели символов. Напомним что последние начинаются с & и заканчиваются точкой с запятой (например, текст "Hergé's adventures of Tintin" содержит указатель символьной сущности для символа "e acute" [e с косой чертой]).
Модель содержания элемента специфицируется с использованием следующего синтаксиса:
( ... )
Ограничивает группу.
A | B
Либо A либо B встречаются, но не оба.
A , B
Как A так и B встречаются, в указаном порядке.
A & B
Как A так и B встречаются, в любом порядке.
A?
A встречается не более одного раза (возможно ниразу).
A*
A встречается несколько раз (возможно ниразу).
A+
A встречается один или более раз.
Приведем насколько примеров из DTD для HTML:
<!ELEMENT UL - - (LI)+>
Элемент типа UL должен содержать один или более элементов типа LI.
<!ELEMENT DL - - (DT|DD)+>
Элемент типа DL должен содержать один или более элементов типа DT или DD в произвольном порядке.
<!ELEMENT OPTION - O (#PCDATA)>
Элемент типа OPTION может содержать лишь текст и сущности, такие как & -- это указано типом данных SGML #PCDATA.
Несколько элемснтов HTML используют дополнительную возможность SGML чтобы исключить определенные элементы из модели содержания. Исключенные элементы отмечаются черточкой перед ними. Явные исключения отменяют разрешенные ранее элементы.
В данном примере, -(A) означает, что элемент типа A не может встречатся внутри другого элемента типа A (то есть, якоря не могут вкладываться один в другой).
<!ELEMENT A - - (%inline;)* -(A)>
Обратите внимание, что тип элемента A является частью параметрической сущности DTD "%inline;", но он явно исключен благодаря -(A).
Аналогично, следующее объявление типа элемента FORM запрещает вложеные формы:
<!ELEMENT FORM - - (%block;|SCRIPT)+ -(FORM)>
3.3.4 Объявления атрибутов
Объявление атрибутов которые может принимать элемент начинается с ключевого слова <!ATTLIST. За тем следуют название элемента о котором идет речь, список определений атрибутов и закрывающий уголок >. Каждое определение атрибута это тройка, которая определяет:
Название атрибута.
Тип значения атрибута или явное множество возможных значений. Значения явно определенные в DTD нечуствительны к регистру. Пожалуйста, обращайтесь к разделу об основных типах данных HTML за дальнейшей информацией о типах значений атрибутов.
Явлвется ли значение атрибута по умолчанию неявным (ключевое слово "#IMPLIED" [подразумеваемый]), в этом случае значение по умолчанию должно предоставлятсе средством просмотра (в некоторых случаях посредством наследования от элементов высшего уровня); обязательным (ключевое слово "#REQUIRED" [требуемый]); или фиксированым на определенном значении (ключевое слово "#FIXED"). Некоторые определения атрибутов явно указывают значение по умолчанию для атрибута.
В этом примере, атрибут name [имя] определяется для элемента MAP. Атрибут является необязательным для данного элемента.
<!ATTLIST MAP
name CDATA #IMPLIED
>
Тип значений разрешенных для атрибута указан как CDATA, один из типов данных SGML. CDATA это текст который может содержать указатели символов.
За дальнейшей информацией о типах данных "CDATA", "NAME", "ID", и других обращайтесь к разделу "Типы данных HTML".
Следующие примеры представляют несколько определений атрибутов:
rowspan NUMBER 1 -- number of rows spanned by cell --
http-equiv NAME #IMPLIED -- HTTP response header name --
id ID #IMPLIED -- document-wide unique id --
valign (top|middle|bottom|baseline) #IMPLIED
Атрибут rowspan требует значений типа NUMBER [число]. Значение по умолчанию указано явно и равно "1". Необязательный атрибут http-equiv требует значений типа NAME [имя]. Необязательный атрибут id требует значений типа ID. Необязательный атрибут valign может принимать значения только из следующего набора: {top, middle, bottom, baseline}.