Ciao,
a fronte dei tuoi lusinghieri complimenti, diventa quasi un obbligo concludere il discorso mostrandoti come sia possibile ottenere l'output della trasformazione in un file:
Dim xmlDoc, xslDoc , fso , txt
Set xmlDoc = getDocument("doc.xml")
Set xslDoc = getDocument("doc.xsl")
Set fso = CreateObject("Scripting.FileSystemObject")
Set txt = fso.createTextFile( "doc.html" )
With txt
.Write xmlDoc.transformNode( xslDoc.documentElement )
.Close
End With
Set txt = Nothing
Set fso = Nothing
Set xslDoc = Nothing
Set xmlDoc = Nothing
WScript.Echo "fatto!"
Function getDocument( cNomefile )
Set getDocument = CreateObject("MSXML.DomDocument")
With getDocument
.Async = false
.Load cNomefile
End With
End Function
Questo breve script (doc.vbs) carica i due documenti (doc.xml e doc.xsl), ed effettua la trasformazione salvandone il risultato in un file creato all'uopo (doc.html).
Tale approccio rivela tutta la sua utilità soprattutto durante la fase di debug, per verificare quale sia effettivamente l'output prodotto dalla trasformazione.
Infine, con poche modifiche, è possibile utilizzare la stessa tecnica anche da ASP:
<%
Dim xmlDoc, xslDoc , fso , txt
Set xmlDoc = getDocument("doc.xml")
Set xslDoc = getDocument("doc.xsl")
Response.Write xmlDoc.transformNode( xslDoc.documentElement )
Set xslDoc = Nothing
Set xmlDoc = Nothing
Function getDocument( cNomefile )
Set getDocument = Server.CreateObject("MSXML.FreeThreadedDomDocument")
With getDocument
.Async = false
.Load Server.MapPath( cNomefile )
End With
End Function
%>
In questo ultimo caso l'esito della trasformazione viene inviato direttamente all'oggetto Response, ovvero il canale di comunicazione dal server al client; così facendo il browser riceve un flusso-dati html in quanto la trasformazione viene attuata dal server.
Ciao ciao