【问题标题】:XJC binding file: override package based on namespace instead of schemaLocationXJC 绑定文件:基于命名空间而不是 schemaLocation 覆盖包
【发布时间】:2022-04-30 06:17:35
【问题描述】:

我想通过绑定 .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>

是否可以在schemaLocation 中定义没有相对路径的bindings 上下文?

我见过SCD ("schema component designator")。它看起来很有希望,但我找不到此语法的参考...

【问题讨论】:

    标签: jaxb xjb


    【解决方案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 源代码树中研究实现:

    【讨论】:

    • x-schema 部分是什么?我找不到任何关于它的文档。如果你知道它在哪里,你能提供一个文档链接吗?
    • Metro JAXB 实现的神奇常量:github.com/eclipse-ee4j/jaxb-ri/search?q=x-schema
    • 谢谢。我希望我能更多地了解他们为什么使用 x-schema 常量,因为模式组件指示符 (SCD) 标准 (w3.org/TR/xmlschema-ref) 没有提及 x-schema。
    • 在我尝试阅读 Metro 中的 SCD 时,我发现该实现缺少一些功能,并且多年来没有人对其进行更新。它是非标准的,可能被视为“死”功能。
    猜你喜欢
    • 2023-03-25
    • 2015-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多