OK, I've seen the posts on this list regarding how to get rid of the ns1 prefix. The best suggestion so far has been to use the XMLWriter from David Megginson. I tried using that and used the setPrefix() method to set the prefix for the output namespace to "".
This worked ok, but the XMLWriter doesn't offer as very much control over other aspects of the output (can't remove xml declaration, line endings not platform independent, etc). So I've switched to Apache's XMLSerializer. Now I've got more control over the output, but now I cannot for the life of me get the namespace prefixes off of the elements (the source code has not shed any light on this either -- I tried calling startPrefixMapping() before I call marshal(), but that had no effect).
At this point, I'm not really sure what is the 'correct' way to handle these issues. I've created my own bare-bones ContentHandler which ignores the namespace that passed in to startElement and that works, but I don't really want to duplicate all of the complex logic for formatting that Apache has. So I'm now considering writing a ContentHandler that forwards everything to Apache's XmlSerializer, but sets the namespace prefixes to null before forwarding to startElement. Is this really the right way to be doing this? Is this something that will be fixed in the JAXB FCS? Am I completely off my rocker for thinking that this should be a lot simpler than it has turned out to be?