我是 xquery 的初学者,希望您能帮我简单解释一下。我正在使用 BaseX 7.0.1。
我有一个如下所示的 dictionary.xml 文件:
<doc>
<entry>
<vedette>je</vedette>
<variante>je</variante>
<variante>j'</variante>
<partiedudiscours>pronom</partiedudiscours>
</entry>
</doc>
我还有另一个 malone_fr.xml 文件,其中包含我要注释的文本,如下所示:
<doc>
L’Opportunité
Par : Walter Malone (1866-1915)
Ils ont mal conclu ceux qui disent que je ne reviendrai plus
Quand une fois j’ai frappé à ta porte et ne t’ai pas rencontré,
</doc>
所以我想将dictionary.xml 的< variante > 部分的内容与我的文本进行比较,并用< partiedudiscous > 的内容标记文本。到目前为止,我已经能够使用以下代码做到这一点:
let $comp := data(for $j in tokenize(for $i in db:open('malone_fr')/doc return $i,"\n")
return tokenize($j," "))
for $aa in $comp
return
for $lemme in db:open('dictionnaire')/doc/entry
return
let $oldName :=$aa
return
if ($oldName= $lemme/variante)
then
let $newName := element {$lemme/partiedudiscours} {$aa}
return
for $bb in $comp
return
if ($bb=$oldName)
then $newName
else ($bb)
else ()
这给了我以下结果:[第一次迭代]
L’Opportunité Par : Walter Malone (1866-1915) Ils<verbe>ont</verbe> mal conclu ceux qui disent que je ne reviendrai plus
[第二次迭代]
L’Opportunité Par : Walter Malone (1866-1915) <pronom>Ils</pronom>ont mal conclu ceux qui disent que je ne reviendrai plus
如您所见,它仅通过迭代显示每个单词的结果,而我需要一个带有整个文本注释的结果,如下所示:
L’Opportunité Par : Walter Malone (1866-1915) <pronom>Ils</pronom><verbe>ont</verbe> <adverbe>mal</adverbe> <verb>conclu</verb>
等等。我不知道如何处理 for 循环来做到这一点。
提前致谢。