Я пишу xquery на eXist .
Обычно я использую этот способ для выбора элемента в XML:
fn:doc($document_name)/root/a
Но теперь я хочу получить xpath из строковой переменной:
let $xpath := request:get-parameter("xpath", "")
fn:doc($document_name)/$xpath
Конечно, это не работает.
Единственный способ, который я нашел сейчас, это использовать eval
:
util:eval(fn:concat("fn:doc($document_name)", $xpath)):)
но я не хочу использовать eval
, потому что это медленно и небезопасно.
Я знаю, что есть что-то вроде:
fn:doc($document_name)/*[name()='node_name']
но я хочу выбрать элемент по всему пути, а не только по имени узла
и я также пытался использовать node-xpath()
, но не знаю, как его использовать, как name()