Несколько обновлений атрибутов в BaseX
Я пытаюсь обновить несколько атрибутов тега SVG в функции Xquery в BaseX. До сих пор мне удалось обновить один атрибут и вернуть новый узел, но не несколько атрибутов.
Я попробовал несколько обновлений как вариант заявления, описанного здесь, но что бы я ни пытался, это не сработало.
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"/>