Reputation: 48743
I'd like to override package for my schema via binding .xjb
file.
It is done with:
<schemaBindings>
<package name="com.schema.common" />
</schemaBindings>
JXC compiler expects context for above code, defined via schemaLocation
.
I store .xsd
and .xjb
files in separate directories and this looks ugly (like all Java EE):
<bindings schemaLocation="../../../../wsdl/common_v47_0/CommonReqRsp.xsd">
<schemaBindings>
<package name="com.schema.common" />
</schemaBindings>
</bindings>
Is it possible to define bindings
context without relative path in schemaLocation
?
I've seen SCD ("schema component designator"). It looks promising but I can't find reference for this syntax...
Upvotes: 2
Views: 2965
Reputation: 2395
If you are using a newer maven-jaxb2-plugin
, for example version 3.1.0
, then you should use JAXB 3 format for XJB files:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<bindings version="3.0" xmlns="https://jakarta.ee/xml/ns/jaxb">
<!-- Bindings for a particular XML namespace. -->
<bindings scd="x-schema::tns" xmlns:tns="https://example.com/target/namespace">
<!-- Binding Java package to the XML namespace. -->
<schemaBindings>
<package name="com.example.package"/>
</schemaBindings>
<!-- Binding a particular Java class to a particular XML type. -->
<bindings scd="~tns:SomeXmlTypeName">
<class ref="com.example.another.package.OverriddenJavaClassName"/>
</bindings>
</bindings>
</bindings>
Upvotes: 2
Reputation: 48743
Here is the magic of SCD:
<?xml version="1.0" encoding="UTF-8"?>
<bindings xmlns="http://java.sun.com/xml/ns/jaxb" version='2.1'
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:tns="http://example/schema/common_v47_0">
<bindings scd="x-schema::tns">
<schemaBindings>
<package name="com.schema.common" />
</schemaBindings>
</bindings>
</bindings>
All parts are important. SCD was introduced in version='2.1'
.
I found reference at https://github.com/highsource/maven-jaxb2-plugin/wiki/Configure-Target-Packages-in-Binding-Files
SCD is extension of JAXB standard and implementation can be investigated in JAXB RI source tree:
Upvotes: 2