Можно ли оценить «сложное» выражение xpath, хранящееся в переменной, с помощью xquery (BaseX)? - PullRequest
0 голосов
/ 24 мая 2019

Я пытаюсь сделать что-то подобное в 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)

но этот не позволяет много

Функция поддерживает только имена элементов и имена атрибутов, перед которыми стоят @, , разделенные одиночной косой чертой . Имена могут дополнительно иметь префикс, но они должны использовать тот же префикс, который используется во входном документе. Он не поддерживает предикаты , другие оси или другие виды узлов. Обратите внимание, что большинство процессоров имеют функцию расширения, которая динамически оценивает выражения пути гораздо более полным способом.

Знаете ли вы какие-либо другие функции, которые могут помочь?

1 Ответ

2 голосов
/ 24 мая 2019

Посмотрите на http://docs.basex.org/wiki/XQuery_Module#xquery:eval:

let $node := doc('doc.xml')//*:root
let $xpath := "descendant::*:path/*:to/*:node"

let $val := xquery:eval($path, map { '' : $node })
...