如何在验证过程中访问失败的xsd 1.1断言规则?

问题描述 投票:2回答:1

我希望我不是在问一个愚蠢的问题,但我自己现在还找不到答案。

情况:

我有一个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进行验证(有很多断言)。对于...

java xml validation xerces xsd-1.1
1个回答
1
投票

对不起,您很失望。有问题的整个XSD片段仅用于文档目的。它仅适用于人类。

© www.soinside.com 2019 - 2024. All rights reserved.