首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于RelaxNG的XML验证

基于RelaxNG的XML验证
EN

Stack Overflow用户
提问于 2008-11-03 12:12:29
回答 5查看 3.3K关注 0票数 17

对于性能和准确性,您可以推荐哪些XML验证工具,其中每个都是我们系统中的一个关键问题?我们有以下要求:

  • 它不是xmllint (见下文)
  • 支持RelaxNG
  • 可以轻松地与Perl集成(这是可选的,但会很好)

为什么不呢?(这是背景,你可以跳过它,如果你愿意)

我们有一个大型的Perl系统,它使用RelaxNG来验证我们的XML。我们使用紧凑RelaxNG格式三郎将其转换为标准的RelaxNG格式。然后通过xmllint进行实际验证。

这时问题就开始出现了。xmllint经常出现错误报告验证错误的问题。它不会给出假阳性或否定,但是如果文档无法验证,xmllint通常会为给定的错误报告错误的元素或属性。有时错误是正确的(“没想到会看到元素'bar'),但仅仅是因为以前没有报告错误(因为'bar‘应该遵循必需的但缺失的元素'foo',但xmllint没有告诉我们这一点)。请注意,这是xmllint长期存在的问题,即使最新版本也有相同的问题。我们经常有大量的XML文档,错误报告错误会给客户端和开发人员带来很大的痛苦。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2008-11-03 16:03:41

我认为JDrago有正确的想法,您需要避免使用基于libxml2 2的RNG验证工具,至少目前是这样。我在我的项目中也发现了这一点。最近,我在libxml2上记录了两个关于RNG验证的bug。

我推荐。它是由James编写的,他是Relax的创建者,也是XML世界的领军人物之一。他也是trang的作者,你已经在使用它了。此代码(和trang)的开发最近在我链接到的Google站点上恢复。

我们的内容和模式一直被证明是正确的,并且提供了比libxml2更好的错误消息,尽管在这方面还有很大的改进余地。

pointing 2/xmllint的一个缺点是,它目前没有使用OASIS XML目录来解析公共和系统标识符,并且URI指向模式。如果您包含了由'http‘URI引用的模式,这将是一个问题--这些模式总是通过网络获取的。

票数 15
EN

Stack Overflow用户

发布于 2010-01-11 20:14:54

Hamcrest模式允许您使用RelaxNG匹配器根据RelaxNG验证XML文档。

票数 3
EN

Stack Overflow用户

发布于 2008-11-03 15:16:26

我怀疑xmllint使用与其他任何东西相同的底层库(libxml2等)。认为同一个库的另一个前端会给出不同的结果是违反直觉的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/258462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档