捕获序列中的序列

时间:2015-02-03 11:58:37

标签: xquery

说我有一系列项目,

<items>
    <item>B</item>
    <item>D</item>
    <item>A</item>
    <item>B</item>
    <item>C</item>
</items>

我希望捕获A和B项的所有序列

<items>
    <item>B</item>
    <item>D</item>
    <hit>
        <item>A</item>
        <item>B</item>
    </hit>
    <item>C</item>
</items>

这可以用XQuery完成吗?迭代时,上下文项是单数。

我可以

<items>
    <item>B</item>
    <item>D</item>
    <hit-start><item>A</item></hit-start>
    <hit-end><item>B</item></hit-end>
    <item>C</item>
</items>

但这没有帮助,

也没有用
<items>
    <item>B</item>
    <item>D</item>
    <hit-start/>
        <item>A</item>
        <item>B</item>
    <hit-end/>
    <item>C</item>
</items>

1 个答案:

答案 0 :(得分:1)

您可以使用preceding-siblingfollowing sibling“环顾四周”。

<items>{
  for $item in $xml/items/item
  return
    if ($item = "A" and $item/following-sibling::item[1] = "B")
    then (
      <hit-start/>,
      <item>A</item>,
      <item>B</item>,
      <hit-end/>
    )
    else
      $item[not(preceding-sibling::item[1] = "A")]
}</items>
相关问题