您知道如何在两个单例标签之间选择内容进行XQuery查询,例如
<pb n="1"/>
this is <foo>page</foo> number one
<pb n="2"/>
this is <bar>page</bar> number two
<pb n="3"/>
this is <x>page</x> number three
我想要第二页的内容,所以在<pb n="2"/>
和下一个<pb/>
之间。输出应该是:
this is <bar>page</bar> number two
答案 0 :(得分:3)
您可以使用following-sibling
和<<
运算符一起执行此操作,如下所示:
let $xml := <xml>
<pb n="1"/>
this is <foo>page</foo> number one
<pb n="2"/>
this is <bar>page</bar> number two
<pb n="3"/>
this is <x>page</x> number three
</xml>
return
$xml/pb[2]/following-sibling::node()[. << $xml/pb[3]]
HTH!
答案 1 :(得分:1)
在TEI wiki上查看David Sewell的milestone-chunk()函数。请注意,本文还指向了eXist-db扩展函数util:get-fragment-between()。
答案 2 :(得分:0)
这个查询恰好是纯XPath 2.0表达式:
/*/node()[not(self::pb) and preceding-sibling::pb[1]/@n eq '2']
在此XML文档上执行(提供的XML片段包装在单个顶部元素中):
<t>
<pb n="1"/>
this is <foo>page</foo> number one
<pb n="2"/>
this is <bar>page</bar> number two
<pb n="3"/>
this is <x>page</x> number three
</t>
产生了想要的正确结果:
this is <bar>page</bar> number two