1

同じメンバーに対して同じ complexType 定義を含む包括的な XSD がいくつかあります。各 XSD には独自の名前空間があります。したがってxjc、xsds で実行すると、各名前空間で同じ complexType クラスが生成されます。

これは、非常に紛らわしく、処理が複雑になります。XSD の 1 つに対して complexType を生成せず、他の xsd によって既に生成されているクラスを使用するよう XJC に指示するバインディングを作成したいと考えています。

私は成功せずに次のことを試しました:

   <jaxb:bindings schemaLocation="../xsd/sandboxlist.xsd">
        <jaxb:bindings node="/xsd:schema">
            <jaxb:schemaBindings>
                <jaxb:package name="com.domain.schema.model.v4_0.sandboxlist"/>
            </jaxb:schemaBindings>
        </jaxb:bindings>
        <jaxb:bindings node="//xsd:complexType[@name='SandboxType']">
            <jaxb:class name="com.domain.schema.model.v4_0.sandboxinfo.SandboxType" />
        </jaxb:bindings>
    </jaxb:bindings>

XJC にSandboxType、sandboxlist.xsd が実際にはクラスcom.domain.schema.model.v4_0.sandboxinfo.SandboxType(別の XSD からのもの) である必要があることを伝えたいと考えています。

これの適切な構文は何ですか?

4

1 に答える 1

1

これは次の方法で実現できますjaxb:class/@ref

<jaxb:class ref="com.domain.schema.model.v4_0.sandboxinfo.SandboxType" />

しかし、より良いのは、エピソードを使用することです。CLI パラメータを使用して生成し-episode、JAR をxjcコマンド ラインに追加します。

于 2015-09-24T19:01:22.773 に答える