web-dev-qa-db-ja.com

xjcの外部バインディングファイルを作成する方法

JAXBのドキュメント xjc はこう言っています:

-b処理する1つ以上の外部バインディングファイルを指定します。 (各バインディングファイルには、独自の「-b」スイッチが必要です。)外部バインディングファイルの構文は、非常に柔軟です。複数のスキーマのカスタマイズを含む単一のバインディングファイルがあるか、カスタマイズを複数のバインディングファイルに分割できます。

   xjc schema1.xsd schema2.xsd schema3.xsd -b bindings123.xjb

   xjc schema1.xsd schema2.xsd schema3.xsd 
         -b bindings1.xjb -b bindings2.xjb -b bindings3.xjb 

また、コマンドラインでのスキーマファイルとバインディングファイルの順序は重要ではありません。

しかし、この「外部バインディングファイル」のドキュメントはどこにありますか?

16
tangens

外部バインディングファイルは、Oracle.comの Customizing JAXB Bindings ページに記載されています。

見積もり:

外部バインディングカスタマイズファイル

バインディング宣言を含む外部ファイルを使用して行われたJAXBバインディングのカスタマイズは、以下に示す一般的な形式を取ります。

<jxb:bindings schemaLocation = "xs:anyURI">
   <jxb:bindings node = "xs:string">*
      <binding declaration>
   <jxb:bindings>
</jxb:bindings> 

schemaLocationは、リモートスキーマノードへのURI参照です。指定されたバインディング宣言が関連付けられているschemaLocation内のスキーマノードを識別するXPath 1.0式です。たとえば、JAXBバインディング宣言ファイルの最初のschemaLocation/node宣言は、スキーマ名とルートスキーマノードを指定します。

<jxb:bindings schemaLocation="po.xsd" node="/xs:schema"> 

後続のschemaLocation/node宣言は、たとえば上記のスキーマのZipCodeTypeという名前のsimpleType要素の場合、次の形式になります。

<jxb:bindings node="//xs:simpleType[@name='ZipCodeType']"> 

も参照してください。 JAXBコンパイラオプション


外部バインディングファイルに関する情報のもう1つの優れたリソースは oreilly です。 oreilly のバインディングファイルの例は次のとおりです。

見積もり:

リスト11.外部バインディングファイルの使用

<jxb:bindings version="1.0" 
  xmlns:jxb="http://Java.Sun.com/xml/ns/jaxb" 
  xmlns:xs="http://www.w3.org/2001/XMLSchema" 
  xmlns:xjc="http://Java.Sun.com/xml/ns/jaxb/xjc" 
  jxb:extensionBindingPrefixes="xjc">
    <jxb:bindings schemaLocation="po4.xsd" node="/xs:schema">
        <jxb:globalBindings>
            <xjc:superClass name="com.syh.Shape"/>
            <xjc:serializable uid="12343"/>
        </jxb:globalBindings>
        <jxb:bindings node="//xs:element[@name='Widgets']//xs:complexType//xs:choice">
            <jxb:property name="Shapes"/>
        </jxb:bindings>
    </jxb:bindings>
</jxb:bindings>
8
Tim Penner