помогите пожалуйста: xjc throws «Два объявления вызывают коллизию в классе ObjectFactory»

Возьмите следующее по упрощенному 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 », которое является сложным типом и имеет элементы с именем « цвет ». На том же уровне, что и элемент « Widget », существует также простой элемент с именем « WidgetColor ».

Еще больше озадачивает то, что если вы удалите атрибут minOccurs = "0" ИЛИ , вы удалите атрибут nillable = "true" из " color "последовательность элементов, xjc успешно компилирует схему.

Кто-нибудь когда-нибудь видел эту проблему или может предложить решение?

Спасибо,

Майк.

7
задан Mike 21 September 2011 в 00:04
поделиться