Основы XML


   Смотрите подготовка тут.        

Задание содержимого элемента - часть 3


<!ELEMENT MOUNTAIN (NAME+, HEIGHT?, STATE)>

Таким образом, следующий элемент будет правильным:

<MOUNTAIN> <NAME>Pueblo Peak</NAME> <NAME>Taos Mountain</NAME> <STATE>New Mexico</STATE> </MOUNTAIN>

Другой пример: следующее объявление означает, что вы можете включить несколько или ни одного дочернего элемента STAR, либо один дочерний элемент NARRATOR, либо один дочерний элемент INSTRUCTOR:

<!ELEMENT FILM (STAR* | NARRATOR | INSTRUCTOR)>

Соответственно, каждый из следующих трех элементов будет корректным:

<FILM> <STAR>Tom Hanks</STAR> <STAR>Meg Ryan</STAR> </FILM> <FILM> <NARRATOR>Sir Gregory Parsloe</NARRATOR> </FILM> <FILM/>

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

<!ELEMENT FILM (STAR | NARRATOR | INSTRUCTOR)+>

Такое объявление делает корректными следующие элементы:

<FILM> <NARRATOR>Bertram Wooster</NARRATOR> <STAR>Sean Connery</STAR> <NARRATOR>Plug Basham</NARRATOR> </FILM> <FILM> <STAR>Sean Connery</STAR> <STAR>Meg Ryan</STAR> </FILM> <FILM> <INSTRUCTOR>Stinker Pike</INSTRUCTOR> </FILM>

Наконец, вы можете формировать более сложные модели содержимого путем вложения выборочной модели содержимого внутрь последовательной модели, либо последовательной модели в выборочную модель. Например, следующее DTD задает, что каждый элемент FILM должен иметь один дочерний элемент TITLE; за ним должен следовать один дочерний элемент CLASS; после него должен идти один дочерний элемент STAR, NARRATOR или INSTRUCTOR:

<!DOCTYPE FILM [ <!ELEMENT FILM (TITLE, CLASS, (STAR | NARRATOR | INSTRUCTOR) )> <!ELEMENT TITLE (#PCDATA)> <!ELEMENT CLASS (#PCDATA)> <!ELEMENT STAR (#PCDATA)> <!ELEMENT NARRATOR (#PCDATA)> <!ELEMENT INSTRUCTOR (#PCDATA)> ] >




Содержание  Назад  Вперед