It was tested on free AltovaXML engine (http://www.altova.com/altovaxml.html) I don’t think there is any sense to write DTD, XSD is much more flexible. I try to do my best, but it may be not perfect (e.g. I don’t care about altitude attribute for node element).
Very useful stuff, thanks! I have added elements for osmChange (create, modify, delete) and changeset to the XSD. I don’t have a proper XML editor at hand, though, so I did this by hand. JAXB parsed it fine, so it should be okay – still, use with caution