2012-09-13 8 views
5

Ich möchte eine Xsd-Datei zu unserem Projekt hinzufügen, die auf Typen in einem anderen xsd in einem Jar basiert definiert. Wir verwenden jaxb, um Java-Klassen aus den xsds zu generieren. Wie erreiche ich SchemaContainingFooTypeIsInaJAR.xsd beziehen, so dass ‚FooType‘ erzeugtReferenzierung/einschließlich Xsd-Dateien in einem Glas

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

Antwort

2

Sie könnten in diesen Merkmalen interessieren:

Kurz gesagt, können Sie eine Katalogdatei schreiben, die zu Ihrem Schema in einer JAR-Datei zeigen würde:

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

HAFTUNGSAUSSCHLUSS: Ich bin der Auftraggeber Entwickler von Maven-Jaxb2-Plugin.

+0

Great stuff. Im zweiten Dokument ist der Link unter "Siehe diesen Abschnitt im JAXB-Handbuch" unterbrochen. –

+1

@GeoffreyDeSmet Danke, behoben. Hier ist dieser Link: http://jaxb.java.net/guide/Fixing_broken_references_in_schema.html – lexicore

0

Ersetzen Sie Ihre Linie:

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

mit

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