Ошибка разрешения имени определения типа xjc

У меня возникают проблемы, когда я хочу скомпилировать свои XSD (автором которых я не являюсь) с помощью XJC.

В частности, я получаю сообщение об ошибке (на самом деле таких больше):

 [ERROR] src-resolve: Cannot resolve the name "ifopt:CountryRefStructure" to a(n) 'type definition' component.
   line 131 of file:/E:/ansdef/schema/siri-1.3/siri/siri_situationIdentity-v1.1.xsd

Это странно, так как упомянутый файл (siri_situationIdentity-v1.1.xsd) ссылается на другой XSD, где объявлен подозрительный тип.

Я пробовал несколько вещей

  • переключите версию Java, чтобы получить другой xjc
  • пробовал разные xjc прямо с java.net
  • применил некоторые изменения к файлам, чтобы удалить применяемые в настоящее время обходные пути JAXB, касающиеся включения/импорта.
  • пытался использовать весь каталог с зависимыми схемами в качестве цели для xjc
  • Генерация Java-кода Altova XMLSpy работает без ошибок (но мне это не подходит)

Ни один из них не работал.

Кто-нибудь знает, чем вызвано сообщение об ошибке? Я не вижу смысла. Вы можете получить все XSD прямо отсюда: Verband Deutscher Verkehrsunterehmen (VDV) - Ist-Daten- Шниттстеллен

Командная строка, которую я пробовал (среди прочего):

xjc -readOnly -d generated -npa -target 2.1 -verbose VDV453_incl_454_V2.3e.xsd

Любая помощь или подсказка приветствуется.

С Уважением


person Andreas    schedule 14.09.2012    source источник


Ответы (2)


Решение здесь состояло в том, чтобы использовать переключатель -nv для отключения строгой проверки.

person Andreas    schedule 15.10.2012

Сообщение об ошибке вызвано тем, что XJC не удалось успешно загрузить другой документ схемы. У вас есть несколько вариантов.

  • Документация xjc предполагает, что он принимает несколько аргументов командной строки, поэтому попробуйте указать все документы схемы, которые вы хотите, чтобы он читал, как аргументы командной строки.
  • Вы также можете попытаться выяснить, какой базовый URI он использует для разрешения относительных ссылок или (точнее)...
  • Вы можете (попытаться) выяснить, как сообщить XJC, какой базовый URI использовать.
  • Поскольку XJC также поддерживает XML-каталоги, вы можете использовать каталог, чтобы сообщить ему, где найти файлы, на которые ссылается ваш документ схемы верхнего уровня.
person C. M. Sperberg-McQueen    schedule 14.09.2012
comment
Будет ли тогда иметь значение, если я укажу каталог, в котором находятся все схемы и зависимые схемы? Я уже пробовал это без успеха. - person Andreas; 15.09.2012