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

       

Смешанное содержимое в DTD


Одной из вариаций, которая не обсуждалась, являются элементы, которые имеют смешанное содержимое. Смешанное содержимое содержит и текст, и другие элементы. Хорошим примером является текст, содержащий разметку HTML. Рассмотрим следующий потенциальный subject:

<subject> A reading of Charles Dickens' <i>A Christmas Carol</i>. Absolutely marvelous! </subject>

Это то, что называют смешанным содержимым, потому что здесь есть и символьные данные, и элемент (<i></i>). Чтобы сделать его доступным для проверяющего парсера, должен быть определен элемент i, и элементу subject должно быть разрешено иметь любое число вариантов либо #PCDATA, либо i. Чтобы допустить общепринятую разметку, в DTD нужно иметь:

<!ELEMENT i (#PCDATA) > <!ELEMENT b (#PCDATA) > <!ELEMENT h1 (#PCDATA) > <!ELEMENT br EMPTY > <!ELEMENT p (#PCDATA) > <!ELEMENT subject (#PCDATA|i|b|h1|br|p)* >

Заметьте, что хотя это и порождает некоторые проблемы, в DTD нет способа ограничить порядок. Это тоже проблема, решенная в схеме XML.



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