Как сделать этот простой документ действительным - PullRequest
0 голосов
/ 29 августа 2009

<DB>

<foo />

<bar />

</DB>

У меня есть одна проблема - когда я начинаю синтаксический анализ (DOM), он говорит, что документ недействителен. Я проверил, что не так, и проблема:

Line: 4 
Column: 6

Error:  Can not find declaration of element 'DB'.

Error Position: <DB> 

Пожалуйста, помогите:)

Ответы [ 2 ]

2 голосов
/ 29 августа 2009

XML-документы должны правильно сформированы и должны быть действительными . Синтаксический анализатор (почти) никогда не примет документ, который не является правильно сформированным, и (большинству) анализаторы могут получить указание проверить действительность документов.

Документ является правильно сформированным , если он следует всем синтаксическим правилам, помеченным как правила правильной формы в спецификации XML. Это касается правильного открытия и закрытия тегов, правильного использования атрибутов и т. Д.

Документ является действительным , если он не только правильно сформирован, но и соответствует грамматике, определенной в его собственной схеме, которая может быть либо определением типа документа (DTD), либо определением схемы XML ( XSD).

В вашем случае документ, очевидно, правильно сформирован и, поскольку он не ссылается на схему, он не является недействительным.

Возможно, проблема в том, что вы сказали парсеру проверить документ, что просто невозможно, потому что нет схемы. Хотя, если бы это было так, сообщение об ошибке было бы ужасно вводить в заблуждение ...

2 голосов
/ 29 августа 2009

Не зная о том, как вы анализируете документ, единственный совет, который я могу дать, заключается в том, что вашему синтаксическому анализатору, вероятно, требуется схема или DTD, который определяет элементы (все элементы: DB, foo и bar).

Если вы не хотите писать схему / DTD, другой вариант (если это возможно, использует ваш анализатор), чтобы запретить анализатору проверять файл. Некоторые реализации синтаксического анализатора позволяют вам указать флаг, который говорит ему не проверять документ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...