使用 RelaxNG 进行 XML 模式验证

2024-01-19

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

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

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

我们有一个大型 Perl 系统,它使用 RelaxNG 来验证我们的 XML。我们使用紧凑的RelaxNG格式 http://www.relaxng.org/compact-tutorial-20030326.html and trang http://www.thaiopensource.com/relaxng/trang.html将其转换为标准 RelaxNG 格式。然后我们通过以下方式进行实际验证xmllint http://xmlsoft.org/xmllint.html.

这就是问题出现的时候。xmllint 通常会出现错误报告验证错误的问题。它不会给出误报或漏报,但如果文档无法验证,xmllint 通常会报告给定错误的错误元素或属性。有时错误是正确的(“没想到会看到元素‘bar’),但只是因为未报告先前的错误(因为‘bar’应该遵循必需但缺少的元素‘foo’,但 xmllint 没有’请不要告诉我们这一点)。请注意,这是 xmllint 的一个长期存在的问题,甚至最新版本也存在同样的问题。我们经常有巨大的 XML 文档,误报错误会给客户和开发人员带来很大的痛苦。


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

我建议jing http://code.google.com/p/jing-trang/。它是由 Relax NG 的创建者和 XML 世界的领军人物之一 James Clark 编写的。他也是 trang 的作者,您已经在使用它了。这段代码(以及 trang)的开发最近在我上面链接到的 Google 代码网站上恢复了。

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 RelaxNG 进行 XML 模式验证 的相关文章

  • 如何在 Spring Boot 中使用@NotNull?

    我有这样的依赖
  • unix df 上的正则表达式帮助

    我需要一些帮助来调整我的代码以查找此 UNIX 中的另一个属性df output Ex Filesystem Size Used Avail Capacity Mounted on dev ad4s1e 61G 46G 9 7G 83 ho
  • 如何确保我的代码永远不会直接退出?

    eval require file subsequent code goes here If file包含一个exit语句 后面的代码就没有机会运行 如何解决以便后续代码始终有机会运行eval已经完成了 中止是不可能的exit call f
  • C# xml序列化必填字段

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som
  • 按钮 - 单击时更改背景颜色

    我的活动中有 8 个按钮 我正在寻找的是 按钮具有默认背景 单击按钮时 背景颜色应更改为其他颜色 这部分非常简单 但是 当我单击任何其他按钮时 第一个按钮的背景颜色应该变回默认颜色 我知道这将使用 选择器状态 来完成 但我不太确定如何实现它
  • 使用 SIGINT 默认处理程序时从 system() 返回值

    我遇到了一些奇怪的返回值system 当子进程从终端接收到 SIGINT 时 解释一下 从 Perl 脚本parent pl I used system 运行另一个 Perl 脚本作为子进程 但我还需要通过 shell 运行子进程 所以我使
  • 正则表达式:删除 xml 的空元素标签

    我想将所有自封闭元素替换为长语法 因为我的网络浏览器在它们上绊倒 Example becomes 我正在使用 python 风格的正则表达式 这些解决方案都不会容纳像 foo gt 这样的属性 尝试 s lt w gt s gt lt 1
  • 将不均匀的层次列表转换为数据框

    我认为还没有有人问过这个问题 但是有没有一种方法可以将具有多个级别和不均匀结构的列表的信息组合成 长 格式的数据帧 具体来说 library XML library plyr xml inning lt http gd2 mlb com c
  • 如何在C#中从XML读取键值

    我有下面的 xml 格式文件 名为 ResourceData xml
  • yup.js 验证数字字段大于同级字段,或者可以为空

    我正在使用 Yup js 来验证一些表单字段 我有两个整数字段 Year Built Year Renovated Year Built是必填字段 Year Renovated is not 不过 装修年份可以留空如果有一个值它应该大于建造
  • 使用非 ASCII(自然语言)XML 标签是否合适?

    使用以非 ASCII 自然语言编写的 XML 标签 元素名称 是否合适 XML 规范允许这样做 请参阅Names http www w3 org TR 2006 REC xml11 20060816 NT Name and 例外情况 htt
  • 如何锁定/密码保护 XML 文件?

    我在 XML 文件中读取和写入数据 我不希望其他人阅读该文件 所以我想为我的文件创建密码或锁定文件 我怎样才能做到这一点 如果不使用加密软件 则无法使用密码保护 XML 文件 XML 文件只是文本 但像 PGP 谷歌搜索 这样的程序应该可以
  • EOutOfMemory 使用 Delphi 创建大型 XML

    我正在使用 Delphi 从关系数据库中的数据创建 XML 文档 它在小数据集上测试得很好 但是当我尝试将数据集的大小扩展到生产级别时 它最终在节点创建期间因 EOutOfMemory 异常而崩溃 我正在使用放在表单上的 TXMLDocum
  • 在Excel VBA中将图像(jpg)转换为base64?

    我需要在 Excel 中转换图像 或通过VBA 转为base64 最后我将进行XML输出 我怎样才能做到这一点 我需要引用 DOM 吗 我一直在读书这个问题 https stackoverflow com questions 169907
  • 如何从 SOAP 响应中删除额外的结果标签

    我知道这个问题以前曾被问过 但我在任何地方都找不到答案 问题是我的 asmx 文件中有以下代码 namespace IrancellSmsServer SoapDocumentService RoutingStyle SoapService
  • SQL Server 2008R2 和创建 XML 文档

    论坛上的第一篇文章 因为我真的被这个问题困住了 以下查询正确地将有效的 XML 文档分配给 xTempXML 变量 类型为 xml 注 文档的长度 转换为varchar max 711 select xTempXML select Pres
  • HTTP POST 操作出现错误代码 302

    我有一个 perl 脚本 它将数据发送到我用 php 编写的 Web 服务 这是代码 use LWP UserAgent my ua LWP UserAgent gt new my server endpoint http example
  • jQuery 验证日期范围问题

    我的代码中有很多地方有成对的相关开始和结束日期字段 范围 我需要验证开始日期早于结束日期 我正在使用 jQuery 验证插件 这是我的代码 http jsfiddle net jinglesthula dESz2 http jsfiddle
  • 在 Google 表格应用程序中进行身份验证

    我有一个类似批处理的应用程序 由调度程序定期调用 无需人类用户参与 它使用 PerlNet Google 电子表格 http metacpan org pod Net Google Spreadsheets包通过从数据库获取的数据来更新 G
  • Perl 三元条件运算符

    我正在尝试在脚本中编写更高效的代码 并且有时会实现三元条件运算符 我不明白为什么在循环中使用三元条件运算符时会得到额外的结果 usr bin perl use strict use warnings my array Serial 123

随机推荐