我的项目中有3个XSD。命名空间中的两个" A"一个在命名空间" B"。
我想在一个包中生成XSD-1,XSD-2(相同的命名空间)。 然后将XSD-3生成到不同的包中。
我试图通过bindings.xjb文件来做到这一点。
如果我宣布
<jxb:bindings schemaLocation="xsd1-namespaceA.xsd">
<jxb:schemaBindings>
<jxb:package name="com.xsdPrimary" />
</jxb:schemaBindings>
</jxb:bindings>
<jxb:bindings schemaLocation="xsd2-namespaceA.xsd">
<jxb:schemaBindings>
<jxb:package name="com.xsdPrimary" />
</jxb:schemaBindings>
</jxb:bindings>
<jxb:bindings schemaLocation="xsd3-namespaceB.xsd">
<jxb:schemaBindings>
<jxb:package name="com.xsdSecondary" />
</jxb:schemaBindings>
</jxb:bindings>
然后我收到错误:
com.sun.istack.SAXParseException2: Multiple <schemaBindings> are defined for the target
namespace "http://www.jeff-test.org/namespaceA/"
如果我删除绑定文件中的前两个条目,那么生成工作,但它将我的所有类放在名为&#34; jeff-test.namespaceA&#34;的包中。对于namespaceA和包中的namespaceB的所有那些&#34; com.xsdSecondary&#34;。
我想将namespace-A中的所有类放到一个包中,将所有来自namespace-B的类放到另一个包中。
这可能吗?
答案 0 :(得分:3)
为目标命名空间“http://www.jeff-test.org/namespaceA/”
定义了多个如果我删除绑定文件中的前两个条目,那么生成工作,但它将我的所有类放在名为“jeff-test.namespace”的包中,用于namespaceA ......
只删除namespaceA
的其中一个条目。删除两者背后的逻辑是什么?
<jxb:bindings schemaLocation="xsd1-namespaceA.xsd">
<jxb:schemaBindings>
<jxb:package name="com.xsdPrimary" />
</jxb:schemaBindings>
</jxb:bindings>
<jxb:bindings schemaLocation="xsd3-namespaceB.xsd">
<jxb:schemaBindings>
<jxb:package name="com.xsdSecondary" />
</jxb:schemaBindings>
</jxb:bindings>
schemaBindings
被认为是每个命名空间一次,它绑定到哪个模式文件并不重要(只要该文件是编译的一部分)。