Я пытаюсь сделать что-то подобное в xquery (работаю с basex)
let $node := doc('doc.xml')//*:root
let $xpath := "descendant::*:path/*:to/*:node"
let $val := $node//$xpath
Это возможно с помощью functx: dynamic-path
let $val := functx:dynamic-path($node, $xpath)
но этот не позволяет многого
Функция поддерживает только имена элементов и имена атрибутов, которым предшествует @, разделенные одинарной косой чертой. Имена могут иметь префикс, но они должны использовать тот же префикс, который используется во входном документе. Он не поддерживает предикаты, другие оси или другие типы узлов. Обратите внимание, что у большинства процессоров есть функция расширения, которая динамически вычисляет выражения пути гораздо более полным образом.
Знаете ли вы какую-либо другую функцию, которая могла бы помочь?