使用RelaxNG进行XML模式验证

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

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

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

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

那就是问题的发生。xmllint在错误地报告验证错误时常常有问题。它不会给出错误的肯定或否定,但如果文档无法验证,xmllint会经常为给定的错误报告错误的元素或属性。有时错误是正确的(“没想到看到元素’bar’),但只是因为以前的错误没有报告(因为’bar’应该是遵循所需但缺少的元素’foo’,但是xmllint不’请注意,这是xmllint的一个长期存在的问题,即使是最新版本也有同样的问题,我们经常有巨大的XML文档,并且错误地报告错误对客户端和开发人员造成了很大的伤害。

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

我推荐jing.它是由放松NG的创始人詹姆斯·克拉克(James Clark)和XML世界的领先灯之一撰写的。他也是tranG的作者,你已经在使用它了。最近在Google代码网站上恢复了此代码(和trang)的开发,我链接到上面。

Jing已经证明我们的内容和架构一直是正确的,并给出比libxml2更好的错误信息,尽管在这方面还有很大的改进空间。

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类
XML入门的常见问题(二)
Java对象的强、软、弱和虚引用
JS解析XML文件和XML字符串详解
java中枚举的详细使用介绍
了解Xml格式
XML入门的常见问题(四)
深入SQLite多线程的使用总结详解
PlayFramework完整实现一个APP(一)
XML和YAML的使用方法
XML轻松学习总节篇