Tôi đang cố tạo các lớp Java từ một số XSD cụ thể với xjc
. Những lược đồ này có một số định nghĩa chung, vì vậy chúng nhập một số XSD phổ biến. Đặc biệt, chúng có thể bao gồm từ số không đến tất cả các XSD chung.Xác định tên gói cho XSD chung với xjc và các ràng buộc
Tôi muốn tạo tất cả các lớp từ một XSD cụ thể cho một gói cụ thể, nhưng giữ các lớp được tạo cho các lược đồ chung trong một gói chung, vì vậy chúng không được lặp lại cho từng lược đồ cụ thể trong cây nguồn .
Tôi đã học được rằng bindings tùy chỉnh có thể được dùng để xác định các gói trên một cơ sở cho mỗi lược đồ, với ví dụ:
<jxb:bindings schemaLocation="common1.xsd" node="/xsd:schema">
<jxb:schemaBindings>
<jxb:package name="mypackage.commonclasses"/>
</jxb:schemaBindings>
</jxb:bindings>
Tôi đã có cơ cấu như sau:
schemas
| - common
| | - common1.xsd --> XSD with common types #1
| | - ...
| | - commonN.xsd --> XSD with common types #N
| | - commonBindings.xjb --> Defines package "mypackage.commons" for common*.xsd
| - specific1
| | - specific1.xsd --> Includes ../common/common{1-N}.xsd
| | - specific1.xjb --> Defines package "mypackage.specific1" for specific1.xsd
| - specificN
| | - specificN.xsd --> Includes only ../common/common1.xsd
| | - specificN.xjb --> Defines package "mypackage.specificN" for specificN.xsd
Tất cả hoạt động tốt với:
xjc -b schemas/specific1
-b schemas/common
schemas/specific1/specific1.xsd
Tạo lớp học cho specific1.xsd
trong mypackage.specific1
và các lớp học phổ biến trong mypackage.commons
. Nhưng khi tôi cố gắng để tạo ra các lớp dành cho specificN
, xjc
ném các lỗi sau:
[ERROR] "file:/drive/dir/schemas/common/common1.xsd" is not a part of
this compilation. Is this a mistake for "/drive/dir/schemas/common/commonBindings.xjb"?
line 2 of file:/drive/dir/schemas/common/commonBindings.xjb
tôi nhận được lỗi này lặp lại cho mỗi XSD chung không được nhập vào bất cứ xsd cụ thể.
Có cách nào tôi có thể thực hiện xjc
bỏ qua các ràng buộc trong commonBindings.xjb
không được sử dụng trong XSD mà tôi đang tạo các lớp không?
Hoặc, tôi đang hướng sai hướng bằng cách sử dụng cách tiếp cận này, và phải là, ví dụ, sử dụng chú thích trong xsd cụ thể? Tôi muốn tránh sửa đổi các lược đồ nếu có thể.