Интересно, возможно ли создать запрос, как при использовании Saxon 9.9HE (адресуемый baseX):
let $where := '$x//element[text() = "content"]'
for $x in db:open("my_db")//something
where $where
return $x//something_else
В моем приложении выражение where строится внешне (PHP) на основе некоторыхусловия, и я просто хочу передать это сценарию xquery, чтобы я мог использовать один базовый сценарий для всех запросов, каждый из которых отличается только передаваемым предложением where.Другие переменные могут быть легко переданы в сценарий, поскольку они не содержат выражений пути, а содержат только скаляры.
Возможно ли иметь выражение в переменной?
У меня было несколько попыток с xquery:eval()
и xquery:parse()
(обе функции baseX), но безуспешно.В основном это ошибки неизвестная переменная $ x , контекст не объявлен или ожидание возврата Если ошибки не происходит, я получаю ВСЕ элементы, поскольку кажется, что предложение whereоценивать как true, возвращая, таким образом, просто все
Мой текущий обходной путь - прочитать скрипт xquery, заменить $ where и затем выполнить его.Есть ли хороший способ сделать это в одиночку xquery?