Java ph schematron验证错误消息
我正在使用验证我的XML文件。我能够正确地验证文件,但找不到如何生成关于失败断言的报告 这是我的背景(兴趣点):Java ph schematron验证错误消息,java,xml,validation,schematron,Java,Xml,Validation,Schematron,我正在使用验证我的XML文件。我能够正确地验证文件,但找不到如何生成关于失败断言的报告 这是我的背景(兴趣点): 这是我的Schematron模式: 测试ISO schematron文件。引入模式 此模式使用保留操作代码验证调用活动。 错误1 错误2 这是我的Java代码: public静态布尔validateXMLViaPureSchematron(@Nonnull final String aSchematronFilePath,@Nonnull final File aXMLFil
这是我的Schematron模式:
测试ISO schematron文件。引入模式
此模式使用保留操作代码验证调用活动。
错误1
错误2
这是我的Java代码:
public静态布尔validateXMLViaPureSchematron(@Nonnull final String aSchematronFilePath,@Nonnull final File aXMLFile)引发异常{
final SchematronResourcePure SchematronResourcePure=SchematronResourcePure.fromtlasspath(aSchematronFilePath);
IPSErrorHandler errorHandler=新的CollectingPSErrorHandler();
schematronResource.setErrorHandler(errorHandler);
最终布尔值validSchematron=SchematronResource.isValidSchematron();
如果(!validSchematron){
抛出新的IllegalArgumentException(“无效Schematron!”);
}
最终源streamSource=新的streamSource(aXMLFile);
最终评估schematronValidity=SchematronResource.getSchematronValidity(streamSource);
返回schematronValidity.isValid();
}
我可以通过调用schematronresource.getSchematronValidity(streamSource)
查看验证结果,但我想查看(一个报告就足够了)哪些规则失败(err1
或err2
)。我读过关于SVRL的SVRL
,但我不知道如何生成报告。
谢谢。只需拨打
applySchematronValidationToSVRL
即可获得完整的SVRL(Schematron验证结果列表)文档。您可以查询失败的断言或报告
仅打印失败的断言的代码示例:
SchematronOutputType schematronOutputType = schematronResourcePure.applySchematronValidationToSVRL(streamSource);
List<Object> failedAsserts = schematronOutputType.getActivePatternAndFiredRuleAndFailedAssert();
for (Object object : failedAsserts) {
if (object instanceof FailedAssert) {
FailedAssert failedAssert = (FailedAssert) object;
System.out.println(failedAssert.getText());
System.out.println(failedAssert.getTest());
}
}
schematronouttype schematronouttype=schematronResourcePure.applySchematronValidationToSVRL(streamSource);
List failedAsserts=schematronOutputType.GetActivePattern和FireDruleAndFailedAssert();
对于(对象:失败的资产){
if(FailedAssert的对象实例){
FailedAssert FailedAssert=(FailedAssert)对象;
System.out.println(failedAssert.getText());
System.out.println(failedAssert.getTest());
}
}
或者,您可以使用SVRLHelper.getAllFailedAssertions(SchematNoutType)
——它返回SVRLFailedAssert
的列表。