RelaxNG vs XML Schema

jmq*_*jmq 22 xml xsd relaxng

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

谢谢.

dar*_*ioo 15

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

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

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

  • 值得指出的是Jing和Trang现在正在开发中. (4认同)
  • 另外,《jing》的bug很少;詹姆斯·克拉克犯的错误比典型的程序员要少得多。Trang 在 XSD 输出方面存在问题,但在其他方面也相当正确。“如果它不改变,它就死了”这个指标并不适合这种质量的代码。 (2认同)

Mic*_*Kay 7

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


Joh*_*wan 6

编写略有限量的RELAX NG,然后使用Trang自动转换为XSD(我们从未触摸或查看)对我们来说非常有效.


Sta*_*Man 5

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

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