Hay situaciones en las que una persona puede no querer un XML bien formado:el que yo (y quizás el cartel original) encontré estaba usando la técnica For XML Path para devolver una lista de un solo campo de elementos 'secundarios' a través de una consulta recursiva. Más información sobre esta técnica está aquí (concretamente en la sección 'Los métodos XML de la caja negra'):Concatenar valores de fila en Transact-SQL
Para mi situación, ver 'H&E' (una mancha de patología) transformada en 'XML bien formado' fue una verdadera decepción. Afortunadamente, encontré una solución... la siguiente página me ayudó a resolver este problema con relativa facilidad y sin tener que volver a diseñar mi consulta recursiva o agregar un análisis adicional en el nivel de presentación (tanto para esta como para otras situaciones futuras en las que mi hijo -los campos de datos de filas contienen caracteres XML reservados):Manejo de caracteres especiales con FOR XML PATH
EDITAR:código a continuación de la publicación de blog a la que se hace referencia.
select
stuff(
(select ', <' + name + '>'
from sys.databases
where database_id > 4
order by name
for xml path(''), root('MyString'), type
).value('/MyString[1]','varchar(max)')
, 1, 2, '') as namelist;