跟随兄弟姐妹的Xquery,但是连续吗?

时间:2015-03-01 00:37:13

标签: xpath xquery

我需要一个源自节点'a'的XPath查询,以返回一些连续跟随'b'节点和一些连续跟随'c'节点的节点。所以在这个片段中 -

<a />
<b />
<b />
<c />
<d />
<e />
<a />
<b />
<b />
<b />
<b />
<c />

会是 -

<b />
<b />
<c />

如果我针对第一个“a”节点和

运行它
<b />
<b />
<b />
<b />
<c />

如果我跑到第二个。

订购事项,我找不到不涉及合并单独表达式的解决方案。

1 个答案:

答案 0 :(得分:0)

对此最好的选择可能是递归函数,如

declare function local:successors($n as node()) as node()* {
  if ($n/following-sibling::*[1][self::b|self::c])
  then ($n, local-successors($n/following-sibling::*[1])
  else $n
};

local:successors($a)

假设你想要XQuery作为你的标题,而不是像问题正文中那样的XPath。