Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
3 Об SGML и HTML.doc
Скачиваний:
2
Добавлен:
22.11.2019
Размер:
330.75 Кб
Скачать

Определения модели содержания

Модель содержания описывает что может заключатся внутри элемента данного типа. Определения модели содержания могут включать в себя:

  • Назвалия допустимых или запрещенных типов элементов (например, элемент типа 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}.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]