eXist-db XQuery:如何在ft:query找到的<div>中获取最近的<pb>元素

时间:2018-08-27 15:39:11

标签: xquery exist-db

我在eXist-db中的TEI XML文档集合中对div元素进行了Lucene索引。通过文档名称,章节编号和章节编号(即http://website.com/document.xml/7/36)访问document.xml第7章中第36部分的文档部分。

我使用以下xquery代码进行搜索:

let $results :=  
    for $doc in $documents return
        for $chapter at $chapter_no in $doc//tei:text/tei:body/tei:div
            for $section at $section_no in $chapter/tei:div
                let $text_with_matches := if ($q='') then $chapter
                    else $section[ft:query(., $q)]
                where $text_with_matches
                return
                <result_list>
                    <chapter_no>{$chapter_no}</chapter_no>
                    <section_no>{$section_no}</section_no>                                 
                    <kwic>{kwic:summarize($text_with_matches,
                           <config width="55"/>)}
                    </kwic>
                </result_list> 
return  
    <results>
        {$results}
    </results>

如果$ q为“葡萄牙”,则得到如下结果:

<results>
    <result_list>
        <text_with_matches/>
        <chapter_no>7</chapter_no>
        <section_no>26</section_no>
        <kwic>
            <p>
                <span class="previous">
                    ... var i stedse mere rivende Nedgang: Spanien og
                </span>
                <span class="hi">Portugal</span>
                <span class="following">
                    , Italien, Rumænien, de sydamerika ...
                </span>
            </p>
        </kwic>
    </result_list>
</results>

现在,除了Chapter_no和section_no,我还想要页码。这些是使用pb(分页符)元素制成的。例如。文档中第5页的末尾和第6页的顶部看起来像这样:

... paa alle disse <pb n="6"/> Omraader. Det var ...

因此,在找到的文本之前的部分中的pb元素中,我想要最后一个(即,最接近找到的文本)的编号。

有人知道如何修改xquery来实现吗?

0 个答案:

没有答案