You can use
replace value of[
^].
So something like the following:
DECLARE @data xml;
SET @data = '<svg>
<rect id="1">
<rect id="in1" stroke="black" />
<circle id="in2" />
<rect id="in3" stroke="black">
<rect id="31" fill="Red" />
</rect>
<circle id="in4" />
</rect>
<g>
<rect id="2">
<circle>
<rect id="in5" />
</circle>
</rect>
</g>
</svg>';
SELECT @data;
SET @data.modify('
replace value of (//rect[@id=("31")]/@fill)[1]
with "blue"
');
SELECT @data;