Проверка XSD на основе содержимого XML - PullRequest
0 голосов
/ 27 марта 2012

У меня есть программа на Java, в которой я должен проверить сообщение XML по схеме XSD.Все идет нормально.Но теперь у меня появилось новое требование, когда часть проверки отличается в зависимости от содержимого сообщения XML.

Таким образом, в зависимости от значения одного поля (1) некоторые поля допускают ноль или нет, а некоторые перечисленияразные.Однако я не могу разобрать документ перед проверкой ... так как мне с этим справиться?

1) Имеют 2 разных XSD-файла, обрабатывают XML как текст (= некрасиво) и извлекают одно поле длярешить, какой XSD следует использовать?

2) 3 разных XSD-файла.2 разных варианта и один союз, чтобы мы могли проверить таким образом, чтобы это соответствовало 2 вариантам?Чем мы можем правильно проанализировать XML, извлечь поле и решить, какой более конкретный XSD использовать для дополнительной проверки?

3) Другие варианты?

Ответы [ 2 ]

1 голос
/ 02 апреля 2012

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

0 голосов
/ 30 марта 2012

Вы пишете свою собственную проверку Java? Я бы порекомендовал использовать открытый исходный код или платную проверку: Инструмент проверки XML-схемы (XSD)? Инструмент.

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

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