2012-09-13 11 views
5

jarファイル内にある別のxsdで定義されている型に依存するxsdファイルをプロジェクトに追加します。 jaxbを使用して、xsdsからJavaクラスを生成します。 はどのように「FooType」は正しく解決ので、私はSchemaContainingFooTypeIsInaJAR.xsdを参照してくださいし、適切なJavaクラスが生成されますjarファイル内のxsdファイルを参照する/包含する

<?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> 

答えて

2

:要するに

、あなたはJARファイル内のスキーマを指しますカタログファイルを書き込むことができます

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

免責事項:私はプリンシパルですdevのmaven - jaxb2 - プラグインの。

+0

素晴らしいものと

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

を。 2番目の文書では、「JAXBガイドのこのセクションを参照してください」というリンクが壊れています。 –

+1

@GeoffreyDeSmetありがとう、修正されました。ここにこのリンクがあります:http://jaxb.java.net/guide/Fixing_broken_references_in_schema.html – lexicore

0

あなたの行に置き換えます

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