我希望我不是在问一个愚蠢的问题,但我自己现在还找不到答案。
情况:
我有一个XML文件,该文件必须针对XSD 1.1(带有很多断言)进行验证。为了进行验证,我使用以下xerces版本:org.opengis.cite.xerces:xercesImpl-xsd11:2.12-beta-r1667115。
正如在Stackoverflow上已经说过很多次一样,这似乎是XSD 1.1的唯一可用版本。是的,它运行良好。
验证之后,我需要知道每一个违反断言规则的情况,因为(在我的用例中,它们仅暗示一些统计问题,之后应向用户报告。)>
我重写了错误处理程序,以收集运行期间所有违反规则的情况。
在XSD文件中,规则如下所示:
<xs:assert test="if(SVDUSCHENBADEN/@value = (2,3) and (SVOBERKOERPER/@value = 0 or SVKOPF/@value = 0 or SVINTIMBEREICH/@value = 0)) then false() else true()"> <xs:annotation> <xs:appinfo> <das:rule_id value="70011"/> <das:rule_text value="Hinweis: Für das Datenfeld 'Duschen oder Baden einschließlich Waschen der Haare' ist [2] = 'überwiegend unselbständig' oder [3] = 'unselbständig' und für eines der Datenfelder 'Waschen des vorderen Oberkörpers','Körperpflege im Bereich des Kopfes' oder 'Waschen des Intimbereichs' ist [0] = 'selbständig' angegeben (Die Angaben können zu einer Auffälligkeit in der statistischen Plausibilitätsprüfung führen)"/> <das:rule_type value="WARNING"/> <das:rule_fields> <das:field value="SVDUSCHENBADEN"/> <das:field value="SVINTIMBEREICH"/> <das:field value="SVKOPF"/> <das:field value="SVOBERKOERPER"/> </das:rule_fields> </xs:appinfo> </xs:annotation> </xs:assert>
我曾天真地希望我可以访问例如验证运行的错误处理过程中,“ das_rule_text”的值,但我仅获得发生错误的结束标记的行号和行号,以及类似这样的预设错误消息:
cvc-assertion: Assertion evaluation ('if(SVDUSCHENBADEN/@value = (2,3) and (SVOBERKOERPER/@value = 0 or SVKOPF/@value = 0 or SVINTIMBEREICH/@value = 0)) then false() else true()') for element 'qs_data' on schema type 'das_qs_data_type' did not succeed.
是否有一种方法可以在验证过程中读取XSD规则的内容?还是之后?我是完全摆脱了困境还是在这里错过了明显的事情?
[请帮助我找到正确的方向。
再见,Torsten ...
我希望我不是在问一个愚蠢的问题,但我自己现在还找不到答案。情况:我有一个XML文件,该文件必须针对XSD 1.1进行验证(有很多断言)。对于...
对不起,您很失望。有问题的整个XSD片段仅用于文档目的。它仅适用于人类。