XSD验证失败时的自定义错误消息

时间:2012-10-19 19:47:18

标签: xml xsd

我正在用xsd验证xml文件,我想向用户返回有意义的消息。有没有办法在xsd中构建自定义消息。

2 个答案:

答案 0 :(得分:5)

答案“不”和“是”(或“是,但......”)都适用于此,具体取决于您的需求;不幸的是,出于所有实际目的,答案是“不”。

XSD规范没有指定或约束API或用户界面,因此没有标准方法在XSD架构文档中指定在违反特定约束时向用户提供的消息。模式处理器允许您以某种方式控制错误消息是完全合法的,并且xs:appinfo元素部分包含在内以使这样的事情变得可行。但我不知道任何实际上提供这种设施的模式验证器(我很乐意了解其中的任何设施)。

一种可能的解决方法:XSD确实建议了验证器使用的特定错误代码,因此如果验证器提供验证结果的API,您可能能够识别引发的错误并使用错误代码和位置信息来生成合适的错误为您的用户留言。如果您的处理器产生可以解析的书面输出,情况也是如此。

获取漂亮的用户可指定错误消息的最简单方法是使用Schematron,该方法基于出错的原因进行定制,它规定处理器使用模式作者指定的错误消息。 (我希望有一些处理国际化的问题,但我不知道任何细节。)

答案 1 :(得分:0)

使用Schematron来验证文档,该https://play.golang.org/p/gpt2KmsVrz使用一组规则 - 每个规则都带有自定义错误消息。所有这些错误消息都出现在验证报告中,称为SVRL,以及输入文档中的相应错误位置(XPath)。