42157


現在、XQueryプログラムの中で、あるURIのノードに対してXPath式のパスに変数を指定したいと考えておりますが、上手くいきません。  
実現したいことのコードのイメージは以下の感じです。  
以下を実行すると「"bbb"はノードではない」というエラーになってしまいます。  
(※MarkLogicデータベースのQuery Consoleにて確認。ちなみに対象ノードには'/aaa/bbb/cccc'ノードは存在しております。)  
XPath式の途中に変数を指定することはそもそも出来ないのでしょうか。  
MarkLogicに依存するような問題とは思いませんが、この件で何か知見のある方がいらっしゃいましたらご教授願います。

[code]

    (:PGでパスを取得し、変数valに格納:)
    let $val := "bbb"
    (:URIノードにおいて、変数valをパスに指定:)
    let $results := fn:doc("URI")/aaa/$val/ccc
    
[/code]


CC BY-SA 3.0
2018-03-05T08:55:15.797
42140
2018-03-06T06:30:19.673
2018-03-05T09:29:03.720
2376
27582
question
xml
XPath式における変数の指定について


XQuery経験ありませんが、要素名を文字列の変数として扱いたいのであれば

[code]

    let $results := fn:doc("URI")/aaa/*[name() eq $val]/ccc
    
[/code]

で良いと思います．

以下oXygen 19.1で確認したもの（入力ファイル名は違います）

[![画像の説明をここに入力](https://i.stack.imgur.com/5ztXr.png)](https://i.stack.imgur.com/5ztXr.png)


CC BY-SA 3.0
2018-03-06T06:24:48.150
42157
2018-03-06T06:30:19.673
2018-03-06T06:30:19.673
9503
9503
42140
answer