我有一组 XSD 文件,如下:
- http://www.iana.org/assignments/xml-registry/schema/contact-1.0.xsd
- http://www.iana.org/assignments/xml-registry/schema/domain-1.0.xsd
- http://www.iana.org/assignments/xml-registry/schema/epp-1.0.xsd
- http://www.iana.org/assignments/xml-registry/schema/eppcom-1.0.xsd
- http://www.iana.org/assignments/xml-registry/schema/host-1.0.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.