Используя отдельные транзакции, я не уверен, что есть хороший способ сделать это. Но вы можете объявить свою переменную внешней. Его все равно придется объявлять несколько раз, но вам нужно будет назначить только один раз при вызове через xdmp:invoke
(или xdmp:eval
):
declare variable $name as xs:string external ;
xdmp:node-delete(doc(concat('/', $name, '.xml'))//foo);
declare variable $name as xs:string external ;
xdmp:node-delete(doc(concat('/', $name, '.xml'))//bar);
declare variable $name as xs:string external ;
xdmp:node-delete(doc(concat('/', $name, '.xml'))//baz);
Затем вы можете вызывать этот модуль несколько раз, используя invoke
с разными значениями:
xdmp:invoke('delete-nodes.xqy', (xs:QName('name'), '751-1500')),
xdmp:invoke('delete-nodes.xqy', (xs:QName('name'), '751-1501')),
xdmp:invoke('delete-nodes.xqy', (xs:QName('name'), '751-1502'))
Если вам не нужен дополнительный модуль, вы можете поместить его в функцию, которая принимает параметр $name
и использует вместо него xdmp:eval
.
person
wst
schedule
07.08.2013
$name
быть переменной? - person wst   schedule 07.08.2013