6
看看下面的過度簡化XSD:幫助請:XJC拋出「兩個聲明引起ObjectFactory類碰撞」
<?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」 OR您從「色」元素序列中刪除屬性的nillable =「真」,XJC編譯模式成功。
有沒有人見過這個問題或可以提出解決方案?
謝謝,
邁克。