我有一个项目,其中我正在使用RelaxNG (jing)来验证xml。我喜欢RelaxNG的语法,但我拥有的大多数工具都使用XML schema(实际上,除了jing之外,我不认为我有其他使用RelaxNG的工具)。如果大多数支持都是围绕XML schema展开,那么在使用RelaxNG时是否会犯设计和未来支持方面的错误呢?我应该坚持使用RelaxNG并让其他人学习它(必要时进行踢腿和尖叫,开个玩笑)?还是应该因为工具支持而切换到XML schema?
谢谢。
我有一个项目,其中我正在使用RelaxNG (jing)来验证xml。我喜欢RelaxNG的语法,但我拥有的大多数工具都使用XML schema(实际上,除了jing之外,我不认为我有其他使用RelaxNG的工具)。如果大多数支持都是围绕XML schema展开,那么在使用RelaxNG时是否会犯设计和未来支持方面的错误呢?我应该坚持使用RelaxNG并让其他人学习它(必要时进行踢腿和尖叫,开个玩笑)?还是应该因为工具支持而切换到XML schema?
谢谢。
我认为这取决于你需要使用架构的具体内容。
还有一点:如果您只需要验证,那么就使用RelaxNG:它非常适合此目的。
但是,如果您计划执行数据绑定(例如JAXB)或其他类型的代码生成任务,则XML Schema是(不幸的是…)更好的选择,因为它更适用于对象与XML之间的转换,而不是RelaxNG。相反,它并不是很适合XML验证;特别是考虑到增加的复杂性。实际上,可以称XML Schema为XML的类型系统,而不是模式。
我们通常会先写一些稍微有限的RELAX NG格式,然后使用Trang自动转换成XSD格式(我们从不修改或查看XSD格式),这种方法对我们非常有效。
一切取决于你需要说服谁。您的分析是非常正确的:RelaxNG是更好的验证语言,但它的工具支持要少得多。那么你实际上需要哪些工具呢?
然而,我的团队通常使用Relax/NG compact构建所有内容(因为易读性更好),并根据需要转换为XSD(例如基于库的验证),否则忽略XSD。
:)
这很有效。