无法理解 Schema/Schematron 验证器的重要性

Can't understand importance of Schema/Schematron Validator

我正在通过 Schema/Schematron 验证器验证资源。我向它提供了无效的 xml 患者资源,它仍然没有抱怨并给出输出 'Validation passed'.

正如您在下面的代码片段中看到的那样,我给出了多个性别和生日以及一个来自架构的不同标签作为虚拟标签。还有一个性别标签具有无效值 'male1':

FhirContext ctx = FhirContext.forDstu2();


 String msgString2 = "<Patient>\r\n" + 
 "        <gender value=\"male1\"/>\r\n" + 
 " <gender value=\"female\"/>\r\n" + 
 "        <birthDate>1953-12-20</birthDate>\r\n" + 
 " <birthDate>1953-12-20</birthDate>\r\n" + 
 " <dummytag>abcd</dummytag>\r\n" + 
 "</Patient>";

 IParser parser = ctx.newXmlParser();
 Patient patient = parser.parseResource(Patient.class, msgString2);

 FhirValidator val = ctx.newValidator();
 IValidatorModule module1 = new SchemaBaseValidator(ctx);
 IValidatorModule module2 = new SchematronBaseValidator(ctx);
 val.registerValidatorModule(module1);
 val.registerValidatorModule(module2);

 ValidationResult result = val.validateWithResult(patient);
 if (result.isSuccessful()) {

    System.out.println("Validation passed");

 } else {
    // We failed validation!
    System.out.println("Validation failed");
 }

所以我的问题是你能告诉我吗,在这种情况下它会打印 'Validation failed'?

此致, 阿米特.

在 DSTU3 中尝试它,现在已经有一段时间了,还修复了几个与 XPath 相关的问题。