2009-08-03 52 views
1

我正在使用Oxygen XML來處理包含對其他XML文件的引用的XML文件。這些其他XML文件存儲在包含主XML文件的目錄的子目錄中。獲取XML文檔在XQuery中的位置

Downloads/ 
directory1/ 
    main.xml 
    subdirectory1/ 
    other1.xml 
    other2.xml 

其他XML文件的位置作爲相對鏈接存儲在主文件中。我的查詢看起來像是這樣的:

for $df in /clldata/DiscussionForums/DiscussionForum 
    let $href := replace(data($df/@href),"\\","/") 
    for $p in doc($href) 
return $p 

我碰到的問題是,氧氣使用路徑的XQuery文件爲基礎的相對路徑,顯然導致文件中未發現的錯誤。如何在我的查詢中獲取XML文檔的路徑?

現在我只是使用concat()來預先設置正確的路徑,但我希望這可以輕鬆地重用。

回答

1

您需要解析相對於主XML文檔的URI的URI。在你的情況,你可能想要做的事,如:

let $href = resolve-uri($d/@href, base-uri($d))

這裏,基URI($ d)功能越來越含有相關DiscussionForum節點的源文件的絕對URI,並決心-uri正在解析與此相關的新URI。

這適用於我在jedit XQuery插件上使用SAXON。 YMMV,我從來沒有使用過氧氣XML。