XSLT表达式..IF NULL或EMPTY返回所有行

时间:2013-05-17 14:54:46

标签: xml xslt xpath filter expression

我有这个XPath表达式,用于过滤包含通配符字符串

的行

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

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

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

1 个答案:

答案 0 :(得分:1)

使用

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

|

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

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

更一般地说,当条件expr1cond时,true()选择所有节点,并expr2选择所有节点,cond 1}}是false(),执行

expr1[cond] | expr2[not(cond)]