I have a function which returns paragraphs from the text. So I'm comparing the <anchor>
tag's attribute number(@n
) to the <notes>
tag's attribute number, if it's the same I want to print it with the tooltip if not I just want to print out the paragraph.
declare function letter:text_trans($node as node(), $model as map(*))
{
let $resource := collection('/db/apps/Tobi-oshki/data')
for $ab in $resource//tei:div[@type="translation"]/tei:ab
for $note in $resource//tei:div[@type="notes"]/tei:note
return
if (data($note/@n) eq data($ab/tei:anchor/@n))
then
<div class="tooltip">{$ab}
<span class="tooltiptext"> {data($note/@n)}.{$note}</span>
</div>
else
<p> {$ab} </p>
};
In <notes>
I have three notes and when it loops over the notes, each paragraph is returned three times.
How can I change it so it returns the paragraphs only one time?
I am using xquery version "3.1";
Inside the for loop on the $ab
, let a variable for the $note
and select notes that have @n
attribute values that match the $ab
, then if there is a matching $note
, use it, else return the <p>
using just the $ab
:
let $resource := collection('/db/apps/Tobi-oshki/data')
for $ab in $resource//tei:div[@type="translation"]/tei:ab
let $note := $resource//tei:div[@type="notes"]/tei:note[@n = $ab/tei:anchor/@n]
return
if ($note)
then
<div class="tooltip">{$ab}
<span class="tooltiptext"> {data($note/@n)}.{$note}</span>
</div>
else
<p> {$ab} </p>
With this input:
<tei:doc>
<tei:div type="notes">
<tei:note n="1">note1</tei:note>
<tei:note n="2">note2</tei:note>
</tei:div>
<tei:div type="translation">
<tei:ab><tei:anchor n="1">translated note1</tei:anchor></tei:ab>
<tei:ab><tei:anchor n="3">translated note3</tei:anchor></tei:ab>
</tei:div>
</tei:doc>
the code above produces this output:
<div class="tooltip">
<tei:ab xmlns:tei="tei">
<tei:anchor n="1">translated note1</tei:anchor>
</tei:ab>
<span class="tooltiptext">1.<tei:note n="1" xmlns:tei="tei">note1</tei:note>
</span>
</div>
<p>
<tei:ab xmlns:tei="tei"><tei:anchor n="3">translated note3</tei:anchor></tei:ab>
</p>