В настоящее время я пытаюсь скомпилировать с помощью JAXB (IBM build 2.1.3) пару файлов схемы в один пакет. Каждый будет компилироваться сам по себе, но при попытке скомпилировать их вместе я получаю конфликт имен элементов из-за включений. Мой вопрос; есть ли способ указать с помощью внешней привязки разрешение конфликта имен.
Примеры файлов следуют. В примере нарушающий элемент называется «Общий», который определен как в incA, так и в incB:
incA.xsd
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/"
xmlns:tns="http://www.example.org/" elementFormDefault="qualified">
<complexType name="TypeA">
<sequence>
<element name="ElementA" type="string"></element>
</sequence>
</complexType>
<!-- Conflicting element -->
<element name="Common" type="tns:TypeA"></element>
</schema>
incB.xsd
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/"
xmlns:tns="http://www.example.org/" elementFormDefault="qualified">
<complexType name="TypeB">
<sequence>
<element name="ElementB" type="int"></element>
</sequence>
</complexType>
<!-- Conflicting element -->
<element name="Common" type="tns:TypeB"></element>
</schema>
A.xsd
<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="http://www.example.org/"
elementFormDefault="qualified" xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:tns="http://www.example.org/">
<include schemaLocation="incA.xsd"></include>
<complexType name="A">
<sequence>
<element ref="tns:Common"></element>
</sequence>
</complexType>
</schema>
B.xsd
<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="http://www.example.org/"
elementFormDefault="qualified" xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:tns="http://www.example.org/">
<include schemaLocation="incB.xsd"></include>
<complexType name="B">
<sequence>
<element ref="tns:Common"></element>
</sequence>
</complexType>
</schema>
Ошибка компилятора, когда оба скомпилированы из одного вызова xjb:
[ERROR] 'Common' is already defined line 9 of file:/C:/temp/incB.xsd [ERROR] (related to above error) the first definition appears here line 9 of file:/C:/temp/incA.xsd
(Для справки, это обобщение для решения проблемы с компиляцией пакета OAGIS8 SP3)