这是我的代码,旨在创建一个 XQuery 请求,以便在 xml 文档(personne.xml,下面给出)中查找一个单词,但我有一个问题:该变量$var
包含整个 xml 文件,即使我选择了节点$books-doc/Dictionnaire/mot
。
declare namespace page = 'http://basex.org/modules/web-page/traitement.xq';
declare
%rest:path("")
%output:method("xhtml")
%output:omit-xml-declaration("no")
%output:doctype-public("-//W3C//DTD XHTML 1.0 Transitional//EN")
%output:doctype-system("http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd")
function page:start() as element(Q{http://www.w3.org/1999/xhtml}html)
{
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Recherche de mot</title>
</head>
<body>
<h3>Mon dictionnaire</h3>
<p>Veuillez écrire mot à chercher</p>
<form method="post" action="traitement">
<p>Votre mot:<br />
<input name="mot" size="50"></input>
<input type="submit" /></p>
</form>
</body>
</html>
};
declare
%rest:path("/traitement")
%rest:POST
%rest:form-param("mot","{$mot}", "(no mot)")
function page:recherche($mot as xs:string) as element(Q{http://www.w3.org/1999/xhtml}html)
{
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Recherche du mot: {$mot} </title>
</head>
<body>
<h1>Recherche du Mot: {$mot}</h1>
<p> Letraitement :
{
let $books-doc := doc("personne.xml")
for $var in $books-doc/Dictionnaire/mot
return
if ($var/genre != $mot) then
<li> {$var/genre}</li>
else
<li> {$var/genre} </li>
}
</p>
</body>
</html>
};
page:start()
XML 文件 personne.xml:
<Dictionnaire>
<mot>
<genre>Mot 1</genre>
<synonyme>syno 1</synonyme>
<definition>Def 1</definition>
</mot>
<mot>
<genre>Mot 2</genre>
<synonyme>syno 2</synonyme>
<definition>Def 2</definition>
</mot>
</Dictionnaire>