说我有一系列项目,
<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>
答案 0 :(得分:1)
您可以使用preceding-sibling
和following 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>