Расширяемый язык разметки

       

Модели содержимого элемента




[47] children    ::=    ( | ) ('?' | '*' | '+')?
[48]    cp    ::=    ( | | ) ('?' | '*' | '+')?
[49]    choice    ::=    '(' ? ( ? '|' ? )+ ? ')' /* */
/* */
[50]    seq    ::=    '(' ? ( ? ',' ? )* ? ')' /* */

где каждая запись - это тип элемента, который может выступить в роли . Любой фрагмент содержимого в списке выбора может быть помещен в в то место, где согласно грамматике располагался соответствующий список выбора. Все фрагменты содержимого в последовательном списке должны быть вставлены в и именно в том прядке, как они были представлены в исходном списке. Необязательный символ, следующий за именем (или списком), указывает, должен ли данный элемент (или фрагменты из данного списка) быть повторен один или более раз (+), нуль или более раз (*), либо нуль или один раз (?). Отсутствие такого оператора означает, что данный элемент (или фрагмент) должен появиться ровно один раз. Представленный синтаксис и его значение те же самые, что используются в сценариях самой спецификации.

Содержимое элемента соответствует модели содержания тогда и только тогда, когда можно проследить способ его получения из этой модели в соответствии с операторами последовательности, выбора и повторения, а также такой, что каждый элемент в содержании соответствует типу элемента в модели содержания. Если какой-либо элемент в документе может быть сопоставлен нескольким типам элементов в модели содержания, то для сохранения процессор должен фиксировать ошибку. За дополнительной информацией обращайтесь к Приложению .

Ограничение действительности: Правильная вложенность Group/PE

для сущности параметра должен иметь правильно вложенные группы скобок. Иными словами, если в конструкциях , или открывающая или закрывающая скобка была включена в текст замены для , то в этот текст должна попадать и вторая парная скобка.

Если в конструкциях , или обнаружена ссылка на сущность параметра, то, , ее текст замены должен содержать хотя бы один символ, отличный от пробела. И ни первый, ни последний символ в тексте замены, отличный от пробела, не должен быть соединителем (| или ,).

Примеры моделей содержимого элемента:

<!ELEMENT spec (front, body, back?)> <!ELEMENT div1 (head, (p | list | note)*, div2*)> <!ELEMENT dictionary-body (%div.mix; | %dict.mix;)*>



Содержание раздела