我的问题是我有两个Schemas A.xsd B.xsd
他们都拥有相同的根,我会尝试举例说明
A.xsd
<xs:element name="A">
<xs:complexType>
.my elements on A
</xs:complexType>
</xs:element>
B.xsd
<xs:element name="A">
<xs:complexType>
.my elements on B
</xs:complexType>
</xs:element>
当我尝试生成类时,输出是元素'A'已经定义。 所以我创建了一个Binding文件,它定义为xsd A,为元素A创建一个C类,而xsd B为元素A创建一个D类
X.xjb
<bindings schemaLocation="A.xsd">
<bindings node="//xs:element[@name='A']">
<class name="C">
</bindings>
</bindings>
<bindings schemaLocation="B.xsd">
<bindings node="//xs:element[@name='A']">
<class name="D">
</bindings>
</bindings>
但没有工作,它输出相同的错误,'A'已经定义,所以我尝试使用属性而不是绑定文件上的类。
X.xjb
<bindings schemaLocation="A.xsd">
<bindings node="//xs:element[@name='A']">
<property name="C">
</bindings>
</bindings>
<bindings schemaLocation="B.xsd">
<bindings node="//xs:element[@name='A']">
<property name="D">
</bindings>
</bindings>
,也没有工作
他们没有targetNamespace
有人做过这样的事吗?
答案 0 :(得分:2)
只需指定他们to different Java packages就可以了。
<jxb:schemaBindings>
<jxb:package name="primer.myPo">
<jxb:javadoc>
<![CDATA[<body> Package level documentation for generated package primer.myPo.</body>]]>
</jxb:javadoc>
</jxb:package>
<jxb:nameXmlTransform>
<jxb:elementName suffix="Element"/>
</jxb:nameXmlTransform>
</jxb:schemaBindings>