XSD断言违规可以是警告而不是错误吗?

时间:2015-10-08 10:31:15

标签: xml xsd xml-validation xsd-1.1

我一直在使用XML Schema 1.1,因为我想在架构中定义一些断言。问题是我是否可以将任何断言错误作为简单的警告来处理。

原因是我的网站会自动处理任何不一致之处,因此我想通知用户所做的更改。

也许有一个合适的替代方法“断言”我不知道。

2 个答案:

答案 0 :(得分:1)

不,XSD没有这样的警告概念,并且不直接支持有关约束违规的用户控制的消息传递。

您可以查看Schematron,其中可以指定断言消息和@role@flag属性。

根据OP评论更新:

是的,您可以编写自定义SAX错误处理程序来拦截和更改验证解析器的默认错误消息。 (参见Tip: Validation and the SAX ErrorHandler interface)然而,除非您以某种创造性的方式利用xsd:appinfo,否则在XSD本身中没有声明性的自然表示。

答案 1 :(得分:0)

无效文档是导致错误还是警告不是模式的功能;它由验证器和验证器的调用者确定。

默认情况下,大多数验证器都假定它们应该在无效输入上引发错误,但没有任何需要该行为的错误。您正在使用的验证器可能有一个允许您请求警告的调用时选项 - 或者如果您从Java等语言调用解析器,您当然可以自己捕获异常。通过检查验证器提供的错误代码,您几乎可以肯定地确定无效原因是否是错误的断言。

如果您是任何验证者的用户(特别是如果您是付费客户),您可以考虑让开发人员知道您希望验证器的接口行为不同;很明显,他们永远不会知道你是否不告诉他们。