我需要提出某种规则引擎,我可以在其中指定特定xml文件的验证规则。然后读入规则并对xml进行声明。
什么是最好的方式?它甚至是XPath,XQuery,XSL或XSD吗?或者甚至可能是XMLUnit?
当某些属性与类似节点不同时,我需要做一些检测,例如:
<root>
<customers>
<customer name="Fred">
<contact-details email="fred@company.com">
</customer>
<customer name="Barney">
<contact-details email="barney@company.com">
</customer>
<customer name="Fred">
<contact-details email="fre@company.com">
</customer>
</customers>
</root>
因此,它会检测到上面的电子邮件地址是不同的,作为一个规则。 还需要根据外部参考数据验证xml中的数据,例如:邮政编码查找等
关于我应该使用什么来轻松指定规则的任何建议,运行得非常快? XML和外部数据适度大 - 每xml可以有几MB。
有些规则很简单,可以在XPath中完成 - 检查字段是一定的长度,或者检查某些odes是否填充了某些属性 - XSD在这里是合适的。但不是用于检查外部数据,或执行上述操作。 XQuery是我想要的吗?
谢谢,如果你能提供帮助。
-Justin
答案 0 :(得分:0)
是否有以上所有内容?
XSD将为您提供基本的XML验证。它将允许您确保元素具有正确的childen和正确的属性,并且顺序正确等。如果您要将XML与外部XML数据进行比较,那么您将需要使用XMLUnit。如果您要将XML中的字段与其他位置的外部字段进行比较(例如:确保邮政编码是有效的邮政编码),那么您可能希望使用XPath。您需要了解每种工具的功能,因为它们都可以帮助验证。
答案 1 :(得分:0)
你应该看看Schematron
Schematron基本不同 来自其他模式语言的概念 它不是基于语法而是基于语法 在解析中找到树模式 文献。这种方法允许很多 要表示的各种结构 这是不方便和困难的 在基于语法的模式语言中。如果 你知道XPath或XSLT表达式 语言,你可以开始使用了 Schematron立刻。