XPath:嵌套/复杂条件

时间:2013-12-09 16:45:08

标签: xpath conditional-statements schematron

我的xml数据的某个元素应该与以下条件中的EXACT ONE匹配:

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)">

但这不起作用。显然,括号中的内容被忽略了。那么,我如何构建复杂/嵌套的条件表达式?

1 个答案:

答案 0 :(得分:4)

适用于您的案例的示例:

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