在jar包中引用/包含xsd文件

5

我希望将一个依赖于另一个在jar包中定义的xsd文件的xsd文件添加到我们的项目中。我们使用jaxb从xsd生成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>
3个回答

2
您可能对以下功能感兴趣: 简而言之,您可以编写一个目录文件,其中指向JAR文件中的模式:
REWRITE_SYSTEM "some/url/a.xsd" "maven:org.jvnet.jaxb2.maven2:maven-jaxb2-plugin-tests-episodes-a!/a.xsd"

免责声明:我是maven-jaxb2-plugin的主要开发者。

很棒的东西。在第二个文档中,“在JAXB指南中查看此部分”下的链接已经失效了。 - Geoffrey De Smet
1
@GeoffreyDeSmet 谢谢,已修复。这是链接:http://jaxb.java.net/guide/Fixing_broken_references_in_schema.html - lexicore
当前链接为 https://javaee.github.io/jaxb-v2/doc/user-guide/ch03.html#compiling-xml-schema-fixing-broken-references-in-schema。请将其翻译为中文。 - beat

0

替换您的代码行:

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

使用以下代码进行替换:

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


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接