2016-11-18 63 views
1

我想在BaseX的Xquery函數中更新SVG標記的幾個屬性。到目前爲止,我設法更新一個屬性並返回新節點,但不是多個屬性。BaseX中多個屬性更新

我試過多個更新作爲聲明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 
}; 

上面的函數基本上是我想實現的。

回答

1

使用複製/修改/返回構造。這裏有一個例子:

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) 

將返回此:

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