使用单独的事务我不确定是否有一个很好的方法来做到这一点。但是您可以将变量声明为外部变量。它仍然需要多次声明,但在通过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
改为使用的函数中。