2

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

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

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

4

2 回答 2

1

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

您可能会查看可以指定断言消息@role和属性的 Schematron。@flag


根据 OP 评论更新:

是的,您可以编写自定义 SAX 错误处理程序来拦截和更改验证解析器的默认错误消息。(请参阅提示:验证和 SAX ErrorHandler 接口xsd:appinfo)但是,除非您还以某种创造性的方式利用,否则这在 XSD 本身中不会具有自然的声明性表示。

于 2015-10-08T11:09:37.493 回答
0

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

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

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

于 2016-04-22T02:22:30.440 回答