找不到答案,無論您是否可以在XSLT中執行test="$var in ('Val1','Val2','Val3')"
而不是執行test="$var='Val1' or $var='Val2' or $var='Val3'"
?xslt測試中的IN函數布爾表達式
3
A
回答
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')
相關問題
- 1. 布爾表達式中的評估函數和表達式
- 2. 在Python字符串中測試布爾表達式
- 3. xslt:如果如何測試布爾值
- 4. XSLT 1.0 xsl:布爾選擇測試
- 5. 測試返回布爾值的函數
- 6. 布爾表達式
- 7. 布爾表達式
- 8. 布爾表達式
- 9. 嵌套布爾測試的F#計算表達式?
- 10. 測試表達式是否爲函數?
- 11. 2的倍數的布爾表達式
- 12. 與numpy的數組布爾表達式
- 13. PostgreSQL的計數(布爾表達式)
- 14. 布爾測試在Python中的列表
- 15. clojure中的表達式的布爾值
- 16. 布爾表達式示例
- 17. 布爾表達式Where Where
- 18. 簡化布爾表達式
- 19. 簡化布爾表達式
- 20. 簡化布爾表達式
- 21. 混淆布爾表達式
- 22. simplifing布爾表達式
- 23. 在布爾表達式
- 24. 評估布爾表達式
- 25. 簡化布爾表達式
- 26. Null值 - 布爾表達式
- 27. 從布爾表達式
- 28. 布爾表達式評估
- 29. XSLT正則表達式替換函數
- 30. T-SQL函數在調用時表現爲布爾表達式?