1

我有一个无法更改的进程生成的 xml 文档。它看起来有点像这样:

<root>
  <foo bar="..." baz="..."/>
  <foo bar="..." baz="..."/>
  <foo bar="..." baz="..."/>
  <foo/>
  <foo/>
</root>

我已经设置了一个模式,要求 foo 元素上的属性 baz 和 bar ,因为它们是读取文件的程序正确运行所必需的。但是,生成 xml 的程序有时会在末尾添加一个或多个空的 foo 元素,如上所示。这会导致模式验证失败,但我不想放松模式以允许空的 foo 元素,因为这可能会导致程序失败。

有没有人建议解决这个问题的最佳方法是什么?到目前为止我想到的唯一解决方案是预处理 xml,删除任何空的 foo 元素,但这有点可怕。

4

1 回答 1

1

XSD 1.0 中没有办法说某些 foo 元素应用了与其他 foo(兄弟)元素不同的验证规则。您可以在 XSD 1.1 中使用断言来实现。

在验证之前进行转换实际上并不是一件坏事。如果您知道在验证文档然后进行实际处理之前需要从文档中去除哪些噪音,那么在验证之前将转换步骤插入管道可能是一种非常有效的技术。

于 2013-01-21T15:21:42.120 回答