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


如果删除绑定文件中的前两个条目,则生成工作,但是它将我的所有类都放在名称空间A的名为“ jeff-test.namespaceA”的包中,并将所有来自名称空间B的包放在“ com.xsdSecondary”包中。

我希望将所有从名称空间-A的类放入一个程序包,并将所有从名称空间-B的所有类导入另一个程序包。

这可能吗?

最佳答案

为目标名称空间“ http://www.jeff-test.org/namespaceA/”定义了多个
  
  
  如果我删除绑定文件中的前两个条目,则生成工作正常,但是它将我所有的类都放在一个名为namespaceA的名为“ jeff-test.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视为一次,绑定到哪个架构文件都没有关系(只要该文件是编译的一部分)。

08-28 17:18