ASPcenter.net

5 marzo 2010

Trasformare un file XML con XSL attraverso XMLDOM ed ASP

Archiviato in: ASP e XML — Tag:, , , , , , — lukeonweb @ 10:53

In un precedente articolo abbiamo visto come leggere un file XML con ASP ed XMLDOM in maniera tradizionale. Negli articoli introduttivi ad XML e ad XSL, invece, abbiamo introdotto la tecnologia e la struttura dell’ormai noto linguaggio estensibile, e la trasformazione stilistica proprietaria in formato HTML intelligibile da un browser, limitandoci però ad un est lato client.


Lo scopo di questo articolo è quello di affrontare la trasformazione di un file XML con XSLT lato server attraverso ASP.

Il sistema è dei più semplici; prendiamo come spunto i file “rubrica.xml” e “rubrica.xsl” presentati negli articoli introduttivi, indicati con un link nelle righe precedenti di questo articolo, di cui ripropongo i codici

<?xml version="1.0" encoding="ISO-8859-1"?>
<rubrica>
    <utente>
        <nome>Pippo</nome>
        <telefono>001122</telefono>
    </utente>
    <utente>
        <nome>Pluto</nome>
        <telefono>334455</telefono>
    </utente>
    <utente>
        <nome>Paperino</nome>
        <telefono>667788</telefono>
    </utente>
</rubrica>
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" />
<xsl:template match="/">
<table align="center" width="50%" border="1">
    <tr bgcolor="#000000">
    <td style="color: #FFFFFF;"><b>Nome</b></td>
    <td style="color: #FFFFFF;"><b>Telefono</b></td>
    </tr>
    <xsl:for-each select="rubrica/utente">
    <tr>
    <td><xsl:value-of select="nome" /></td>
    <td><xsl:value-of select="telefono" /></td>
    </tr>
    </xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>

Al file XSLT ho aggiunto una riga evidenziata in grassetto, il cui scopo è quello di produrre in output codice HTML pulito e non codice HTML ed XML misto.

Veniamo al codice ASP, da posizionare nel punto in cui si vuole che venga effettuata la trasformazione e la relativa stampa a video

<%
    Dim MyXML, MyXSL
    Set MyXML = Server.CreateObject("Microsoft.XMLDOM")
        MyXML.Async = False
        MyXML.Load Server.MapPath("rubrica.xml")
    Set MyXSL = Server.CreateObject("Microsoft.XMLDOM")
        MyXSL.Async = False
        MyXSL.Load Server.MapPath("rubrica.xsl")
    Response.Write MyXML.transformNode(MyXSL)
    Set MyXML = Nothing
    Set MyXSL = Nothing
%>

Il funzionamento è ormai davvero banale: creo due oggetti XMLDOM ed in uno carico il file XML, mentre nell’altro carico il file XSLT; utilizzo poi il metodo transformNode associato all’istanza dell’oggetto XMLDOM che carica il file XML; passerò poi come parametro obbligatorio al metodo l’istanza dell’oggetto XMLDOM che carica il file XSLT.

Nessun commento »

Non c'è ancora nessun commento.

RSS feed dei commenti a questo articolo. TrackBack URL

Lascia un commento

ASPcenter.net è il blog italiano su ASP, ASP.Net, VB.Net, C# e Visual Studio - Funziona con WordPress