XPath: вложени/сложни условия

определен елемент от моите xml данни трябва да отговаря на ТОЧНО ЕДНО от следните условия:

1.) Има атрибут @when и нищо друго.

2.) Има атрибут @when-iso и нищо друго.

3.) Има атрибут @notBefore-iso и @notAfter-iso, но няма нито @when, нито @when-iso атрибут.

Опитвам се да тествам това с помощта на schematron, но не успявам да създам съответстващ xpath израз.

опитах

<assert test="@when or @when-iso or (not(@when) and not(@when-iso) and @notBefore-iso and @notAfter-iso)">

но това не работи. Очевидно съдържанието в скоби просто се игнорира. И така, как мога да създам сложни/вложени условни изрази?


person cis    schedule 09.12.2013    source източник


Отговори (1)


Пример, който трябва да работи за вашия случай:

<assert test="(@when and count(@*)=1) or (@when-iso and count(@*)=1) or (@notBefore-iso and @notAfter-iso and count(@*)=2)"/>
person Vincent Biragnet    schedule 09.12.2013