2009-08-03 12 views
1

Oxygen XMLを使用して、他のXMLファイルへの参照を含むXMLファイルを操作しています。これらの他のXMLファイルは、メインXMLファイルを含むディレクトリのサブディレクトリに格納されます。XQueryでXML文書の場所を取得する

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、私はOxygen XMLを一度も使用していません。

関連する問題