3

我正在使用 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 工作区中的另一个项目
  • 插件的 pom.xml 引用的 Maven 管理的 jar 文件

这会导致 import 语句生成警告,因为它找不到引用的 XSD 文件,并导致对已定义名称空间的引用生成错误,因为它找不到用于验证引用元素的名称空间的定义.

我尝试在 STS 中设置委托目录,将要匹配的密钥类型设置为 URI,将导入路径(即 ../xnat/xnat.xsd)作为匹配起始字符串,并将此 XML 目录文件委托给xnat.xsd 通过工作区定位。

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

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

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

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

4

0 回答 0