验证层具有相互依赖性检查

时间:2010-10-29 10:06:02

标签: java validation xsd rule-engine relaxng

将为更多客户端打开现有后端服务(向Web-Frontend客户端添加Web服务层)。
目前,XML Schema用于验证DTO,但由于前端不受我们的控制,我们必须将扩展测试(例如相互依赖性测试)从前端层移动到新的“验证层”。 现在我们的问题是,是否存在这种共同模式,例如。类似于使用RELAX NG或规则引擎的东西?要求是能够检查数据类型(我们将继续使用XML Schema)和相互依赖性,但这些相互依赖性可能变得相当复杂,即。它们可能涉及检查输入数据中不可用的数据(但在某些外部系统中) 因此,我们正在寻找一种模式以及一种可以轻松实现模式的框架。

1 个答案:

答案 0 :(得分:0)

Schematron是要查看的模式语言(可能用作XSD顶层的图层)。

Schematron基于使用XPath表达的约束,在大多数情况下,XPath足以表达所需内容。由于XPath可以使用用户定义的函数进行扩展,因此可以通过例如以下方式进行任何验证。比较来自外部数据库的数据等。

(如果您正在利用文档外部的数据进行验证,那么一种很好的方法是将外部数据公开为XML - 可能以RESTy方式提供 - 因此验证约束可以完全用Schematron模式中的XML术语表示。)