我如何找出 xpath 中的属性是否包含特定列表中的任何值,
例如在下面的情况下,我想从列表 {"35","36","37"} 中找到
X/Y
,其属性 A
有任何值。输出应该是第三个 Y
元素。
<X>
<Y A="1" ></Y>
<Y A="2" ></Y>
<Y A="35" ></Y>
</X>
你可以用 xpath 1.0 尝试一下,但这有点麻烦,因为你必须分解有问题的列表:
//Y[./@A="35" or ./@A="36" or ./@A="37"]
在 xpath 2.0+ 中,它更容易,因为您可以针对序列进行测试...
/X/Y[@A=('35','36','37')]
或正则表达式(如果扩展函数可用,则在 xpath 1.0 中也可能是可能的)
/X/Y[matches(@A,'^3[5-7]$')]
在 XPath 1.0 中您可以使用:
//Y[@A = 35 or @A = 36 or @A = 37]
或者更奇特的东西:)
//Y[contains("|35|36|37|", concat('|', @A, '|'))]