Tu problema no es con PHP ni con MySQL sino con XML... el error mostrado es del navegador referente a tu estructura XML.
... el propio XML (como lenguaje) te impide utilizar ciertos carácteres como atributos y/o contenidos, es el caso de <, >, &, comillas (").
Lo que puedes probar por parte de PHP, es utilizar la función
htmlspecialchars(), aunque con mis dudas de que sirva:
Código PHP:
$prueba= htmlspecialchars(nl2br($observaciones));
Te aconsejaria investigaras sobre XML porque... igual tu estructura, no es que este mal, pero podría estar mucho mejor; por el tipo de datos a utilizar te conviene crear canales independientes para esas "observaciones".
Código:
<vivienda>
<observaciones>
<![CDATA[
El <html> que quieras
]]>
</observaciones>
<!-- etc -->
El DTD es un archivo que determina las "reglas" para un XML particular; que tipo de atributos ha de tener, el tipo de datos, los canales, etc. Tú estás indicando que tu archivo es un RSS 0.92, por lo que deberías cumplir ciertas normas, deberías tener canales ya definidos (item, title, description, link...) cosa que no haces; no es un RSS!.