在企业XML应用中,对XML文档进行验证是保证应用正确运行的关键。甚至在不少的应用中,XML文档验证本身既是应用的功能的一部分。
使用DTD和XML Schema进行验证是我们很多人知道的。但这类基于大纲、定义的验证不能在解决很多来自实际业务的XML文档的验证时很吃力。比如:
要验证如下逻辑:如果某个product带了size属性的话,那么必须同时带有unit(单位)属性,否则将不知道是以“厘米”还是“英寸”标示产品的。这样的验证如果使用DTD或XML Schema验证会很吃力。但如果用XML实例描述语言(有的地方翻译的是基于规则语言、XML模式语言)来完成或许会更好。RELAX NG和Schematron是不错的选择。这类语言用于XML验证时,可以脱离DTD和XML Schema,而直接通过解析XML文档实例(即:XML Instance)来进行逻辑判断。
以Schematron为例,完全上基于XPath的一种XSL。利用XSL的match模式来对XML实例文档进行验证。迅速上手后,还发现Schematron用于在企业XML应用中编写一些业务逻辑限制规则也是非常好的选择,即强大又简单。
上图:Schematron的标志,一只小狐狸?一个卡通片中的主角
相关资源和链接:
RELAX NG:
使用 RELAX NG 反击
Schematron: