Надеюсь, я не задаю глупый вопрос, но сам пока не смог найти ответ.
Ситуация:
У меня есть файл 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>
I ожидал (по моей наивности), что у меня будет доступ, например, к значению "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 во время проверки? Или потом? Я полностью сошел с рельсов или пропустил что-то очевидное здесь?
Пожалуйста, помогите мне найти правильное направление.
Пока, Торстен ...