我有 XML 文件,需要使用 XQuery 在 eXist-db 中以 HTML 格式呈现文本。在文本中,每个单词都应该通过悬停功能进行评论,我已经这样做了。问题是,在 XML 文件中,我有段落标签(ab 标签)、单词标签(rs 标签),但我也有标点符号字母或其他单词或 rs 标签之外的单词的某些部分。这是 XML 文件的片段:
<ab>
<rs type="pers" key="66">[7125.5]მე</rs>,
<rs type="pers" key="511">ტო[7125.1]ბი</rs>,
<rs type="pers" key="510">გზათა</rs>
<rs type="pers" key="367">ჭტ͠ბისათ</rs>
<rs type="pers" key="509">ვიდ</rs>
<supplied reason="lost">ო</supplied>
და
<rs type="pers" key="513">სიმ͠რთლისათა</rs>
<supplied reason="lost">
<rs type="pers" key="523">ყოველთა</rs>
<rs type="pers" key="763">დღეთა</rs>
<rs type="pers" key="1509">ცხორებისა</rs>
</supplied>
<rs type="pers" key="417">ჩ͠მისათა</rs>,
და.
</ab>
这是我生成文本的代码
xquery version "3.1";
module namespace letter="http://exist-db.org/db/apps/tobi-oshki/modules/letter";
import module namespace templates="http://exist-db.org/xquery/templates" ;
import module namespace config="http://exist-db.org/db/apps/tobi-oshki/config" at "config.xqm";
declare namespace tei="http://www.tei-c.org/ns/1.0";
declare function letter:text_orig($node as node(), $model as map())
{
let $resource := collection('/db/apps/Tobi-oshki/data')
for $ab in $resource//tei:div[@type="original"]/tei:ab
for $item in tokenize($ab)
return
<p>
{
for $rs in $ab//tei:rs
let $note := $resource//tei:div[@type="notes"]/tei:note[@n = $rs//tei:anchor/@n]
return
if ($item eq $rs) then
if(data($rs/@key)) then
if ($note) then
<span data-toggle="tooltip" data-placement="top"
title="{letter:text_lem(data($rs/@key))} note: {data($note/@n)}.{$note} "> {$rs/data()} </span>
else
<span data-toggle="tooltip" data-placement="top"
title="{letter:text_lem(data($rs/@key))} "> {$rs/data()} {" "}</span>
else
()
else
$item
}
};
所以在我获取文件的代码中,我循环遍历段落并返回段落
元素。在该循环中,我循环遍历单词并遍历段落中的每个项目。我想如果我比较单词($rs = rs 标签)和文本中的每个项目($item - 包含所有内容),我会打印单词和评论,如果不相等,我也会打印丢失的项目,例如"," 但循环不能正常工作,它只打印 $item 元素并多次打印。
我想渲染整个文本,但我还需要获取 rs 标签以在其上添加评论,并且不要松开其他没有评论且不在 rs 标签中的符号。我希望解释清楚。关键元素只是找到属于单词的评论。 这就是页面现在的样子,文本在那里,但是一些不在 rs 标签中的单词和符号丢失了。