Мой совет - подобрать надежный парсер проверки, например, AltovaXML (Community Edition) очень прост в использовании:
altovaxml -validate document.xml
Давайте посмотрим, что не так с вашим DTD.Прежде всего, ваш элемент документа (корневой) не называется book
, поэтому мы получили первую ошибку здесь:
Ошибка в ссылочной схеме или DTD.Элемент не соответствует имени корневого элемента 'book' из DTD.
Во-вторых, heading
не объявлено:
Элемент не был объявлен.
Наконец, чтобы разрешить смешанный контент поставить выбор с #PCDATA
(что означает анализируемые символьные данные) сначала и heading
элемент:
Наконец, ваш DTD:
<!DOCTYPE note [
<!ELEMENT note (page)>
<!ELEMENT page (#PCDATA | heading)*>
<!ELEMENT heading (#PCDATA)>
]>