我有这个XPath表达式,用于过滤包含通配符字符串
的行但是当搜索为null或为空时,我希望它最初返回所有行。如果可能的话,我需要排队。
[contains(translate(concat(' ',@Title,' '),$upper,$lower),$search)]
请注意,如果我将“”传递给$ search,则会返回所有行。但是我没有用户那么做。
答案 0 :(得分:1)
使用强>:
absoluteExpressionSelectingAllElements
[not(absoluteExpressionSelectingAllElements
[contains(translate(concat(' ',@Title,' '),$upper,$lower),$search)])
]
|
absoluteExpressionSelectingAllElements
[contains(translate(concat(' ',@Title,' '),$upper,$lower),$search)]
此表达式是两个子表达式的并集(|
),其中一个子表达式不选择任何内容,另一个选择搜索结果(如果非空)或所有元素。
更一般地说,当条件expr1
为cond
时,true()
选择所有节点,并expr2
选择所有节点,cond
1}}是false()
,执行:
expr1[cond] | expr2[not(cond)]