2014-03-05 39 views
0

標題是奇怪,但...XQuery函數調用自第一無點擊,然後點擊後函數調用自身使用XPath

在存在-DB

如何normaly調用在同一頁上的功能。只需在XML中顯示evrythink並點擊hiperlink再次調用XPath即可。

我有這個功能。 Meaby它完全crapy ......我quess ...

declare function app:WyswietlAkweny($loc, $evtObj) { 

    <table border="1" width="100%"> 
    <th>Podrzędne</th><th>Nazwa</th><th>Typ</th><th>Powierzchnia</th><th>Edycja</th> 
    { 
     for $x in doc('/db/Dane/akweny.xml/')//akwen 
     let $nazwa := $x/nazwa, 
      $typ := $x/typ, 
      $powierzchnia := $x/powierzchnia 
      return <tr> 
       <th><a href="TO THE PARRENT"><img src="/exist/apps/Obrazki/lupa.jpg" alt="Podrzedny" /> KLIK</a></th> 
       <th bgcolor="#F46978">{$nazwa}</th> 
       <th>{$typ}</th> 
       <th>{$powierzchnia}</th> 
       <th>Edytuj</th> 
       </tr> 
    } 
    </table> 
}; 

這裏是我的XML

<?xml version="1.0" encoding="utf-8"?> 
    <akweny> 
     <akwen> 
      <nazwa>Atlantycki</nazwa> 
      <typ>ocean</typ> 
      <powierzchnia>106450</powierzchnia> 
      <akweny> 
       <akwen> 
        <nazwa>Północne</nazwa> 
        <typ>morze</typ> 
        <powierzchnia>750</powierzchnia> 
       </akwen> 
       <akwen> 
        <nazwa>Batyckie</nazwa> 
        <typ>morze</typ> 
        <powierzchnia>386</powierzchnia> 
        <akweny> 
         <akwen> 
          <nazwa>Botnicka</nazwa> 
          <typ>zatoka</typ> 
          <powierzchnia>117</powierzchnia> 
         </akwen> 
        </akweny> 
       </akwen> 
      </akweny> 
     </akwen> 
     <akwen> 
      <nazwa>Spokojny</nazwa> 
      <typ>ocean</typ> 
      <powierzchnia>179700</powierzchnia> 
     </akwen> 
    </akweny> 

所以問題是,當我在「KLIK」點擊它必須只顯示找到的任何元素akweny有akwen父元素重複到底元素與孩子由...與當前點擊元素的價值akwen

總之,當我選擇nazwa = Batyckie它應該顯示下面的所有節點。

任何想法?

PS。 nazwa =波蘭語的名稱

回答

0

我不確定自己能夠理解您的XML或者您想要瀏覽的內容,但是從一個查詢到另一個查詢的超鏈接,它僅僅是直接的HTTP。例如以上你需要用的XQuery的路徑替換/db/myquery.xqy

<th><a href="/exist/rest/db/myquery.xqy?search=parent&amp;current={util:node-id($x)}"><img src="/exist/apps/Obrazki/lupa.jpg" alt="Podrzedny" /> KLIK</a></th> 

很明顯:你可以這樣做變更此:

<th><a href="TO THE PARRENT"><img src="/exist/apps/Obrazki/lupa.jpg" alt="Podrzedny" /> KLIK</a></th> 

來。在您的XQuery中,您可以使用if/else來決定是否使用參數調用它並採取不同的操作。例如: -

if(request:get-parameter("search",()) eq "search" and request:get-parameter("current",()))then 
    let $current := util:node-by-id(doc("/db/Dane/akweny.xml"), request:get-parameter("current",())) 
    return 
     $current (: TODO do something to find the parent instead! :) 

else 
    (: TODO whatever you are already doing :) 

雖然我已經使用util:node-idutil:node-by-id從一個查詢到另一條鏈路,我真的不會推薦這是這些ID並不穩定。相反,您應該爲每個有興趣直接尋址的記錄添加一個ID並使用這些ID。

+0

我得到這個錯誤:無法讀取源文件C:\ eXist-db \ webapp \ aps \ AkwenyXML \ text.xq 即使當我把整個鏈接放在util中:node-by-id – Brieg

+0

這不會使任何意義上,你可以張貼您的查詢嗎? – adamretter

+0

看看我的答案。由於時間太長,我無法對代碼進行評論。 – Brieg