2013-05-17 68 views
1

我有這個XPath表達式其工作是過濾行與包含通配符字符串XSLT表達..如果null或空返回所有行

,但我想它最初返回ALL行,當搜索爲空或空。如果可能的話,我需要排隊。

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

請注意,如果我將「」傳遞給$ search,則返回所有行。但我不會那麼做。

回答

1

使用

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

| 

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

該表達式爲二子表達式哪一個中選擇什麼都沒有,而另一個選擇所述搜索的結果的並集(|),如果非空,或所有要素。

更一般地,獲得選擇的所有節點通過expr1在條件condtrue()並獲得選擇的所有節點通過expr2,當condfalse(),不要

expr1[cond] | expr2[not(cond)] 
相關問題