我想通过绑定.xjb
文件来覆盖我的架构包。
它的完成方式是:
<schemaBindings>
<package name="com.schema.common" />
</schemaBindings>
JXC编译器希望通过schemaLocation
定义上述代码的上下文。
我将.xsd
和.xjb
文件存储在单独的目录中,这看起来很难看(就像所有Java EE一样):
<bindings schemaLocation="../../../../wsdl/common_v47_0/CommonReqRsp.xsd">
<schemaBindings>
<package name="com.schema.common" />
</schemaBindings>
</bindings>
是否可以在bindings
中定义schemaLocation
上下文而没有相对路径?
我怕XML Catalogs,我们处于WEB 2.0(或者可能是4.0?)世界中。
我见过SCD ("schema component designator")。看起来很有希望,但是我找不到这种语法的参考...
答案 0 :(得分:1)
这是SCD的魔力:
<?xml version="1.0" encoding="UTF-8"?>
<bindings xmlns="http://java.sun.com/xml/ns/jaxb" version='2.1'
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:tns="http://example/schema/common_v47_0">
<bindings scd="x-schema::tns">
<schemaBindings>
<package name="com.schema.common" />
</schemaBindings>
</bindings>
</bindings>
所有部分都很重要。 SCD是在version='2.1'
中引入的。
我在https://github.com/highsource/maven-jaxb2-plugin/wiki/Configure-Target-Packages-in-Binding-Files找到了参考
SCD是JAXB标准的扩展,可以在JAXB RI源树中研究其实现: