使用XPath表达式检查字符串是否存在于字符串列表中
检查字符串是否存在于列表中的XPath表达式方案
XPath 2.0 及以上版本
XPath 2.0+原生支持序列(类似字符串列表),可以直接用等于比较或exists()函数实现存在性检查,返回布尔值:
直接使用等于运算符
等于运算符作用于序列时,会检查目标字符串是否与序列中任意元素匹配,匹配则返回true(),否则返回false():"XY" = ("XY", "PP", "DD")如果用变量存储目标字符串和列表,写法更灵活:
$targetStr = $stringList(其中
$targetStr是你要检查的字符串,$stringList是定义好的字符串序列,比如("XY", "PP", "DD"))使用
exists()函数
先过滤序列中与目标字符串匹配的元素,再检查是否存在匹配结果:exists(("XY", "PP", "DD")[. = "XY"])
XPath 1.0 版本
XPath 1.0不支持原生序列,只能通过**多个逻辑或(or)**拼接等于判断来模拟列表检查:
"XY" = "XY" or "XY" = "PP" or "XY" = "DD"
如果使用变量:
$targetStr = "XY" or $targetStr = "PP" or $targetStr = "DD"
补充说明
你之前用的contains()函数是用于检查一个字符串是否包含另一个子串,不是判断元素是否存在于列表,所以无法满足需求。上述方案都是基于精确匹配的存在性检查,如果需要模糊匹配(比如列表元素包含目标字符串),可以结合contains()和逻辑或(XPath1.0)或序列过滤(XPath2.0+)实现,比如XPath2.0+写法:
exists(("XY", "PP", "DD")[contains(., "X")])
内容的提问来源于stack exchange,提问作者Shubham Chaurasiya
相关产品推荐
相关产品推荐

