参数的 exist-db 基数

exist-db cardinality for parameter

我是 exist-db 和 XQuery 的新手。

在 exist-db 中我有这个站点地图:目录 "registranten" 包含目录 "data"(带有 xml-文件)和两个文件 "regBasic.xql" 和"regSearch.xql".

我正在尝试使用脚本 regSearch.xql:

在 xml 文件中搜索
xquery version "3.0";

declare option exist:serialize "method=xhtml media-type=text/html";
declare variable $pageTitle := "Resultat";
declare variable $searchphrase := request:get-parameter("searchphrase", ());

<html>
    <head>
        <meta HTTP-EQUIV="Content-Type" content="text/html; charset=UTF-8"/>
        <title>{$pageTitle}</title>
    </head>
    <body>
        <h1>{$pageTitle}</h1>
        <p>Søgestreng eller søgeord: "{$searchphrase}"</p>
        <ul>
        {
            for $p in collection("/db/registranten/data")//grundtvig/indholdsregest/p[ft:query(., $searchphrase)]
            return
                <li>
                    from: {string(root($p)/grundtvig/filnavn)}<br/>
                    <i>$p</i>
                </li>
        }
        </ul>
    </body>
</html>

当我评估脚本时出现此错误:"exerr:ERROR XPTY0004: The actual cardinality for parameter 2 does not match the cardinality declared in the function's signature: ft:query($nodes as node(), $query as item()) node(). Expected cardinality: exactly one, got 0. [at line 17, column 100, source: /db/apps/registranten/regSearch.xql]"

这是什么意思,脚本有什么问题?

您的 $searchphrase 变量是一个空序列,这可能表明您没有使用 request:get-parameter().

设置请求参数