Опубликован: 19.05.2006 | Доступ: свободный | Студентов: 9815 / 1466 | Оценка: 4.29 / 4.03 | Длительность: 22:29:00
ISBN: 978-5-94774-648-8
Лекция 3:

О SGML и HTML

< Лекция 2 || Лекция 3: 123 || Лекция 4 >

Как читать Определение Типа Документа (ОТД) HTML

Каждое объявление элемента или атрибута в этой спецификации сопровождается соответствующим фрагментом "определения типа документа" . Мы решили включать фрагменты ОТД в спецификацию вместо того, чтобы использовать более подходящие, но и более длинные и менее точные способы описания свойств элемента.

Этот учебник должен помочь читателям, не знакомым с SGML, разобраться в ОТД и понять технические детали этой спецификации HTML.

Комментарии в ОТД

Комментарии в ОТД могут быть одно- или многострочными. Комментарии в ОТД это текст, ограниченный парами знаков " -- ", например:

<!ELEMENT PARAM - O EMPTY       -- именованное значение свойства -->

Данный комментарий "именованное значение свойства" поясняет использование типа элемента PARAM. Комментарии в ОТД носят исключительно информативный характер.

Определения объектов-параметров

"ОТД HTML" начинается серией определений объектов-параметров. Определение объекта-параметра определяет макрос особого типа, на который можно ссылаться и который может быть развёрнут где-либо в ОТД. Эти макросы могут не появляться в самом документе HTML, а только в ОТД. Макросы других типов, называемые ссылки-мнемоники, могут быть использованы в тексте документа HTML или внутри значений атрибутов.

Если на объект-параметр ссылаются по имени из ОТД, он разворачивается в строку.

Определение объекта-параметра начинается ключевым словом <!ENTITY % с последующим именем объекта-параметра, строки в кавычках, в которую объект-параметр разворачивается, и конечного закрывающего >. Появления объектов-параметров в ОТД начинаются со знака " % ", затем имени объекта-параметра и необязательного заключительного знака " ; ".

Вот определение строки, в которую разворачивается объект-параметр " %fontstyle; ".

<!ENTITY % fontstyle "TT | I | B | BIG | SMALL">

Строка, в которую разворачивается объект-параметр, может содержать имена других объектов-параметров. Эти имена разворачиваются рекурсивно. В следующем примере, объект-параметр " %inline; " определён с включением объектов-параметров " %fontstyle; ", " %phrase; ", " %special; " и " %formctrl; ".

<!ENTITY % inline "#PCDATA | %fontstyle; | %phrase; | %special; | %formctrl;">

Вы можете заметить далее, что два объекта-параметра ОТД часто появляются в "ОТД HTML" : " %block; " и " %inline; ". Они используются, если модель содержимого включает соответственно элементы уровня блока/block-level и инлайн/ inline (определены в разделе "глобальная структура документа HTML" ).

Объявление элементов

Как правило, ОТД HTML состоит из объявления типа элемента и его атрибута. Ключевое слово <!ELEMENT открывает объявление, а символ > закрывает. Между ними определяются:

  1. имя элемента ;
  2. обязательно ли указывать теги элемента. Два дефиса после имени элемента означают, что начальный и конечный теги должны присутствовать. Один дефис и буква " O " означают, что конечный тег может отсутствовать. Две буквы " O " означают, что и начальный, и конечный теги могут отсутствовать;
  3. содержимое элемента, если есть. Допустимое для данного элемента содержимое называется моделью содержимого . Типы элементов, которые разработаны так, чтобы не иметь содержимого, называются пустыми элементами . Модель содержимого для таких типов элементов объявляется ключевым словом " EMPTY ".

В этом примере:

<!ELEMENT UL - - (LI)+>
  • объявляемый тип элемента - UL ;
  • два дефиса означают, что оба тега, начальный <UL> и конечный </UL>, для этого типа элементов должны присутствовать;
  • модель содержимого этого типа элементов объявлена как "не менее одного элемента LI ". Ниже объясняется, как специфицировать модель содержимого.

В этом примере иллюстрируется объявление пустого типа элемента:

<!ELEMENT IMG - O EMPTY>
  • объявляется тип элемента - IMG ;
  • дефис и последующая " O " означают, что конечный тег может быть опущен, но, в сочетании с моделью содержимого " EMPTY ", это значение усиливается: конечный тег должен отсутствовать;
  • ключевое слово " EMPTY " означает, что объект этого типа обязан не иметь содержимого.
Определение модели содержимого

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

  • имена допустимых или запрещённых типов элементов (напр., элемент UL содержит объекты типа элементов LI, а тип элемента P может не содержать других элементов P );
  • объекты ОТД (напр., элемент LABEL содержит объекты объекта-параметра " %inline; ");
  • текст документа (обозначаемый конструкцией SGML " #PCDATA "). Текст может содержать ссылки-мнемоники. Напоминаем, что они начинаются знаком & и заканчиваются точкой с запятой (напр., " Herg&eacute;'s adventures of Tintin " содержит мнемонику символа "e acute").

Синтаксис спецификации модели содержимого элемента следующий. Обратите внимание, что данный список является упрощённым по сравнению с полным синтаксисом SGML и не адресует, напр., старшинство.

( ... )

Ограничивает группу.

A

A должно появляться только однократно.

A+

A должно появляться один раз или более.

A?

A должно появляться 0 или 1 раз.

A*

A может появляться 0 или более раз.

+(A)

A может появляться.

-(A)

A не должно появляться.

A | B

Может появиться A или B, но не оба вместе.

A , B

Оба A и B должны появиться в данном порядке.

A & B

Оба A и B должны появиться в любом порядке.

Вот некоторые примеры ОТД HTML:

<!ELEMENT UL - - (LI)+>

Элемент UL должен содержать один или более элементов LI.

<!ELEMENT DL    - - (DT|DD)+>

Элемент DL должен содержать один или более элементов DT или DD в любом порядке.

<!ELEMENT OPTION - O (#PCDATA)>

Элемент OPTION может содержать только текст и мнемоники, такие как &amp; - это указано SGML типом данных #PCDATA.

Некоторые типы элементов HTML используют дополнительные возможности SGML для того, чтобы исключить элементы из их модели содержимого. Исключаемым элементам предшествует дефис. Явные исключения переопределяют допустимые элементы.

В этом примере -(A) означает, что элемент A не может появляться в другом элементе A (т.е. якоря не могут быть вложенными).

<!ELEMENT A - - (%inline;)* -(A)>

Заметьте, что тип элемента A является частью ОТД объекта-параметра " %inline; ", но явно исключён, поскольку указано -(A).

Таким же образом, следующее объявление типа элемента FORM запрещает вложение форм:

<!ELEMENT FORM - - (%block;|SCRIPT)+ -(FORM)>
< Лекция 2 || Лекция 3: 123 || Лекция 4 >
Ирина Кириллова
Ирина Кириллова

Нажимаю на ссылку на дополнительный материал и дополнение к информации-меня возвращает на первую страницу лекции. Подскажите, что делать? Или дополнительный материал платный?

Марина Дайнеко
Марина Дайнеко
Россия, Moscow, Nope, 2008
Анатолий Федоров
Анатолий Федоров
Россия, Москва, Московский государственный университет им. М. В. Ломоносова, 1989