The main problem was some mixup with the XML::NamespaceSupport API - I had misread the docs, basically. Following that, I had some plain hashes where I needed hashrefs. And then I hadn't implemented start/end prefix mappings.
All fixed now and on CPAN. Including tests this time.