The code to read in XML keyboard maps (KeyboardMap::initializeFromXML) was broken. Particularly it choked on XML comments and silently ignored errors.
So I rewrote the code. Changes:
* New code checks for errors (i.e. bogus elements in the input XML) rather than silently skipping over them. The old behavior (combined with the bug described below) made it painful to write custom XML keyboard maps.
* Uses a DOM parser (old code used SAX for no apparent reason).
* Parses XML comments correctly. The old code would choke if the keyboard map contained comments, and silently fail to load the rest of the keymap. The DOM parser gives us this for free.
(Is this the best way to submit patches?)