我试图从我们的XML本机db中提取一些数据,如果一个元素的值在包含的值序列中。不要以为我说得对。例如,
给出以下XML:
<root>
<a>1</a>
<root>
似乎应该有办法做一些事情(原谅语法,视为伪)
where root/a in (1,2,3,4)
从我的所有搜索中,这似乎是不可能的。充其量,我得到了:
where root/a = 1 or root/1 = 2 or root/a = 3 etc
有更好的方法吗?
答案 0 :(得分:5)
您只需使用=
运算符:
where root/a = (1,2,3,4)
=
适用于类似 contains 的设定值,这正是您所需要的。将=
与eq
对比,需要原子值进行比较。
以下是一个完整的例子。
<强> XML:强>
<root>
<parent>
<a>1</a>
</parent>
<parent>
<a>4</a>
</parent>
<parent>
<a>10</a>
</parent>
</root>
XQuery:
for $p in /root/parent
where $p/a = (1,2,3,4)
return $p
输出
<parent>
<a>1</a>
</parent>
<parent>
<a>4</a>
</parent>
演示:xpathtester