0

我对 SQL 和 xpath 有一定的了解,但没有 xquery。我如何编写查询来获取一个字段中包含的 XML 具有相同元素的两个实例的所有记录,该元素还包含子元素的匹配数据。

让我举例说明:

表:Fred
表字段:id, time, xmlone, xmltwo.
我想在此表中查找所有记录,其中xmlone包含以下内容:

<!--xmlstart-->
<!--...any number of elements-->
<elementone position="1">
  <subelea>2010-01-01</subelea>
  <subeleb>hg72</subeleb>
  <subelec>George</subelec>
</elementone>
<!--...any number of elements here (may not end at same level)-->
    <elementone position="2">
      <subelea>2010-01-01</subelea>
      <subeleb>hg72</subeleb>
      <subelec>John</subelec>
    </elementone>
<!--xmlend-->

注意我只想要匹配 wheresubeleasubelebis 匹配。也可能有 的重复项elementone,但我不关心这一点,除非数据来自subeleasubeleb匹配。

4

1 回答 1

1
(: Self-join on all <elementone/> :)
for $i in //elementone, $j in //elementone
where $i != $j
(: Compare `$i` and `$j` on the subelements that should be equal (or whatever) :)
and $i/subelea eq $j/subelea
and $i/subeleb eq $j/subeleb
(: Return result :)
return $i

如果您需要处理重复项(在元素级别,不关心输入中是否有两个具有完全相同内容的元素),请将所有内容括在括号中并添加/.(步骤操作处理重复项)。

(
  for $i in //elementone, $j in //elementone
  where $i != $j
  and $i/subelea eq $j/subelea
  and $i/subeleb eq $j/subeleb
  return $i
)/.
于 2012-12-05T11:16:38.953 回答