Несколько обновлений атрибутов в 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"/>
Другие вопросы по тегам