当前位置:  开发笔记 > 编程语言 > 正文

使用RelaxNG进行XML模式验证

如何解决《使用RelaxNG进行XML模式验证》经验,为你挑选了1个好方法。

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

不是 xmllint(见下文)

支持RelaxNG

可以轻松地与Perl集成(这是可选的,但它会很好)

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

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

这就是问题出现的时候.xmllint经常会错误地报告验证错误.它不会给出误报或否定,但如果文档无法验证,xmllint通常会报告给定错误的错误元素或属性.有时错误是正确的("不希望看到元素'bar'),但仅仅是因为没有报告先前的错误(因为'bar'应该遵循必需但缺少的元素'foo',但xmllint不会'请告诉我们这一点.请注意,这是xmllint长期存在的问题,即使是最新版本也存在同样的问题.我们经常会收到大量的XML文档,错误地报告错误会给客户和开发人员带来很大的麻烦.



1> ChuckB..:

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

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

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

jing对libxml2/xmllint的一个缺点是它目前不使用OASIS XML目录来解析指向模式的公共和系统标识符和URI.如果您包含了由"http"URI引用的模式,那么这将是一个问题 - 这些模式总是通过网络获取.

推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有