2012-10-04 68 views
1

我想通過XQJ API查詢eXist db。因此,我有一個XQuery文件,我想將其應用於數據庫的不同集合中的幾個不同文檔。如何設置XQJ連接的默認/基本集合

我的問題是,我如何設置文檔/集合的路徑?我只想將XQuery應用於特定的文檔/集合,並且不能直接在XQuery文檔中設置路徑(使用doc('path/to/doc')函數),因爲我想將相同的XQuery應用於多個具有不同路徑的文件。

我可以將Java變量綁定到Xquery表達式,但必須有一種更優雅的方式來使用XQJ API實現此任務。希望你能幫我一點點。

+0

似乎XQY負責管理路徑或Java,在這種情況下,您需要將路徑作爲外部變量傳遞給XQY。我不確定是否有更優雅的方式。 – wst

回答

1

如果您事先知道具體的文檔URI,可以將一串URI綁定爲xs:string序列,然後可以在XQuery表達式中遍歷它們,根據需要對每個URI執行操作。

declare variable $uris as xs:string* external; 

for $uri in $uris 
return (
(: perform operation against $uri :) 
) 

或者,如果你知道集合URI,

declare variable $collection-uri as xs:string external; 

for $document-node in fn:collection($collection-uri) 
return (
    (: perform operation against document-node() :) 
) 

中不存在XQJ API的未來版本中,您將能夠設置一個集合作爲默認的情況下,不利於雙方XQJ標準和XQuery 1.0/3.0標準,但其他用戶似乎很想要這個功能。

+0

好的,謝謝你們,那麼它就是變量綁定,希望我能解決這個問題。 – chris