我正在使用SpringSource Tool Suite 2.7.0.M2,它是Eclipse 3.6.2。我使用的是Mac OS X 10.6.7,但这个问题不是针对特定操作系统的,所以对于任何值得的东西......
我有一个导入另一个XSD的XSD。在我们现有的结构中,这是在文件夹系统中的构建结构中,由命令行构建(ant,maven 1和maven 2的混合)引用。出于显而易见的原因,我们将在未来几个月内从该流程转向基于Maven和插件的架构。这将意味着许多小项目引用我们的主要项目,包括XSD参考。
所以目前这些XSD看起来像这样:
<xs:schema targetNamespace="http://nrg.wustl.edu/iq" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xnat="http://nrg.wustl.edu/xnat" xmlns:iq="http://nrg.wustl.edu/iq">
<xs:import namespace="http://nrg.wustl.edu/xnat" schemaLocation="../xnat/xnat.xsd"/>
...
</xs:schema>
就像我说的,这在我们当前的结构中有效,因为实际上有一个xnat文件夹与我导入xnat.xsd的自定义模式位于同一级别。
但是我们的新插件架构将打破这一点,因为自定义类型的插件将引用我们的基础项目:
这会导致import语句生成警告,因为它无法找到引用的XSD文件,并导致对定义的命名空间的引用生成错误,因为它无法找到要验证的命名空间的定义引用的元素。
我已尝试在STS中设置委托目录,要匹配的键类型设置为URI,导入路径(即../xnat/xnat.xsd)为匹配起始字符串和委派此XML目录文件到位于工作区中的xnat.xsd。
我还设置了一个XML目录元素,它将URI映射到xsd文件。我同时考虑到这两个代理可能会推送到XML目录元素,因为URI是相同的,但没有这样的运气。
那么实现这一目标的最佳方法是什么?我可以关闭XML验证,但我真的宁愿有一个很好的流程传递给我们的用户群,以便他们可以在他们的插件上工作时验证他们的XML和XSD。如果这对项目和Maven依赖引用都有效,那就更好了!
请注意,虽然我在STS中工作,但这些不是Spring配置文件,因此它们不会通过spring.handler / schema /等进行验证过程。配置文件...
感谢您在此问题上提供的任何帮助!