我有一组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文件由第三方维护,因此我无法直接修改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.