BaseX 属性的多次更新

Multiple updates of attributes in BaseX

我正在尝试在 BaseX 的 Xquery 函数中更新 SVG 标记的一些属性。到目前为止,我设法更新了一个属性并返回了新节点,但没有更新多个属性。

我尝试了多次更新作为 here 描述的变体,但无论我尝试什么都行不通。

declare function  page:scaleSVG ($svg as node()*, $scale as xs:integer) as  node()* {
  return // update a few values of $svg attributes and return it
};

上面的功能基本上就是我想要实现的

使用copy/modify/return结构。这是一个例子:

declare function page:scaleSVG ($svg as node()*, $scale as xs:integer) as  node()* {
copy $c := $svg
 modify (
    replace value of node $c/@width with $scale,
    replace value of node $c/@height with $scale 
 )
return $c
};

然后调用这个:

page:scaleSVG(<svg width="100" height="100" />, 200)

将return这个:

<svg width="200" height="200"/>