2013-05-10 61 views
2

我的问题是,我有两个架构A.xsd B.xsd根元素已经被定义JAXB

它们共用同根生,我要去尝试例证

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'已经定义。 因此,我创建,定义为xsd甲绑定文件,对于元件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> 

,没有工作或者

他们没有一个目标名称

任何人做过这样的事情?

回答

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> 
+0

没有工作,同样的错误 – Mattos 2013-05-13 22:03:44

+0

@ user2370372,你能不能请张贴XJC命令行或参数等? – 2013-05-14 18:04:08

+0

当然,我使用的参数是-npa和-b mybindingfile.xjb – Mattos 2013-05-15 12:32:55