Saxon和XML Schema 1.1自定义验证消息

时间:2016-04-19 14:35:26

标签: xml xsd saxon

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

1 个答案:

答案 0 :(得分:1)

我想到了几种机制。

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

http://www.saxonica.com/documentation/index.html#!schema-processing/extensions11/saxon.message

其次,您可以将所有验证消息发送到XML报告文件,然后可以转换该文件。在验证命令行上使用RecordRec *DataRec = ...; std::wstring DataSt; if (DataRec->St) { HANDLE hProcess = OpenProcess(PROCESS_VM_READ, FALSE, TheDelphiAppProcessID); int len = 0; SIZE_T numRead = 0; ReadProcessMemory(hProcess, LPBYTE(DataRec->St)-4, &len, 4, &numRead); if (len > 0) { DataSt.resize(len); ReadProcessMemory(hProcess, DataRec->St, &DataSt[0], len*2, &numRead); } CloseHandle(hProcess); } // use DataSt as needed... ,或在s9api API中使用-report:filename。报告文件的格式由SchemaValidator.setValidityReporting()下载文件中提供的模式定义。

您可以使用@kjhughes建议的saxon-resources.zip - 传递给ErrorListener的ErrorListener对象中的错误信息是一种结构化形式 - 但是(a)我认为XML报告是更容易操作,(b)我们发现在验证运行中报告了几百个错误,ValidationException接口所需的创建异常对象的成本可能是整个运行时间的重要部分。 Java Exceptions并非真正用于此目的。