Определение модели содержимого
Модель содержимого указывает, что может содержать в себе объект данного типа элементов. Определение модели содержимого может включать:
содержит объекты типа элементов LI, а тип элемента P
может не содержать других элементов P);
Синтаксис спецификации модели содержимого элемента следующий. Обратите внимание, что данный список является упрощённым по сравнению с полным синтаксисом 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 может содержать только текст и мнемоники, такие как & - это указано SGML типом данных #PCDATA.
Некоторые типы элементов HTML используют дополнительные возможности SGML для того, чтобы исключить элементы из их модели содержимого. Исключаемым элементам предшествует дефис. Явные исключения переопределяют допустимые элементы.
В этом примере -(A) означает, что элемент A
не может появляться в другом элементе A
(т.е. якоря не могут быть вложенными).
<!ELEMENT A - - (%inline;)* -(A)>
Заметьте, что тип элемента A является частью ОТД объекта-параметра "%inline;", но явно исключён, поскольку указано -(A).
Таким же образом, следующее объявление типа элемента
FORM запрещает вложение форм:
<!ELEMENT FORM - - (%block;|SCRIPT)+ -(FORM)>