【发布时间】:2016-04-19 14:35:26
【问题描述】:
我一直在考虑使用 Saxon 9.6 作为 XSD 1.1 验证器和 XSD 断言。是否可以使用 Saxon 验证器定义我自己的错误消息(不是默认错误消息)?
【问题讨论】:
我一直在考虑使用 Saxon 9.6 作为 XSD 1.1 验证器和 XSD 断言。是否可以使用 Saxon 验证器定义我自己的错误消息(不是默认错误消息)?
【问题讨论】:
我想到了几种机制。
首先,您可以定义与断言和其他方面相关联的自己的消息:
http://www.saxonica.com/documentation/index.html#!schema-processing/extensions11/saxon.message
其次,您可以将所有验证消息发送到 XML 报告文件,然后您可以对其进行转换。在 Validate 命令行中使用 -report:filename,或在 s9api API 中使用 SchemaValidator.setValidityReporting()。报告文件的格式由saxon-resources.zip 下载文件中提供的架构定义。
您可以按照@kjhughes 的建议使用ErrorListener - 传递给ErrorListener 的ValidationException 对象中的错误信息是非常结构化的形式 - 但是(a)我认为XML 报告更容易操作, (b) 我们发现,在报告数百个错误的验证运行中,创建ErrorListener 接口所需的异常对象的成本可能占整个运行时间的很大一部分。 Java 异常并不是真正为此目的而设计的。
【讨论】: