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