in reply to Beautifying some SGML?

Note that your reformatting isn't necessary equivalent; in the reformatted example, you have introduced whitespace, which may be significant it can certainly be significant in HTML. Compare:
Hello, <b>w</b>orld
with
Hello, <b> w </b> orld
The former will typically be rendered by a browser as two words; the latter as three.

A very simplistic beautifier is: s!(/?>)!\n$1!g. It doesn't do indentation, but it does fold long lines, and, because it inserts the newline inside a tag it doesn't introduce whitespace in the data. Of course, if you have > symbols in PCDATA content (SCRIPT and STYLE elements, and attribute values), this may break things.