2012-09-13 86 views
5

我想向我们的项目中添加一个xsd文件,该文件依赖于jar中另一个xsd中定义的类型。我们使用jaxb从xsds生成Java类。 我该怎么办是指SchemaContainingFooTypeIsInaJAR.xsd让“FooType”解析正确和适当的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" 

免责声明:我是校长maven-jaxb2-plugin的开发工具。

+0

伟大的东西。在第二个文档中,“查看JAXB指南中的这一部分”下的链接已损坏。 –

+1

@GeoffreyDeSmet谢谢,修正。这里是这个链接:http://jaxb.java.net/guide/Fixing_broken_references_in_schema.html – lexicore

0

替换您行:

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

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