2012-10-25 60 views
1

可能重複:
XSLT expression to check if variable belongs to set of elements測試,如果參數是幾個值中的一個XSLT

給定參數,$name,什麼是檢查它的價值是很短的,清潔的方式等於有限數量的值之一?

例如,我想合併這些when測試中的前3個,因爲它們的內容完全相同。

<choose> 
    <when test="$name='Alice'"> 
    <when test="$name='Bob'"> 
    <when test="$name='Cindy'"> 
    <when test="$name='Dave'"> 
    <otherwise> 

喜歡的東西test="$name in ['Alice','Bob','Cindy']",但實際上是有效的:P

回答

6

使用XSLT 2.0,只需使用$name = ('Alice', 'Bob', 'Cindy')即可。

+0

不錯!愛它。比concat/contains和fn:tokenize/fn:index-模式更清潔。您應該添加此作爲重複的替代答案以及:http://stackoverflow.com/q/1007018/39321 – Svish

+0

請注意,測試如果值不在列表中,您使用'not($ name = ('Alice','Bob','Cindy'))',因爲'Alice'!=('Alice','Bob','Cindy')的結果是true()。 – iddo

1

使用(無論是在XSLT 1.0和XSLT 2.0)

contains('|Alice|Bob|Cindy|', concat('|', $name, '|')) 

,正如馬丁Honnen已經提到,在XPath 2.0(XSLT 2.0)中,只能編寫

$name = ($seqOfNames) 
相關問題