В объявлении элемента вы указываете, что может появиться в качестве содержимого этого элемента Если вам нужно объявить элемент, который не должен содержать никаких данных, вы можете использовать тип EMPTY (например, <!ELMENT img EMPTY>).
Хороший пример пустого элемента — элемент HTML img Чтобы этот элемент не нарушал принципа допустимости документа XML, нужно использовать синтаксис, определенный для пустого элемента XML:
<img src="mycar.jpg" />Если вам нужно, чтобы в элементе были только данные PCDATA, используется следующее объявление:
<!ELEMENT mymemoirs #PCDATA>Вы можете также указать, какие типы элементов могут появиться в элементе, в каком порядке и в каком количестве, как показано в следующем примере [My memoires — мои воспоминания, title — название, author — автор, philosophizing — философствования, sad_story — грустная история, funny_story — смешная история, lesson — наставление, conclusion — вывод — Примеч nepee ]:
<!ELEMENT mymemoires ( title, author, philosophizing, sad_story, funny_story, lesson, conclusion)>В данном примере каждый из приведенных типов элементов должен появиться один раз (и только раз) внутри элемента mymemories в том порядке, в котором они перечислены в объявлении.
ПРИМЕЧАНИЕ
Элементы, которые появляются в элементе mymemoires, называются его дочерними элементами, а сам элемент mymemoires называется родительским. Каждый элемент может быть дочерним по отношению к любому количеству других элементов в документе. Элементы, разделенные более чем одним уровнем в иерархической системе, называются внуками, правнуками и т. д. (или соответственно дедами, прадедами — в другом направлении). Также можно при описании взаимоотношений между элементами использовать термины «предок» и «потомок».
Вы можете создать более гибкие правила, используя операторы повторяемости. Ниже показаны три оператора:
? — элемент должен встретиться один раз или не встретиться ни разу;
+ — элемент должен встретиться один или более раз;
* — элемент может встретиться любое количество раз или не встретиться вовсе.
Ниже снова приведено объявление элемента mymemoirs, переписанное с использованием операторов повторяемости:
<!ELEMENT mymemoires (title, author, philosophizing+, sad_story*, funny_story*, lesson*, conclusion)>Вы также можете указать, что некоторые элементы могут появиться как альтернатива другим элементам (то есть что между ними нужно делать выбор) с помощью вертикальной черты (|):
<!ELEMENT mymemoires (title, author, philosophizing+, sad_story*, funny_story*, lesson+| conclusion)>В этом объявлении элемент mymemoirs может содержать один или более элементов lesson или conclusion, но не оба одновременно. Еще более сложные правила можно создавать с использованием вложенных скобок. В листинге 1.4 показано, как может выглядеть определение mymeroirs.dtd [Paragraph - абзац, letter — письмо. — Примеч. перев. ].