FIX: Only one (XML / HTML) tag is swapped.

This was broken by the switch from register s to the default register in 4e667c248a2f469dcfb065c47a5f5c07075149b7, because the visual mode paste clobbers that register (with the replaced contents, which here is the previous tag name).
Split the command into two parts, and restore the default register in between.
Cosmetics: Improve comment.
ENH: When swapping XML end tag, return to it after the swap.

So far, the swap always positioned the cursor on the start tag after the swap. This jump is unexpected and confusing (especially when the other tag is far away).
Record where the swap is started and return to the end tag with another "%" command if needed.
Check for active matchit.vim plugin, and else skip XML tag swap.

The commands for XML tag swapping require the modified "%" command provided by the matchit.vim plugin. Without it, the commands will wreak havoc on the text.
Add a check for the plugin and if not installed, fall back to the general swap, which will only work on the current tag (not the tag pair).