【发布时间】:2012-10-19 19:47:18
【问题描述】:
我正在使用 xsd 验证 xml 文件,并且我想向用户返回有意义的消息。有什么方法可以在 xsd 中构建自定义消息。
【问题讨论】:
我正在使用 xsd 验证 xml 文件,并且我想向用户返回有意义的消息。有什么方法可以在 xsd 中构建自定义消息。
【问题讨论】:
“否”和“是”(或“是,但是……”)的答案都适用于此,具体取决于您想要什么;不幸的是,出于所有实际目的,答案都是“否”。
XSD 规范没有指定或限制 API 或用户界面,因此没有标准方法可以在 XSD 架构文档中指定在违反特定约束时向用户提供什么消息。模式处理器允许您以某种方式控制错误消息是完全合法的,并且包含 xs:appinfo 元素部分是为了使类似的事情变得可行。但我不知道有任何模式验证器确实提供了这种设施(我很高兴知道有这样的工具)。
一种可能的解决方法:XSD 确实建议验证器使用特定的错误代码,因此如果您的验证器为验证结果提供 API,您可能能够识别引发的错误并使用错误代码和位置信息生成合适的错误给您的用户的消息。如果你的处理器产生你可以解析的书面输出,情况也是如此。
获取漂亮的用户可指定错误消息的最简单方法是使用 Schematron,它确实规定处理器使用模式作者指定的错误消息。 (我希望在某个地方可以处理国际化,但我不知道任何细节。)
【讨论】:
使用Schematron,它使用一组规则(每个规则都有一个自定义错误消息)来验证文档。所有这些错误消息都显示在验证报告中,称为 SVRL,以及输入文档中相应的错误位置 (XPath)。
【讨论】: