#xquery #exist-db #exide
Вопрос:
У меня есть XML-файл, и мне нужно отобразить текст в HTML в eXist-db с помощью XQuery. В тексте каждое слово должно иметь комментарий с помощью функции наведения, что я уже сделал. Проблема в том, что в 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, потеряны.
Комментарии:
1. Пожалуйста, приведите пример желаемого выходного XML на основе вашего входного примера.
2. Ваш запрос ссылается на элементы и пространства имен, не включенные в ваш пример ввода. Если вы ожидаете полезного ответа, пожалуйста, приведите воспроизводимый пример.