2010-07-01 48 views
1

我需要拿出某种规则引擎,在那里我可以为特定的XML文件的验证规则。然后读入规则并对xml声明。XML验证 - 什么基于规则的引擎或框架,我应该使用

最好的方法是什么?它是XPath还是XQuery,还是XSL或XSD?或者甚至可能是XMLUnit?

我需要做的东西像检测时一定attibutes从类似的节点不同,例如:

<root> 
    <customers> 
    <customer name="Fred"> 
     <contact-details email="[email protected]"> 
    </customer> 
    <customer name="Barney"> 
     <contact-details email="[email protected]"> 
    </customer> 
    <customer name="Fred"> 
     <contact-details email="[email protected]"> 
    </customer> 
    </customers> 
</root> 

所以它会检测上面的电子邮件地址是不同的,作为一个规则。 还需要验证xml中的数据与外部参考数据的关系,例如,邮编查询等

任何建议,我应该用什么来很容易地指定的规则,运行相当快? XML和外部数据适度大 - 可以为每xml几MB。

有些规则是简单的,并且可以在XPath的做 - 检查领域是一定的长度,或检查某些颂歌已经填充某些属性 - XSD适合这里。但不用于检查外部数据,或者执行上述操作。 XQuery是我想要的吗?

如果你可以帮忙,谢谢。

-Justin

回答

0

是否有以上所有?

XSD将为您提供基本的XML验证。它将允许您确保元素具有正确的孩子和正确的属性并且按照正确的顺序等。如果您将XML与外部XML数据进行比较,那么您将需要使用XMLUnit。如果您将XML中的字段与其他地方的外部字段进行比较(例如:确保邮政编码是有效的邮政编码),那么您可能需要使用XPath。您需要了解每种工具的功能,因为它们都可以协助进行验证。

0

你应该看看Schematron

的Schematron的不同之处,从其他模式语言的基本概念 在 ,它不是基于语法,但是,分析 文档中 发现树模式。这种方法允许许多 种结构来表示 这是不方便的和基于语法的模式语言困难 。如果 你知道XPath或XSLT的表达 语言,你可以立即开始使用 的Schematron。

+0

感谢的Mads,我带你去看看吧! 如何使它对外部参考进行验证?我必须将它们合并到被测试的xml中吗? 我喜欢这种方法,我可以在外部维护schematron规则,然后从这些构建一个schematron文档,我应用这个xml。绝对可以工作! 再次感谢, 贾斯丁 – Justin 2010-07-02 08:41:40