次のように、xqueryの変数を使用してノード(名前空間のプレフィックスが付いている)を見つけようとしています:
declare variable $libx_ns as xs:string external;
declare namespace libx=$libx_ns;
declare variable $type as xs:string external;
return doc('xyz')/entry[libx:{$type}][1]
パラメータ値:$ libx_ns ='http://libx.org/xml/libx2'、$ type=libapp。このxqueryを実行すると、次のエラーが表示されます。
[XPST0003]表現が不完全です。
上記のコードは、最後の行を次のように変更すると機能します。
return doc('xyz')/entry[libx:libapp][1]
目的は、ノード名をハードワイヤリング(例:libapp)するのではなく、文字列変数(例:$ type)を使用することです。どうすればいいですか?
サンプルxmlドキュメント:
<entry xmlns:libx="http://libx.org/xml/libx2">
<libx:libapp> First libapp </libx:libapp>
<libx:libapp> Second libapp </libx:libapp>
</entry>
ありがとう、ソニー