Опубликован: 19.05.2006 | Доступ: свободный | Студентов: 10204 / 1645 | Оценка: 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 >
Ирина Кириллова
Ирина Кириллова

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