从其他项目导入XSD

时间:2011-06-22 17:08:30

标签: xml eclipse xsd-validation

我正在使用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的自定义模式位于同一级别。

但是我们的新插件架构将打破这一点,因为自定义类型的插件将引用我们的基础项目:

  • 同一STS中的另一个项目 工作区
  • Maven管理的jar文件 插件的pom.xml引用

这会导致import语句生成警告,因为它无法找到引用的XSD文件,并导致对定义的命名空间的引用生成错误,因为它无法找到要验证的命名空间的定义引用的元素。

我已尝试在STS中设置委托目录,要匹配的键类型设置为URI,导入路径(即../xnat/xnat.xsd)为匹配起始字符串委派此XML目录文件到位于工作区中的xnat.xsd。

我还设置了一个XML目录元素,它将URI映射到xsd文件。我同时考虑到这两个代理可能会推送到XML目录元素,因为URI是相同的,但没有这样的运气。

那么实现这一目标的最佳方法是什么?我可以关闭XML验证,但我真的宁愿有一个很好的流程传递给我们的用户群,以便他们可以在他们的插件上工作时验证他们的XML和XSD。如果这对项目和Maven依赖引用都有效,那就更好了!

请注意,虽然我在STS中工作,但这些不是Spring配置文件,因此它们不会通过spring.handler / schema /等进行验证过程。配置文件...

感谢您在此问题上提供的任何帮助!

0 个答案:

没有答案