Welcome! and rules
Joel on Software
.NET XML editor
So I recently did a project where I actually *had* to use the MSXML3 COM library, and all was nifty and fun. In editing files, I had access to both the VS.NET XML editor and an eval copy of XML Spy... and while I found the familiarity of the VS.NET editor, I wound up doing most of my raw XML editing in XML Spy.
Microsoft is very firmly in the "XML as data" camp, represented as XML Schema. DTD's don't play at all in that world (no support for namespaces is just one of DTD's sins). I'm willing to bet that if you went to Redmond and asked a random sampling of Microsofties, 87.2%  of them would say "DTDs? Nobody uses those anymore."
I'd love to learn XML Schema, but as far as I could tell, it wasn't able to cope with an element being allowed to have child elements of the same name. (That'd be the recursive thing I mentioned earlier.) Maybe there is a way to do it, but I didn't have a lot of time to look.
Recursive XML schema: http://lists.w3.org/Archives/Public/xmlschema-dev/2002Mar/0197.html
Fog Creek Home