我正在使用 binding.xjb 将自定义绑定(bind)应用到 main.xsd。工作正常。
我想分解 main.xsd 以包含“common.xsd”,但这样做会破坏我的绑定(bind).xjb。
示例:下面是我的绑定(bind).xjb(出价之一)
<jaxb:bindings node="/xsd:schema/xsd:complexType[@name='Job']/xsd:attribute[@name='stagingId']">
<jaxb:property generateIsSetMethod="true"/>
</jaxb:bindings>
如果我必须将元素“Job”移动到 common.xsd,我应该如何更改此绑定(bind)?
我已经尝试了以下方法,但不起作用
// Because noew "common.xsd" will have its own "xsd:schema" element
node="/xsd:schema/xsd:schema/xsd:complexType[@name='Job']/xsd:attribute[@name='stagingId']"
node="//xsd:complexType[@name='Job']/xsd:attribute[@name='stagingId']"
据我了解 - 技巧是编写适当的 XPATH 来到达该节点。
任何指点都将受到高度赞赏。
卡雷普尔
更新:我发现这些自定义绑定(bind)可以内联移动到定义元素的位置。
最佳答案
您可以利用剧集文件来实现此目的。当您从导入您之前生成的类的另一 XML 模式生成类时,情节文件允许您重用从一个 XML 模式生成的工件。
下面是如何生成剧集文件的示例。
xjc -b binding1.xml -episode common.episode common.xsd
下面是如何使用剧集文件的示例。
xjc -d out main.xsd -extension -b common.episode
完整示例
关于java - 将外部自定义绑定(bind)应用于包含的架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14244609/