Yo creo que no es un error de interpretar el XML, si no que por algun motivo el Tomcat se esta confundiendo e intentando procesarlo de otra forma.
Fijate que el error dice:
(El nombre de archivo, directorio o etiqueta del volumen no es válido)
Y que dice que no ha podido procesar el fichero: C:\Archivos de programa\netbeans-5.5\enterprise3\apache-tomcat-5.5.17\bin\...tu XML
Eso es que el cree que el XML que le pasas es
el nombre de un fichero, y tu en realidad le quieres pasar el contenido. Así que diria que estas usando un metodo incorrecto del procesador XSL para pasarle el contenido, ya que el cree que le estas pasando un nombre de fichero.
Por cierto, el tema de concatenar cadenas con += es muy muy ineficiente en estos casos y bastante desaconsejable. Lo suyo es usar una librería, aunque sea simple, que use StringBuffer etc.
Si lo estás usando en una aplicación web, el tema nosotros lo tenemos bastante solucionado, por si te interesa.
Puedes ver un ejemplo aquí :
https://swww.uib.es/webleaf/confluence/x/HgE
Aunque es un ejemplo unicamente de tratar un fichero estático, hacerlo con clases Java es muy muy sencillo, sólo que todavía no he escrito un ejemplo como ese con clases Java.
S!