問題: 如何讓xjc/Jaxb爲包含重複的elementdefinitions的幾個模式在相同的命名空間中生成propper javaclasses?使用JAXB編譯幾個包含同一元素的重複定義
信息: 我有三個.xsd模式:A,B和C.都具有相同的目標名空間。 他們都是給我的3種shemas,我不可能以任何方式改變它們。
它們A具有一些元件,其也於B或C中發現(但A具有許多自聲明的元素爲好) 實施例:這是相同的「代碼」爲A和C:
<xs:simpleType name="y_ym_ymdDatoType">
<xs:union memberTypes="arcgYearType arcgYearMonthType arcDateType"/>
</xs:simpleType>
<xs:simpleType name="arcgYearType">
<xs:restriction base="xs:gYear">
<xs:minInclusive value="1700"/>
<xs:maxInclusive value="2100"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="arcgYearMonthType">
<xs:restriction base="xs:gYearMonth">
<xs:minInclusive value="1700-01"/>
<xs:maxInclusive value="2100-12"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="arcDateType">
<xs:restriction base="xs:date">
<xs:minInclusive value="1700-01-01"/>
<xs:maxInclusive value="2100-12-31"/>
</xs:restriction>
</xs:simpleType>
當使用XJC將它們彙編成javaclasses,我得到下面的異常:
[ERROR] 'y_ym_ymdDatoType' is already defined
line 297 of file:../c.xsd
[ERROR] (related to above error) the first definition appears here
line 309 of file:../a.xsd
和同樣發生在其他元素:arcgYearType,arcgYearMonthType和arcDateType。
我已閱讀關於可能可以解決這個問題的綁定文件,但我不知道如何做到這一點,所以示例將是高度優先的。
這是不是在它們出來時不會輕易地重命名XML元素,還是隻是重命名生成的javaclasses? – 2012-03-13 14:15:28
它重命名生成的java類。默認情況下,你會得到'FixedIncomeBook.java',並且通過這個綁定你可以得到'PartyFixedIncomeBook.java' – 2012-03-13 14:21:11
我得到:[ERROR]不受支持的綁定命名空間「」。也許你的意思是「http://java.sun.com/xml/ns/jaxb/xjc」?文件第4行:/../ C.xsd 第4行是模式定義: 你可以說出了什麼問題嗎? –
2012-03-13 15:05:10