6

我正在使用 xsd 验证 xml 文件,并且我想向用户返回有意义的消息。有什么方法可以在 xsd 中构建自定义消息。

4

2 回答 2

5

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

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

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

获得漂亮的用户可指定错误消息的最简单方法是使用 Schematron,它确实规定处理器使用模式作者指定的错误消息,并且可以根据问题进行自定义。(我希望在某个地方有一些处理国际化的问题,但我不知道任何细节。)

于 2012-10-19T23:53:32.927 回答
0

使用Schematron,它使用一组规则(每个规则都有一个自定义错误消息)来验证文档。所有这些错误消息都出现在验证报告中,称为 SVRL,以及输入文档中的相应错误位置 (XPath)。

于 2016-01-28T15:14:18.620 回答