2016-11-18 2 views
1

Ich versuche, einige Attribute eines SVG-Tags in einer Xquery-Funktion in BaseX zu aktualisieren. Bis jetzt konnte ich ein Attribut aktualisieren und den neuen Knoten, aber nicht mehrere Attribute zurückgeben.Mehrere Updates von Attributen in BaseX

Ich versuchte mehrere Updates als eine Variante der Anweisung beschrieben here aber was auch immer ich versuchte, es würde nicht funktionieren.

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

Die obige Funktion ist im Grunde, was ich erreichen möchte.

Antwort

1

Verwenden Sie die Konstruktion zum Kopieren/Ändern/Zurückgeben. Hier ein Beispiel:

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 
}; 

Dann ist dieser Aufruf:

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

wird dies zurück:

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