1

我有这个 XPath 表达式,它可以过滤包含通配符字符串的行

但是当搜索为空或为空时,我希望它最初返回所有行。如果可能的话,我需要排队。

[contains(translate(concat(' ',@Title,' '),$upper,$lower),$search)]

请注意,如果我将“”传递给 $search,则会返回所有行。但我没有用户必须这样做。

4

1 回答 1

1

使用

absoluteExpressionSelectingAllElements
    [not(absoluteExpressionSelectingAllElements
             [contains(translate(concat(' ',@Title,' '),$upper,$lower),$search)])
    ]

|

  absoluteExpressionSelectingAllElements
             [contains(translate(concat(' ',@Title,' '),$upper,$lower),$search)] 

此表达式是|两个子表达式的并集 ( ),其中一个不选择任何内容,另一个选择搜索结果(如果非空)或所有元素。

更一般地说,要在条件为时选择所有节点并expr1在条件为时选择所有节点,请执行以下操作condtrue()expr2condfalse()

expr1[cond] | expr2[not(cond)]
于 2013-05-17T15:08:29.763 回答