Действительный XML, Действительная схема. Где я ошибся? - PullRequest
2 голосов
/ 11 октября 2009

Когда-то у меня был действительный тип документа и действительный XML. Я положил первое поверх последнего, cntrl-s'd и вот: все было так, как должно быть. В настоящее время у меня есть действующая схема (специально созданная для моего еще действующего XML). Я попробовал тот же самый проверенный и верный подход, но, увы, безуспешно.

Я получаю разные ошибки с каждым другим валидатором, которым я пользуюсь, и все же новые ошибки от браузеров, в которые я его отправляю (но это имеет смысл). Так что я не уверен, что мне следует дать, чтобы быть наиболее полезным. Валидом говорит:

Не удается найти объявление элемента 'xs: schema'.

и

Разметка в документе после корневого элемента должна быть правильно сформирована.

(но это так!)

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

Спасибо!

Ответы [ 3 ]

3 голосов
/ 11 октября 2009

@ Nona Схема - это правильно сформированный документ, как и ваш экземпляр. Однако, если вы объединяете их, результат больше не является правильным.

Если то, что у вас есть:

<xs:schema ...>...</xs:schema>
<myxml ...>...</myxml>

это неправильно сформировано (без единого корневого элемента)

Причина, по которой подход DTD отличается, заключается в том, что внутреннее подмножество специально разрешено добавлять к корневому элементу. Итак:

<DOCTYPE myxml [
... my DTD ...
]>
<myxml ...>...</myxml>

хорошо сформирован.

К сожалению, связать схему с экземпляром не так просто. Возможно, вам придется взглянуть на xsi:schema-location.

UPDATE К сожалению, ответ будет зависеть от используемой вами программной среды. AFAIK нет способа упаковки документа и схемы, так что любое программное обеспечение будет принимать и пытаться проверить. Вот почему схемы требуют гораздо больше усилий, чем DTD.

Вот простой сайт, где вы можете отправить два документа и проверить.

Все, что находится за этим, может нуждаться в знании программного обеспечения. Будут разные подходы в зависимости от того, используете ли вы ORACLE, Microsoft и т. Д. Это может быть сделано путем вызова методов для загрузки документа, загрузки схемы, а затем проверки или установки свойств (как это может быть сделано в Xerces).

Ответ может зависеть от того, почему вы это делаете. Если вы отправляете документы владельцу схемы, у них, вероятно, будет система проверки. Если вам необходимо проверить чью-либо схему, вам потребуется программа проверки схемы и запустить ее. Вы на MS или Unix / Java?

БОЛЬШЕ ОБНОВЛЕНИЙ Предложите Каков наилучший способ проверки XML-файла по XSD-файлу? Как говорится, не существует сверхпростого подхода.

0 голосов
/ 11 октября 2009

Рискуя очевидным, вы можете рассмотреть причины, по которым валидатор не может найти объявление элемента xs: schema.

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

0 голосов
/ 11 октября 2009

Просто удар в темноте, но у вас есть префикс пространства имен схемы XML, объявленный в корневом элементе? Это xmlns: xs = "http://www.w3.org/2001/XMLSchema". Если префикс пространства имен не привязан к имени пространства имен, то документ недействителен.

...