2

私はxqueryにかなり慣れていないので、この質問に最善を尽くしているので、ご容赦ください。

次のステートメントを (シーケンスを選択するために) 使用すると、問題なく動作します。

let $parts := doc("soap.xml")/soapenv:Envelope/soapenv:Body/ns0:PartDetails/ns0:partName

これは、すべての要素を (シーケンスとして) $parts 変数にロードしますが、私が望む方法は...

/ns0:partName" "を動的に割り当てたい。私はすべての Qname 関数を試してみましたが、何とか役立つと思っていましたが、そのような運はありませんでした。2日間の苦労の後、あなたの1人が私を正しい方向に向けることができることを願っています.

4

2 に答える 2

3

パス式では、要素を * に置き換え、述語を追加して結果をフィルタリングできます。述語には動的変数が含まれる場合があります。例えば ​​:

*[local-name()=$someName and namespace-uri()=$someURI]
于 2011-11-23T10:58:00.483 に答える
2

ヴィンセントの答えを簡単にするために、 xs:QName がノードの node-name() と一致することを確認できます

let $elementName = QName("urn:namespace", "PartDetails")
...
let $parts := doc("soap.xml")/soapenv:Envelope/soapenv:Body/*[node-name() = $elementName]/ns0:PartName
于 2011-11-23T18:12:23.583 に答える