Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ph schematron验证错误消息_Java_Xml_Validation_Schematron - Fatal编程技术网

Java ph schematron验证错误消息

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

我正在使用验证我的XML文件。我能够正确地验证文件,但找不到如何生成关于失败断言的报告

这是我的背景(兴趣点):


这是我的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
的列表。