次のような 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 ファイルはサード パーティによって管理されているため、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.