2012-09-13 12 views
5

Tôi muốn thêm một tệp xsd vào dự án của chúng tôi dựa trên các loại được định nghĩa trong xsd khác có trong một cái bình. Chúng tôi sử dụng jaxb để tạo các lớp Java từ xsds. Làm thế nào để tôi tham khảo SchemaContainingFooTypeIsInaJAR.xsd để 'FooType' giải quyết một cách chính xác và các lớp Java thích hợp được tạotham chiếu/bao gồm các tệp xsd trong một cái bình

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
<xs:include schemaLocation="SchemaContainingFooTypeIsInaJAR.xsd"/> 
<xs:complexType name="FooMoreType"> 
    <xs:complexContent> 
     <xs:extension base="FooType"> 
      <xs:sequence> 
       <xs:element name="something" type="xs:boolean" minOccurs="0"> 
        <xs:annotation> 
         <xs:documentation xml:lang="en"> 
          something something 
         </xs:documentation> 
        </xs:annotation> 
       </xs:element> 
      </xs:sequence> 
     </xs:extension> 
    </xs:complexContent> 
</xs:complexType> 
</xs:schema> 

Trả lời

2

Bạn có thể quan tâm đến những tính năng:

Nói tóm lại, bạn có thể viết một tập tin Danh mục đó sẽ trỏ đến giản đồ của bạn trong một file JAR:

REWRITE_SYSTEM "some/url/a.xsd" "maven:org.jvnet.jaxb2.maven2:maven-jaxb2-plugin-tests-episodes-a!/a.xsd" 

KHUYẾN CÁO: Tôi là hiệu trưởng dev của maven-jaxb2-plugin.

+0

Great stuff. Trong tài liệu thứ hai, liên kết trong phần "Xem phần này trong hướng dẫn JAXB" bị hỏng. –

+1

@GeoffreyDeSmet Cảm ơn, đã sửa. Đây là liên kết này: http://jaxb.java.net/guide/Fixing_broken_references_in_schema.html – lexicore

0

Thay thế dòng của bạn:

<xs:include schemaLocation="SchemaContainingFooTypeIsInaJAR.xsd"/>

với

<xs:include schemaLocation="jar:file:///path/to/jar/thing.jar!/path/inside/jar/to/file.xsd"/>