Действительный XML, Действительная схема.Где я ошибся?
-
20-09-2019 - |
Вопрос
Когда-то у меня был действительный тип документа и действительный 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 не может быть найдено валидатором.
Вторая ошибка предполагает, что где-то не хватает угловой скобки или что некоторые элементы вложены неправильно.