Thanks for the fun challenge! Saw this come in last week while I was out of town and was excited to give it a shot.
Here is a regex that will only replace the first instance of "> in a string (single or multiline):
^(.*?)">(.*)
This creates two matches...
$1 is everything before the first ">, this is represented as ^(.*?) where the ^ tells it to start at the beginning of the string, .* means to match zero or more characters and ? means be lazy (repeat the fewest times possible).
$2 is everything after the first match, represented by (.*) again, but because there is no ? it will be greedy and match to the end of the string.
Then you just use the $1 and $2 in your replacement string like so:
$1" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">$2
Here is a screenshot of it in action: