この 1 年間、Saxon を使用して Windows コマンド ラインから一連の XQuery Update を呼び出すために作成したバッチ スクリプトを実行してきました。oXygen 16 を使用している間は問題なく動作しましたが、部門内のすべてのマシンが oXygen 17.1 にアップグレードされた後、スクリプトは現在、修正できないように見えるエラーをスローしています。どんな考えでも大歓迎です。
これは、oXygen 16 がインストールされたときに機能していました。
java -cp "C:\Program Files\Oxygen XML Editor 16\lib\saxon9ee.jar" net.sf.saxon.Query -update:on -t -q:"C:\Users\%USERNAME%\Documents\SVN Working Copies\trunk\rbscXSL\Locations2015\AbID2dsc-items.xq"
.jar ファイルが同じ相対位置にあり (oXygen のバージョン番号だけがパスに変更されています)、以前と同じ名前であることを確認しました。それにもかかわらず、クラス パスを「C:\Program Files\Oxygen XML Editor 17\lib\saxon9ee.jar」に更新した後、スクリプトは次のエラーをスローします。
Saxonica の Saxon-EE 9.6.0.7J
Java バージョン 1.8.0_92
java.lang.UnsupportedOperationException: XQuery Update は、この Saxon 構成ではサポートされていません
net.sf.saxon.s9api.XQueryCompiler.setUpdatingEnabled (XQueryCompiler.java:212) で
net.sf.saxon.Query.doQuery(Query.java:281) で
net.sf.saxon.Query.main(Query.java:111) で
クエリ中の致命的なエラー: java.lang.UnsupportedOperationException: XQuery Update is not supported in this Saxon Configuration
ファイル名、ディレクトリ名、またはボリューム ラベルの構文が正しくありません。
私のマシンには Java 8 がインストールされています。また、XQuery Update が oXygen エディター内から呼び出された場合でも機能することを確認しました。
http://www.saxonica.com/documentation9.6/index.html#!using-xquery/commandlineおよびhttp://www.saxonica.com/documentation9.6/index.html#!conformance/を読んだ後update、 -tree:linked フラグと -qversion:1.0 フラグを追加しました (同じエラー メッセージが表示されます)。
java -cp "C:\Program Files\Oxygen XML Editor 17\lib\saxon9ee.jar" net.sf.saxon.Query -qversion:1.0 -tree:linked -update:on -t -q:"C:\Users\%USERNAME%\Documents\SVN Working Copies\trunk\rbscXSL\Locations2015\AbID2dsc-items.xq"
ドキュメントによると、-update:on フラグが設定されていて、XML が doc() または collection() 関数を使用して読み込まれている場合、XQuery Update を実行する必要があります。 XQuery ファイルからの変数:
declare variable $EAD as document-node()* := doc("sample_input.xml");
declare variable $ITEMS as document-node()* := doc("sample_input.AbID.xml");
他に何をしようか途方に暮れています。誰かがここで何がうまくいかないかを見ることができれば、私はどんなポインタでも大歓迎です!