2017-12-23 17 views
1

exist-db 및 XQuery에서 새로운 기능입니다.exist-db 카디널리티 매개 변수

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 : 매개 변수 2에 대한 실제 카디널리티를 함수의 서명에 선언 된 카디널리티와 일치하지 않습니다. ft : query (node ​​노드 (), $ query (item) 노드) 예상되는 카디널리티 : 정확히 1 개는 0을가집니다. [line 17, column 100, 출처 : /db/apps/registranten/regSearch.xql] "

스크립트의 의미는 무엇이며 스크립트의 문제점은 무엇입니까?

답변

3

귀하의 $searchphrase 변수는 빈 시퀀스입니다. 이는 요청한 요청 매개 변수를 request:get-parameter()으로 설정하지 않았을 가능성이 높습니다.