3

我有一组 XSD 文件,如下:

它们中的大多数相互依赖,因此我创建了以下目录文件以允许 JAXB 编译器 (XJC) 生成类。

<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
    <public publicId="urn:ietf:params:xml:ns:contact-1.0" uri="contact-1.0.xsd"/>
    <public publicId="urn:ietf:params:xml:ns:domain-1.0" uri="domain-1.0.xsd"/>
    <public publicId="urn:ietf:params:xml:ns:epp-1.0" uri="epp-1.0.xsd"/>
    <public publicId="urn:ietf:params:xml:ns:eppcom-1.0" uri="eppcom-1.0.xsd"/>
    <public publicId="urn:ietf:params:xml:ns:host-1.0" uri="host-1.0.xsd"/>
    <public publicId="urn:ietf:params:xml:ns:rgp-1.0" uri="rgp-1.0.xsd"/>
</catalog>

不幸的是,一些生成的类名之间存在一些冲突,我必须解决这些冲突 - 根据一些研究,我需要创建一个外部绑定文件。

我想为从每个 XSD直接生成的所有类添加前缀。

导入的 XSD 应该被忽略(例如 epp-1.0 导入 eppcom-1.0.xsd),因为如果我对每个 XSD 重复该过程,它们就已经生成了。(即如果可能,以 XSD 命名空间为前缀)

有谁知道我该如何解决这个问题?

由于 XSD 文件由第 3 方维护,因此我没有直接修改 XSD 的选项。我尝试了以下外部绑定,但它不起作用:

<jxb:bindings version="2.0"
              xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
              xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <jxb:bindings scd="x-schema:epp" node="/xs:schema">
        <jxb:schemaBindings>
            <jxb:nameXmlTransform>
                <jxb:typeName prefix="Epp" />
                <jxb:elementName prefix="Epp" />
                <jxb:modelGroupName prefix="Epp" />
                <jxb:anonymousTypeName prefix="Epp" />
            </jxb:nameXmlTransform>
        </jxb:schemaBindings>
    </jxb:bindings>
    <jxb:bindings scd="x-schema:eppcom" node="/xs:schema">
        <jxb:schemaBindings>
            <jxb:nameXmlTransform>
                <jxb:typeName prefix="EppCom" />
                <jxb:elementName prefix="EppCom" />
                <jxb:modelGroupName prefix="EppCom" />
                <jxb:anonymousTypeName prefix="EppCom" />
            </jxb:nameXmlTransform>
        </jxb:schemaBindings>
    </jxb:bindings>
</jxb:bindings>

输出:

parsing a schema...
[ERROR] XPath evaluation of "/xs:schema" results in empty target node
line 4 of file:/C:/Users/Jin%20Kim/workspace/registry/server/src/main/resources/xsd/bindings.xjb

[ERROR] XPath evaluation of "/xs:schema" results in empty target node
line 14 of file:/C:/Users/Jin%20Kim/workspace/registry/server/src/main/resources/xsd/bindings.xjb

Failed to parse a schema.
4

0 回答 0