2011-10-11 39 views

回答

2

在XSLT 1.0,您可以使用contains()功能:

test(contains('Val1,Val2,Val3',$var))` 

它返回一個布爾結果,測試第一個字符串是否包含第二個字符串。

一種常見方式,以幫助減少部分串假陽性結果的匹配是使用一個分隔符,墊與分隔符的值:

test="contains(' Val1 Val2 Val3 ', concat(' ',$var,' ')) 

這樣一來,如果$var值是「Val」 ,只有當「Val」被添加到正在測試的值列表中時纔會返回true。

在XSLT 2.0中,你可以使用:

test="$var = ('Val1','Val2','Val3')" 

它將如果$var是序列中等於任何項目返回true(這是當你有一個逗號分隔的列表定義是什麼括號內的值)。

另一個XSLT 2.0溶液:

test="some $value in ('Val1','Val2','Val3') satisfies $var=$value" 
0

XSLT/XPath不支持IN表達式。

但是您可以將這些值存儲到XML片段中並在其中進行搜索。

1

I.的XPath 1.0/XSLT 1.0

使用

contains(concat($Sep, 'Val1', $Sep, 'Val2', $Sep, 'Val3', $Sep), 
     concat($Sep, $var, $Sep) 
     ) 

其中$Sep是保證一個字符串不出現在任何值中。

當一個或多個值以$var開始或結束時,排除誤報是必要的。

比較更容易,如果'Val1''Val2''Val3'是文本節點(比如中/a/b

$var = /a/b 

II。 XPath 2.0(XSLT 2.0)

$var = ('Val1', 'Val2', 'Val3')