xml - xslt 测试 bool 表达式中的 IN 函数

标签 xml xslt

无法在任何地方找到答案是否可以在 XSLT 中执行 test="$var in ('Val1','Val2','Val3')" 而不是执行 test ="$var='Val1' 或 $var='Val2' 或 $var='Val3'"?

最佳答案

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

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

它返回一个 bool 结果,测试第一个字符串是否包含第二个字符串。

帮助减少部分字符串匹配的误报结果的常用方法是使用定界符并用该定界符填充值:

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

这样,如果 $var 的值为“Val”,只有在将“Val”添加到正在测试的值列表。

在 XSLT 2.0 中,您可以使用:

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

如果 $var 等于序列中的任何项目(当括号内有逗号分隔的值列表时定义的内容),它将返回 true。

另一个 XSLT 2.0 解决方案:

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

关于xml - xslt 测试 bool 表达式中的 IN 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7723797/

相关文章:

c# - HttpHandler - 大型 Xml - 标记已损坏

html - 如何在 XSLT 中插入 html 文本?

xml - 如何使用 XSLT 创建一组元素的子集(其中元素名称很复杂)?

c# - 使用 System.Xml.Linq 命名空间的显式元素结束标记

sql-server - SQL Server 2008 中 XML 变量的大小限制

xml - 使用父属性动态解码子 XML

xml - 如何在 Word 中使用 XSL 设计导入的 XML?

c# - XSD.exe 缺少嵌套属性

c# - 在 Visual Studio 2010 中使用扩展对象调试 XSLT

.net - XSL 排序问题