使用 MarkLogic Xquery,我有一个函数(admin:add-collection-to-publication)
调用另一个维护函数( admin:check-collections-exists)
,该函数检查元素是否存在,如果不存在,则创建该特定元素。
我调用维护功能的方式是使用let。这似乎是一种奇怪的方式,要做到这一点,它需要创建一个未使用的变量。我是否应该返回一个序列,调用是序列admin:check-collections-exists
中的第一项,然后后续处理是第二个元素?只是寻找标准的优雅方式来做到这一点。我的职能是:
declare function admin:add-collection-to-publication($pub-name, $collection-name)
{
(:does this publication have a COLLECTIONS element?:)
let $unnecessary-variable := admin:check-collections-exists($pub-name)
(:now go and do what this function does:)
return "do some other stuff then return"
};
declare function admin:check-collections-exists($pub-name)
{
if(fn:exists($pubs-node/pub:PUBLICATION[pub:NAME/text()=$pub-name]/pub:COLLECTIONS))
then
"exists"
else
xdmp:node-insert-child($pubs-node/pub:PUBLICATION[pub:NAME/text()=$pub-name],<pub:COLLECTIONS/>)
};