2012-12-28 93 views
1

我想用參數調用一個函數,發送一個id並返回一張圖片的url,這個想法是當你點擊一個按鈕時顯示元素的圖片,問題是我不能叫funcion我發誓,我嘗試它,GOOGLE了它,但我根本無法:Ponclick error調用Xquery函數

這裏的功能的代碼和聲明

的XQuery版本爲「1.0」;

declare namespace local =「local」; 聲明選項存在:serialize「method = xhtml media-type = text/html」;

xquery version "1.0"; 

declare namespace local = "local"; 
declare option exist:serialize "method=xhtml media-type=text/html"; 


    declare function local:showPhoto($id as xs:decimal?)AS xs:string? 
    { 
    for $dir in doc("pubs.xml")//dir 
    where id= $dir/id 
    return $dir/photo/text(); 
    }; 

和這裏的表和代碼來調用它,相信如果你知道一個更好的方式來做到這一點只是告訴我:P(當然我有點小白本,所以我敢肯定你能告訴我一個更好的方式來做到這一點)

<table id="pubs" border="1"> 
     { 
     for $directorio in doc("/db/Ocio/pubs.xml")//dir 
     order by $dir/name 
     return 
      <tr> 
      <td>{$dir/name/text()}</td> 
      <td><a href="{$dir/web/text()}">Web url</a></td> 
      <td><input onclick="{local:showPhoto($dir/id)" type="button" value="MOAR INFO"></input></td> 
      </tr> 
     } 
    </table> 

也許這裏有一個錯誤,但它是因爲我翻譯的代碼爲英語,當我執行IR是這樣的錯誤:

XPDY0002:未定義上下文序列...

不知道該怎麼做,所以我問它,非常感謝你提前:d:d:d

X-MAS BTW:3個

回答

1

兩個問題是顯而易見的

  1. AS xs:string? - 我認爲XQuery(作爲XPath)區分大小寫。因此,AS應該引發錯誤,因爲語法合法標記爲as

  2. 的函數的主體:

for $dir in doc("pubs.xml")//dir 
    where id= $dir/id 
    return $dir/photo/text(); 

在XQuery(和XSLT)中沒有爲函數定義初始上下文節點。因此,任何相對的XPath表達式都是未定義的。這是id - 孩子id的情況是什麼?

的解決方案是,一個絕對錶達式必須改爲使用 - 比如:

$someParam/id 
+0

我改變它,但錯誤依然當我打電話funcion,我解釋一下:我創造的功能,啓動webApp和一切都沒問題,問題是當我打電話時,也許我不知道如何調用它:S但我試圖調用一個簡單的函數,我GOOGLE瞭如何調用它,錯誤是相同的,我讀了一些關於命名空間的內容,但是我也聲明瞭(就像我在代碼中所做的那樣)和相同的錯誤。另一方面非常感謝你的解決方案,我解決了這個錯誤:3 – Santanor

+0

只是忘了它,它的工作原理,不要打擾你了:P再次感謝你^^ – Santanor

+0

@Santanor,不客氣。 –