Chase N.Проверка правильности XML

       

Модификаторы (*,+ и ?)


DTD, которое создавалось до сих пор, является весьма специфичным. Каждый элемент должен появляться один раз и точно в таком порядке. Единственным исключением из этого является location, где должен появляться либо place, либо description, но не оба вместе.

Модификаторы предлагают большую гибкость в проекте. Они таковы:

  • * : Элемент, определенный с модификатором *, может появляться 0 или более раз.
  • + : Элемент, определенный с модификатором +, должен появляться 1 или более раз.
  • ? : Элемент, определенный с модификатором ?, должен появляться 0 или 1 раз.

Код, приведенный ниже, показывает DTD, модифицированный таким образом, что количество элементов memory является неограниченным. Он также показывает, что требуется хотя бы один элемент subject, но допускается и более одного. Наконец, элемент donor не является обязательным, но если оно есть, оно может появляться только один раз. Немодифицированные элементы должны появляться один и только один раз.

<!DOCTYPE memories [ <!ELEMENT memories (memory)* > <!ELEMENT memory (media, subdate, donor?, subject+,

location) > <!ELEMENT subdate (#PCDATA) > <!ELEMENT donor (#PCDATA) > <!ELEMENT subject (#PCDATA) > <!ELEMENT location (place | description) > <!ELEMENT description (#PCDATA) > <!ELEMENT place (#PCDATA) > <!ELEMENT media EMPTY > ]>

Заметьте, что это ограничения на элемент. Элемент donor может появляться только один раз в элементе memory, но может появляться в каждом экземпляре memory, если нужно.



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