RelaxNG vs XML Schema

时间:2011-02-14 16:57:51

标签: xml xsd relaxng

我有一个项目,我正在使用RelaxNG(jing)来验证xml。我喜欢RelaxNG的语法,但是我使用XML模式的大部分工具(实际上,我认为除了jing之外我没有一个工具可以使用)。当大多数支持似乎都围绕XML模式时,我是否通过使用RelaxNG来设计和未来支持错误?我应该坚持使用RelaxNG并让其他人学习它(必要时踢和尖叫,j / k)?我应该因工具支持而切换到xml架构吗?

感谢。

5 个答案:

答案 0 :(得分:15)

答案有点陈词滥调:这取决于。

关于什么,你可能会问?在您的用户可能正在使用的工具上。如果您依赖于您的用户,如果缺少好的工具会将他们赶走,您可能会失去他们。从我的经验来看,XML模式被广泛使用,你可能想重新考虑你决定继续使用Relax NG。它比XML模式更好,更容易理解,但这并不意味着它会使您的项目成功。

如果您想冒一点风险,请继续使用Relax NG。在开发的每个步骤中,尝试使用Trang之类的工具将Relax NG转换为XML模式。万一你有一天决定放弃NG是不值得的,你知道你有合理的备份。

答案 1 :(得分:6)

写一些略有限量的RELAX NG,然后使用Trang自动转换为XSD(我们从未接触或看过)对我们来说效果非常好。

答案 2 :(得分:5)

我同意这完全取决于你需要使用模式。 还有一点:如果您需要的只是验证,是的,请与RelaxNG一起使用:它有利于此目的。

但是如果你计划进行数据绑定(比如JAXB)或其他类型的代码生成任务,那么XML Schema(不幸的是......)是更好的选择,因为它更适用于object-to / from-xml方法比RelaxNG。相反,对于XML验证来说并不是那么好;特别考虑到增加了复杂事实上,人们可以将XML Schema称为类型系统而不是XML的模式。

答案 3 :(得分:3)

这完全取决于你必须说服谁。您的分析非常正确:RelaxNG是一种更好的验证语言,但它的工具支持要少得多。那么你真正需要什么工具呢?

答案 4 :(得分:2)

schematron也是另一个合理的选择,具有强大的基于xpath的验证......

然而,我的团队通常在Relax / NG compact中构建所有内容(具有出色的可读性),并根据需要转换为XSD(例如,基于lib的验证),否则忽略XSD。

:)

这只是有效。