DTD, которое создавалось до сих пор, является весьма специфичным. Каждый элемент должен появляться один раз и точно в таком порядке. Единственным исключением из этого является location, где должен появляться либо place, либо description, но не оба вместе.
Модификаторы предлагают большую гибкость в проекте. Они таковы:
Код, приведенный ниже, показывает 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, если нужно.