Действительный XML, Действительная схема.Где я ошибся?

StackOverflow https://stackoverflow.com/questions/1551164

Вопрос

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

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

Невозможно найти объявление элемента «xs:schema».

и

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

(но это!)

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

Спасибо!

Это было полезно?

Решение

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

Если у вас есть:

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

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

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

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

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

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

ОБНОВЛЯТЬК сожалению, ответ будет зависеть от используемой вами программной платформы.AFAIK нет способа упаковать документ и схему так, чтобы любое программное обеспечение могло принять и попытаться проверить.Вот почему схемы требуют гораздо больше усилий, чем DTD.

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

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

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

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

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top