对于性能和准确性,您可以推荐哪些 XML 验证工具,每一个都是我们系统的关键问题?我们有以下要求:
- 它不是xmllint(见下文)
- 支持RelaxNG
- 可以轻松地与 Perl 集成(这是可选的,但它会很好)
为什么不是 xmllint?(这是背景,喜欢的可以跳过)
我们有一个大型 Perl 系统,它使用 RelaxNG 来验证我们的 XML。我们使用紧凑的 RelaxNG 格式和trang将其转换为标准的 RelaxNG 格式。然后我们通过xmllint进行实际验证。
这就是问题出现的时候。xmllint 通常在错误地报告验证错误方面存在问题。它不会给出错误的肯定或否定,但如果文档验证失败,xmllint 经常会报告给定错误的错误元素或属性。有时错误是正确的(“没想到会看到元素'bar'),但这只是因为没有报告先前的错误(因为'bar'应该遵循必需但缺少元素'foo',但xmllint没有' t 告诉我们那一点)。请注意,这是 xmllint 长期存在的问题,甚至最新版本也有同样的问题。我们经常有巨大的 XML 文档,误报错误会给客户和开发人员带来很大的痛苦。