我一直在使用XML Schema 1.1,因为我想在架构中定义一些断言。问题是我是否可以将任何断言错误作为简单的警告来处理。
原因是我的网站会自动处理任何不一致之处,因此我想通知用户所做的更改。
也许有一个合适的替代方法“断言”我不知道。
答案 0 :(得分:1)
不,XSD没有这样的警告概念,并且不直接支持有关约束违规的用户控制的消息传递。
您可以查看Schematron,其中可以指定断言消息和@role
和@flag
属性。
根据OP评论更新:
是的,您可以编写自定义SAX错误处理程序来拦截和更改验证解析器的默认错误消息。 (参见Tip: Validation and the SAX ErrorHandler interface)然而,除非您以某种创造性的方式利用xsd:appinfo
,否则在XSD本身中没有声明性的自然表示。
答案 1 :(得分:0)
无效文档是导致错误还是警告不是模式的功能;它由验证器和验证器的调用者确定。
默认情况下,大多数验证器都假定它们应该在无效输入上引发错误,但没有任何需要该行为的错误。您正在使用的验证器可能有一个允许您请求警告的调用时选项 - 或者如果您从Java等语言调用解析器,您当然可以自己捕获异常。通过检查验证器提供的错误代码,您几乎可以肯定地确定无效原因是否是错误的断言。
如果您是任何验证者的用户(特别是如果您是付费客户),您可以考虑让开发人员知道您希望验证器的接口行为不同;很明显,他们永远不会知道你是否不告诉他们。