根据其他 xml 中的值目录验证 XML

Validate XML against a catalog of values in other xml

我有一个包含以下内容的 XML 文件:

<example>
  <firstNode>
    <someInfo>Hello</someInfo>
  </firstNode>
  <secondNode>
    <myFlagColors>
      <using>RED</using>
      <using>WHITE</using>
      <using>BLUE</using>
    </myFlagColors>
  </secondNode>
</example>

我必须检查每个节点 <using>XYZ</using> 都有一个来自另一个 XML 的值(如 XYZ),例如这个:

<colorCatalog>
  <color>WHITE</color>
  <color>BLACK</color>
  <color>RED</color>
  <color>GREEN</color>
  <color>BLUE</color>
  <color>YELLOW</color>
  <color>PINK</color>
  <color>ORANGE</color>
  <color>CYAN</color>
</colorCatalog>

我不喜欢我目前使用 java 进行的实现: 转换 java Bean 中的每个 XML(使用 jaxb),然后使用迭代器 检查第一个 bean 中的值是否在第二个对象的值数组中。

我的问题:是否可以仅通过使用 xsd 文件来做到这一点?或者比纯编程更简单的任何其他方式?

XML 模式方法

如果您可以组合 XML 个文档,那么您可以创建一个 XSD,它在 2 个元素之间具有 keyRef 关系。

根据架构验证文档然后会突出显示任何错误。

如果您不能轻松地合并 XML 文件,那么您可以使用 xinclude(只要您的 XSD 解析器支持它)。 Xerces例如支持。