2012-09-13 15 views
5

Voglio aggiungere un file xsd al nostro progetto che si basa su tipi definiti in un altro xsd che si trova in un barattolo. Usiamo jaxb per generare classi Java dagli xsds. Come faccio riferisco a SchemaContainingFooTypeIsInaJAR.xsd in modo che 'FooType' risolve correttamente e che le classi Java corretti sui generatoriferimento/inclusi i file xsd in un barattolo

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

risposta

2

Potreste essere interessati a queste caratteristiche:

In breve, è possibile scrivere un file di catalogo che puntare al tuo schema in un file JAR:

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

DISCLAIMER: I am the principal dev di maven-jaxb2-plugin.

+0

Grande roba. Nel secondo documento, il collegamento sotto "Vedi questa sezione nella guida JAXB" è rotto. –

+1

@GeoffreyDeSmet Grazie, risolto. Ecco questo link: http://jaxb.java.net/guide/Fixing_broken_references_in_schema.html – lexicore

0

Sostituire la linea:

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

con

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

Problemi correlati