【问题标题】:Saxon and XML Schema 1.1 custom validation messagesSaxon 和 XML Schema 1.1 自定义验证消息
【发布时间】:2016-04-19 14:35:26
【问题描述】:

我一直在考虑使用 Saxon 9.6 作为 XSD 1.1 验证器和 XSD 断言。是否可以使用 Saxon 验证器定义我自己的错误消息(不是默认错误消息)?

【问题讨论】:

标签: xml xsd saxon


【解决方案1】:

我想到了几种机制。

首先,您可以定义与断言和其他方面相关联的自己的消息:

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 异常并不是真正为此目的而设计的。

【讨论】:

  • saxon:message 确实很棒,尽管它仅可用于构面。是否也可以以某种方式定义用于结构验证的自定义消息(cplx 类型等)?谢谢
  • 不,抱歉。我已经考虑过了,但还没有找到方法。问题是复杂类型定义的部分和错误消息之间没有简单的对应关系。当您的输入对复杂类型无效时,Saxon 努力尝试找出真正的错误,从而导致消息“X 元素在此处无效,但如果它在命名空间 N 中则有效” .
  • 是的,我是这么认为的。没有简单的方法可以在 cplx 类型定义和相关错误消息之间建立联系。还是谢谢!
猜你喜欢
  • 2014-07-21
  • 1970-01-01
  • 1970-01-01
  • 2012-12-12
  • 2014-05-31
  • 2011-10-21
  • 2014-08-15
相关资源
最近更新 更多