A ver.. entiendo entonces que en ASP ya tienes la estructura xml completa y lo que quieres es añadirle los retornos de carro en su sitio correspondiente y luego guardar el contenido en un archivo, no?
He entendido de tu POST que esto te funciona:
Código PHP:
objXML1 = Request("xml0")
Set objXML2 = Server.CreateObject("Microsoft.XMLDOM")
objXML2.async = False
objXML2.loadXML(objXML1)
Set objXMLfin = objXML2.selectnodes("obra")
for each node in objXMLfin
title = node.selectsinglenode("title").firstchild.nodevalue
autor = node.selectsinglenode("autor").firstchild.nodevalue
letra = node.selectsinglenode("letra").xml
xml1 = xml1 & "<title>" & title & "</title>" & vbcrlf
xml2 = xml2 & "<autor>" & autor & "</autor>" & vbcrlf
xml3 = xml3 & "<P>" & letra & "</P>" & vbcrlf
next
xmlfin = "<?xml version=""1.0"" encoding=""UTF-8""?>" & vbcrlf & "<obra>" & vbcrlf & xml1 & xml2 & "<letra>" & vbcrlf & xml3 & vbcrlf & "</letra>"& vbcrlf & "</obra>"
Set fso = CreateObject("Scripting.FileSystemObject")
Set tf = fso.CreateTextFile(Server.MapPath("../documentos/resultado.xml"), True)
tf.Write(xmlfin)
tf.Close
response.Write("" & xmlfin & "")
Set fso = nothing
Set tf = nothing
y porque no lo usas?
o es que prefieres que los retornos de carro sean con XHTML? pues sustituyes los vbcrlf por <br />. Una de esas líneas de código quedaría así:
Código PHP:
xml2 = xml2 & "<autor>" & autor & "</autor><br />"
Lo que pasa que si lo abres con el Notepad seguirás teniendo una sola línea ya que el notepad no te interpreta html. Tú decides como quieres definir los retornos de carro según lo que vayas a hacer luego con ese xml que guardas en un archivo.
Respecto a que no sabías lo de <br /> ten en cuenta que el HTML no es más que un XML (XHTML) pero las etiquetas que no tienen definida su etiqueta de cierre debes saber que en XML se cierran con la barra del final. Pues eso es lo que he hecho con la ya conocida <br>, ponerla como si se tratara de una etiqueta XML sin etiqueta de cierre