in reply to Perl as XML
This particular XML is not quite the form I would recommend. A value attribute for empty elements seems bizarre/redundant. Just put that info right into the element and skip the value attribute is my suggestion. :)
Along this train of thought, if you want an interesting programming challenge, write a language using XML for the source code and implement a virtual machine in Perl. Come to think of it, that actually sounds like fun, doesn't it?