定义包时为目标命名空间定义了多个<schemaBindings>

Multiple <schemaBindings> are defined for the target namespace when defining package

我的项目中有 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/"

如果我删除绑定文件中的前两个条目,那么生成工作正常,但它会将我所有的 类 放在一个名为 "jeff-test.namespaceA" 的包中,用于命名空间 A 和所有来自命名空间 B 的包包裹 "com.xsdSecondary".

我想将命名空间-A 中的所有 类 放入一个包中,将命名空间-B 中的所有 类 放入另一个包中。

这可能吗?

Multiple are defined for the target namespace "http://www.jeff-test.org/namespaceA/"

如果我删除绑定文件中的前两个条目,那么生成工作正常,但它会将我所有的 类 放入一个名为 "jeff-test.namespaceA" 的包中,用于命名空间 A...

只需删除 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 每个命名空间被认为一次,它绑定到哪个模式文件并不重要(只要该文件是编译的一部分)。