Возьмите следующее вместо упрощенного XSD:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="com.acme" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Widget">
<xs:complexType>
<xs:sequence>
<xs:element
minOccurs="0" name="color" nillable="true" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="WidgetColor" type="xs:string" />
</xs:schema>
Затем попробуйте следующее:
xjc test.xsd
Вы всегда должны получить следующее исключение:
parsing a schema...
compiling a schema...
[ERROR] Two declarations cause a collision in the ObjectFactory class.
line 11 of file:/C:/test.xsd
[ERROR] (Related to above error) This is the other declaration.
line 7 of file:/C:/test.xsd
Failed to produce code.
Обратите внимание, что существует элемент с именем Widget, который является сложным типом и имеет элементы с именами "color". На том же уровне, что и элемент "Widget", есть простой элемент с именем "WidgetColor".
Что более загадочно, так это то, что если вы удаляете атрибут minOccurs="0" ИЛИ вы удаляете атрибут nillable ="true" из последовательности элементов "color", xjc успешно компилирует схему.
Кто-нибудь когда-либо видел эту проблему или может предложить решение?
Спасибо,
Майк.