是否可以使用xquery(BaseX)评估存储在变量中的“复杂” xpath表达式?

时间:2019-05-24 09:25:06

标签: xpath xquery basex

我正在尝试在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 个答案:

答案 0 :(得分:2)

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 })