background image

Restrictions for External Binding Customizations

<< Binding Customization File Format | Customizing JAXB Bindings >>
<< Binding Customization File Format | Customizing JAXB Bindings >>

Restrictions for External Binding Customizations

Restrictions for External Binding Customizations
There are several rules that apply to binding declarations made in an external binding
customization file that do not apply to similar declarations made inline in a source schema:
The binding customization file must begin with the jxb:bindings version attribute, plus
attributes for the JAXB and XMLSchema namespaces:
<jxb:bindings version=
"1.0" xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xs=
"http://www.w3.org/2001/XMLSchema">
The remote schema to which the binding declaration applies must be identified explicitly in
XPath notation by means of a jxb:bindings declaration specifying schemaLocation and
node
attributes:
schemaLocation
specifies a URI reference to the remote schema.
node
specifies an XPath 1.0 expression that identifies the schema node within
schemaLocation
to which the given binding declaration is associated; in the case of the
initial jxb:bindings declaration in the binding customization file, this node is typically
"/xs:schema".
Similarly, individual nodes within the schema to which customizations are to be applied
must be specified using XPath notation; for example:
<jxb:bindings node=
"//xs:complexType[@name='USAddress']">
In such cases, the customization is applied to the node by the binding compiler as if the
declaration was embedded inline in the node's <xs:appinfo> element.
To summarize these rules, the external binding element <jxb:bindings> is only recognized for
processing by a JAXB binding compiler in three cases:
When its parent is an <xs:appinfo> element.
When it is an ancestor of another <jxb:bindings> element.
When it is the root element of a document. An XML document that has a <jxb:bindings>
element as its root is referred to as an external binding declaration file.
Scope, Inheritance, and Precedence
Default JAXB bindings can be customized or overridden at four different levels, or scopes.
Figure 17­3
illustrates the inheritance and precedence of customization declarations.
Specifically, declarations towards the top of the pyramid inherit and supersede declarations
below them. For example, Component declarations inherit from and supersede Definition
declarations; Definition declarations inherit and supersede Schema declarations; and Schema
declarations inherit and supersede Global declarations.
Customizing JAXB Bindings
The Java EE 5 Tutorial · September 2007
518