2017-12-23 2 views
1

Ich bin neu in Exis-DB und XQuery.exist-db Kardinalität für Parameter

In exist-db habe ich diese Sitemap: Der Katalog "registranten" enthält den Katalog "data" (mit xml-Dateien) und die zwei Dateien "regBasic.xql" und "regSearch.xql".

Ich versuche, in den XML-Dateien zu suchen, um das Skript regSearch.xql mit:

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> 

Als ich das Drehbuch zu bewerten bekomme ich diesen Fehler: „EXERR: ERROR XPTY0004: Die tatsächliche Mächtigkeit für Parameter 2 stimmt nicht mit der in der Signatur der Funktion deklarierten Kardinalität überein: ft: query ($ nodes as node() , $ query as item()) node() Erwartete Kardinalität: genau eins, 0. [in Zeile 17, Spalte 100, source: /db/apps/registranten/regSearch.xql] "

Was bedeutet das und was ist mit dem Skript falsch?

Antwort

3

Ihre $searchphrase Variable ist eine leere Sequenz, was darauf hindeutet, wahrscheinlich, dass Sie nicht die Anforderungsparameter festgelegt haben, die Sie für mit request:get-parameter() fragen.

Verwandte Themen