Fonction markSearchedText à adapter
Cette fonction permet d'ajouter la balise <mark>
au texte recherché, mais j'ai un problème avec l'initialisation de la variable $target
ligne 49 (de util.xqm) : let $target := if($targetId) then $targetId else 'text'
Je ne comprends pas cette valeur text
(que je n'ai jamais dans mes fichiers xml).
En fait, quand je n'ai pas de $targetId c'est parce que je suis dans le cas où j'affiche l'ensemble du fichier XML.
J'ai donc une url de type : http://127.0.0.1:14037/actes13/doc/Acte_p74.html?search=Rouen
J'ai deux scénarios possibles : soit j'ai un identifiant, et ça fonctionne, soit je n'en ai pas et là je voudrais récupérer tout le noeud <text>
de mon fichier xml et appliquer la balise <mark>
au texte recherché (soit dans mon exemple : Rouen).
J'ai tenté un truc qui ne fonctionne pas... :
if($targetId) then
let $target := $targetId
let $marked := ft:mark($node//*[@*:id=$target][.//text() contains text {$search}])
return if($marked)
then
copy $c := $node
modify (
replace node $c/descendant-or-self::*[@*:id = $target] with $marked
)
return $c
else $node
else(
let $markedDoc := ft:mark($node//*:text[.//text() contains text {$search}])
return if($markedDoc)
then
copy $c := $node
modify (
replace node $c/descendant-or-self::*:text with $markedDoc
)
return $c
else $node
)
Visiblement mon $markedDoc
ne contient rien (alors que dans basexgui j'ai des résultats), et du coup ça passe directement dans le else $node
(c'est-à-dire mon texte sans les balises <mark>
)
Je ne sais pas trop comment faire...