Контекст: я генерирую Java-классы из файлов xsd с помощью плагина maven-jaxb. Все мои файлы .xsd находятся в одном месте - каталоге src / main / resource.
Проблема: все работает нормально, когда xsd не ссылается на / импортирует другие xsd с другим целевым пространством имен. Однако, когда следующий xsd ниже (с targetNamespace = "http://www.companyA.com/someservice") импортирует другое xsd filename.xsd из другого пространства имен (namespace =" http://www.companyB.com/"),), я получаю вышеуказанную ошибку: Невозможно разрешить имя xxx в определении типа (n) ' 'компонент.
Редактировать: имя элемента в текущем xsd-файле - «entityName», а его тип - «companyB: entityName» (т.е.), имена совпадают.
Затем я попытался вызвать xjc для этого файла из командной строки, и это сгенерировало классы Java правильно. Я также позаботился о том, чтобы в Eclipse я мог кликать / проверять источник ctrl на «type =» companyCdm: entityName », который правильно открывает файл filename.xsd. Однако по какой-то причине maven не может получить к нему доступ.
Вопрос: Что мне не хватает? Почему этот случай (2 пространства имен) отличается от работы с одним пространством имен?
Вот мой XSD:
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns="http://www.companyA.com/someservice"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:companyB="http://www.companyB.com/version"
targetNamespace="http://www.companyA.com/someservice"
elementFormDefault="qualified" attributeFormDefault="qualified">
<xsd:import namespace="http://www.companyB.com/version" schemaLocation="filename.xsd" />
<xsd:element name="MyName" type="MyType" />
<xsd:complexType name="MyType">
<xsd:annotation>
<xsd:documentation>
A list
</xsd:documentation>
</xsd:annotation>
<xsd:sequence>
<xsd:element name="entityName" type="companyB:entityName" maxOccurs="1" minOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>