gpt4 book ai didi

使用 RelaxNG 进行 XML 模式验证

转载 作者:数据小太阳 更新时间:2023-10-29 01:39:42 26 4
gpt4 key购买 nike

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

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

为什么不用 xmllint? (这是背景,喜欢的可以跳过)

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

这就是问题的根源。xmllint 通常会错误地报告验证错误。它不会给出误报或漏报,但如果文档验证失败,xmllint 通常会针对给定错误报告错误的元素或属性。有时错误是正确的(“没想到会看到元素‘bar’),但这只是因为没有报告之前的错误(因为‘bar’应该遵循必需但缺少元素‘foo’,但 xmllint 没有’ t t t tell us that bit)。请注意,这是 xmllint 的一个长期存在的问题,即使是最新版本也存在同样的问题。我们经常有大量的 XML 文档,误报错误会给客户和开发人员带来很多痛苦。

最佳答案

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

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

Jing 已证明我们的内容和模式始终正确,并且提供比 libxml2 更好的错误消息,尽管在这方面仍有很大的改进空间。

jing 相对于 libxml2/xmllint 的一个缺点是它目前不使用 OASIS XML 目录来解析公共(public)和系统标识符以及指向模式的 URI。如果您包含了由“http”URI 引用的模式,这将是一个问题——这些模式总是通过网络获取。

关于使用 RelaxNG 进行 XML 模式验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/258462/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com