$ sed 's/.*<account.*/\n&/' urfile |awk 'BEGIN { RS=""} /<account/{a[NR]=$0} !/<account/; END { num=asort(a);for(i=1;i<=num; i++) print a[i]}'
$ csplit -f urfile urfile '/.*<account/' '/<\/provider/'
$ cat b.txt00 <(sed '/<account/{:a; /<\/account>/b;N;/<\/account>/s/\n/|/g;ba}' b.txt01| sort -t \" -k 2|sed 's/|/\n/g') b.txt02