2010-12-02 3 views
0

テキストファイルを読み込むためのXQueryコマンドはありますか?XQueryからテキストファイルをロードするには?

次のようにしてXML文書を読み込むことができます。

declare variable $text := doc("test.xml"); 

ただし、test.xmlが整形式のXMLドキュメントである場合にのみ動作するようです。私が望むのは、プレーンなtest.txtファイルを文字列変数にロードすることです。このようなもの;

declare variable $str as xs:string := fn:loadfile("test.txt"); 

できますか?

私はSaxonエンジンを使用していますが、サクソンのドキュメントで回答が見つかりません。

+0

答えはスタンダード機能ではノーだと思います。 'unparsed-text()'関数はXSLTのみの関数です。 –

答えて

1

これは、EXPathで標準化されています。あなたが記述したことを実行できるXQueryファイルモジュールの仕様が既に存在します:EXPath File Module Spec

しかし、そこに実装されている実装の数はわかりません。サクソンは残念ながらそれを実装していないようです(または、私にそれを指摘してください)。実装例は、zorba(XQDoc Site of Zorbaを参照)とともに出荷されます。 zorbaの使い方を知りたい場合は、Get Started with XQuery and Zorbaのチュートリアルをご覧ください。

2

のXQuery 3.0は正確に何をしたいんれ、(本来はXSLTで定義された)機能fn:unparsed-textを持っています。 XQuery 3.0はまだ進行中ですが、利用可能なXQuery 3.0プロセッサは多くありませんが、多くのXQueryプロセッサはすでにこの機能(Saxonを含む)をサポートしています。

+0

ありがとうございます。それは私が必要としているもののように思えますが、私はそれを使用しようとするとエラーが発生します "システム関数unparsed-text#1はこのホスト言語で利用できません"。また、Saxonのfn:unparsed-text()のドキュメントには、「現在のSaxonの実装は安定していません。関数が同じ引数で2回呼び出された場合、外部ファイルが2回読み込まれ、それが変更された場合。 –

+0

あなたは、XQuery 3.0が作業中のドラフトであると言います。数ヶ月前であってもバージョン番号が異なります。 –

+0

@Alejandro - 良い点。私はこの変更を行った。 –

0

XQueryはデフォルトで(fn:namespaceを意味します)、ファイルアクセス方法はありません。

MarkLogic: xdmp:ファイルシステムファイル() xdmp:ファイルシステムディレクトリ()

ゾルバ:バージョン9.2を有しているので 既にuser457056

言及は Exist File Module

0

サクソン存在します解析されていないテキストを読み取るために使用できるfn:collectionの拡張。ここでの例は次のとおり

collection('file:///c:/TEMP?select=text.txt;unparsed=yes') 

これは9.2「Changes in this Release」の下に記載されています。明らかに、関数ライブラリのドキュメントには言及されていません。しかし、それはうまく動作し、私はそれをたくさん使っています。

関連する問題