это мой первый вопрос, поэтому, пожалуйста, будьте осторожны;)
Я застрял со странной проблемой.По сути, я получаю три определения XSD, например, следующее:
PartA.xsd
targetNameSpace="PartA"
include="PartB.xsd"
PartB.xsd
<!-- no namespace definition!!! -->
PartC.xsd
targetNameSpace="PartC"
inlude="PartB.xsd"
import="PartA.xsd"
Ошибка появляется при связывании PartC через JAXB с классами Java:
- Класс/ интерфейс с тем же именем "b.exampleType" уже используется.Используйте настройку класса для разрешения этого конфликта.
- Эта запутанная ошибка произошла, скорее всего, потому, что схема использует технику, называемую «схема хамелеона», которая заставляет одно определение загружаться несколько раз в разные пространства имен.Подробнее об этом см. http://forums.java.net/jive/thread.jspa?threadID=18631.
По ссылке, как я выяснил, действительная ошибка находится в PartB, у которой нет объявления пространства имен!Этот метод называется Схема хамелеона .Определенные типы в PartB примут пространство имен импортирующего XSD .
Так что в моем случае есть два пространства имен для одного типа:
- "PartA"
- "PartC"
И это когда JAXB ломается.Я не нашел способа правильно связать PartC .И (чтобы все было сложнее) у меня есть шанс изменить исходные определения XSD!
Кто-нибудь сталкивался с этим явлением или чем-то подобным раньше и имеет ли подходящий для этого обходной путь?