Не удается правильно отобразить текст xml в XQuery

У меня есть файл 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>

и это мой код, как я генерирую текст

      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. Надеюсь, объяснение понятно. Ключевой элемент - просто найти комментарии, относящиеся к словам,

0 ответов

Другие вопросы по тегам