XML验证 - 我应该使用哪些基于规则的引擎或框架

时间:2010-07-01 13:46:33

标签: xml validation testing

我需要提出某种规则引擎,我可以在其中指定特定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

2 个答案:

答案 0 :(得分:0)

是否有以上所有内容?

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

答案 1 :(得分:0)

你应该看看Schematron

  

Schematron基本不同   来自其他模式语言的概念   它不是基于语法而是基于语法   在解析中找到树模式   文献。这种方法允许很多   要表示的各种结构   这是不方便和困难的   在基于语法的模式语言中。如果   你知道XPath或XSLT表达式   语言,你可以开始使用了   Schematron立刻。