如何为xjc编写外部绑定文件?

时间:2009-11-10 12:48:35

标签: java xml jaxb xjc

JAXB xjc的文档说:

  

-b       指定要处理的一个或多个外部绑定文件。 (每个绑定文件必须具有自己的“-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 
     

此外,命令行上的模式文件和绑定文件的顺序无关紧要。

但是我在哪里可以找到这个“外部绑定文件”的文档?

1 个答案:

答案 0 :(得分:7)

外部绑定文件记录在oracle.com上的Customizing JAXB Bindings页面

引用:

  

外部绑定自定义文件

     

通过包含绑定声明的外部文件对JAXB绑定进行的自定义采用如下所示的一般形式。

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

schemaLocation是对远程模式的URI引用   node是一个XPath 1.0表达式,用于标识与给定绑定声明关联的schemaLocation中的架构节点。   例如,JAXB绑定声明文件中的第一个schemaLocation / node声明指定了模式名称和根模式节点:

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

后续的schemaLocation / node声明,例如上述模式中名为ZipCodeType的simpleType元素,将采用以下形式:

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

另见; JAXB Compiler Options

有关外部绑定文件的信息的另一个好资源是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>