0

我正在使用下面的代码片段在静态块中创建一个 Schema 对象:

URL url = getClass().getClassLoader().getResource("test.xsd");

并且 test.xsd 正在导入其他三个 XSD 文件,

我的问题是当引用它们时(如验证时)导入是否可用,或者我是否必须通过创建 URL 对象来专门加载导入。

4

2 回答 2

0

因为当您使用时,您getClass().getClassLoader().getResource("test.xsd");实际上并没有加载test.xsd,而只是获取它的 URL,您不需要做任何其他事情。

XSDimport仅对适当的工具有意义。作为示例验证器。

因此,当您将架构位置传递给验证器时,它可以是绝对路径、当前工作目录的相对路径或 URL。

然后,当验证器处理 XSD 时,它会尝试以imports相同的方式获取 - 绝对路径,相对于test.xsd它在test.xsd.

于 2017-02-20T17:50:28.160 回答
0

不,您必须显式加载导入的 XSD,因为getResource()不了解 XSD 语义——它在资源/文件级别运行,而不是 XSD 级别。

于 2017-02-20T17:38:48.193 回答