我想在我们的项目中添加一个xsd文件,该文件依赖于jar中另一个xsd中定义的类型。我们使用jaxb从xsds生成Java类。 我如何引用SchemaContainingFooTypeIsInaJAR.xsd以便'FooType'正确解析并生成正确的Java类
<?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>
答案 0 :(得分:2)
您可能对这些功能感兴趣:
简而言之,您可以编写一个目录文件,该文件将指向JAR文件中的架构:
REWRITE_SYSTEM "some/url/a.xsd" "maven:org.jvnet.jaxb2.maven2:maven-jaxb2-plugin-tests-episodes-a!/a.xsd"
免责声明:我是maven-jaxb2-plugin的主要开发者。
答案 1 :(得分:0)
请参阅XML Schema reference和JAXB SchemaFactory source order must follow import order between schemas?
协商一致似乎是:你需要提供自己的解析器。
答案 2 :(得分:0)
替换你的行:
<xs:include schemaLocation="SchemaContainingFooTypeIsInaJAR.xsd"/>
与
<xs:include schemaLocation="jar:file:///path/to/jar/thing.jar!/path/inside/jar/to/file.xsd"/>