繁体   English   中英

如何使用复杂的验证规则来验证XML文档?

[英]How to validate XML document with complex validation rules?

我必须验证具有许多复杂验证规则的XML。 我当时想定义一个XSD文件来自动执行验证,但是在XSD中不能定义一些复杂的文件。

现在,我必须编写大量的Java代码才能通过xpath获取值,一个接一个地验证它们,这对代码和测试非常无聊。

我正在寻找一种简便的方法,是否有XML验证库? 还是可以在Java中定义一些非常复杂的验证规则并与XSD一起使用?


更新:

我忘了提一下,我需要在错误消息中添加一些错误代码,以帮助另一个团队处理错误。 我不确定XSD是否可以让我这样做。


再次更新:

一条复杂的规则:(以下路径位于文档的节点下,例如/my-node ,而不是根目录)

if /aaa exists
    /bbb should exist
    /ccc should not exist, and
    if /aaa's value is 111:
       /bbb's value should be 222
    if /aaa's value is 555:
       /bbb's value should be 666
else
    /bbb should not exist
    /ccc should exist, and its value should not be number

Java是图灵完备的; XSD不是。 因此,存在一些我们可以用Java表达的约束,而这些约束不能用XSD表达。 (这也表明,与Java中表示的等效约束相比,XSD中表示的[其他条件相同]约束包含错误的可能性要小一些。)

是否可以在XSD中表达任何给定的约束集取决于这些约束。 从您的示例中很难看出:您的主要结构似乎说,如果文档的根元素名为aaa ,那么还应该有一个名为bbb的根元素,而不是一个名为ccc的根元素。 这是荒谬的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM