- Introduzione a XSLT -
|
|||
COSA SERVE PER QUESTO TUTORIAL | |||
Download | Chiedi sul FORUM | Glossario | Un qualunque editor testuale e Internet Explorer, Opera o Firefox oppure un server che supporti ASP .Net o PHP | ||
Concetti base delle trasformazioni XSL e applicazione in PHP e ASP .Net | |||
DEFINIZIONE E SCOPO DI XSLT L'obiettivo di XSLT XSLT, o XSL Transformations, insieme a XSL-FO (XSL Formatting Objects) costituisce XSL (eXtensible Stylesheet Language). Grazie a XSLT è possibile trasformare un documento XML in un'infinità di formati, ad esempio (X)HTML ma anche RDF, SVG o persino testo semplice; questo avviene per mezzo di un parser XSLT che interpreta il documento XML di origine e produce un risultato in base al foglio di stile XSLT. Ma vediamo subito un esempio pratico per capirne l'utilità. Ammettiamo di avere un documento XML come quello che segue che descrive una persona: <?xml version="1.0" encoding="iso-8859-1"?> <persona codicefiscale="MRARSS50A01A390K"> <nome>Mario</nome> <cognome>Rossi</cognome> <altezza>1,80 m</altezza> <peso>75 Kg</peso> <professione>impiegato</professione> </persona> Supponiamo ora di voler formattare questi dati e mostrarli in un documento HTML simile a quello che segue. <html> <body> Buongiorno signor <ins><!-- Cognome --></ins> <ins><!-- Nome --></ins>, le ricordiamo che la sua altezza è di <ins><!-- Altezza --></ins> e il suo peso di <ins><!-- Peso --></ins>. La sua occupazione è <ins><!-- Professione --></ins> e il suo codice fiscale corrisponde a <ins><!-- Codice fiscale --></ins>. </body> </html> Ovviamente il codice sopra riportato non mostrerà nulla in quanto "<!-- Cognome -->", "<!-- Nome -->", ecc. sono commenti. XSLT si pone come obiettivo di mettere "qualcosa" (un tag come vedremo tra poco) al posto di questi commenti che verrà rimpiazzato con il contenuto del documento XML. IL PRIMO FOGLIO DI STILE XSLTCome formattare un semplice documento XML con XSLT. Di seguito riportiamo in foglio di stile XSLT che trasforma i dati del documento di input in un documento HTML: <?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="persona"> <html> <body> Buongiorno signor <ins><xsl:value-of select="cognome" /> <xsl:value-of select="nome" /></ins>, le ricordiamo che la sua altezza è di <ins><xsl:value-of select="altezza" /></ins> e il suo peso di <ins><xsl:value-of select="peso" /></ins>. La sua occupazione è <ins><xsl:value-of select="professione" /></ins> e il suo codice fiscale corrisponde a <ins><xsl:value-of select="@codicefiscale" /></ins>. </body> </html> </xsl:template> </xsl:stylesheet> Nota:   corrisponde a (non-breaking space,
carattere il cui valore è 160, A0 in esadecimale) ma è espresso
in questa forma perché non è possibile usare direttamente in
quanto non è definito da alcuna parte (sebbene molto noto, esso fa in realtà
parte delle specifiche HTML/XHTML, che in questo documento non entrano
in gioco). <?xml version="1.0" encoding="iso-8859-1"?> <?xml-stylesheet type="text/xsl" href="persona.xsl"?> <persona codicefiscale="MRARSS50A01A390K"> <nome>Mario</nome> <cognome>Rossi</cognome> <altezza>1,80 m</altezza> <peso>75 Kg</peso> <professione>impiegato</professione> </persona> Si noti che il foglio di stile in questo caso è stato chiamato
persona.xsl e si deve trovare nella stessa cartella del documento XML (persona.xml). <html> <body> Buongiorno signor <ins>Rossi Mario</ins>, le ricordiamo che la sua altezza è di <ins>1,80 m</ins> e il suo peso di <ins>75 Kg</ins>. La sua occupazione è <ins>impiegato</ins> e il suo codice fiscale corrisponde a <ins>MRARSS50A01A390K</ins>. </body> </html> Come promesso il risultato ottenuto è quello inizialmente desiderato. XSLT in tre righe di codice ASP .Net e PHP. In sole tre righe in un qualsiasi linguaggio .Net è possibile, dato un documento XML di input e un foglio di stile XSLT, effettuare una trasformazione XSL: Dim xslTransfomer As New System.Xml.Xsl.XslCompiledTransform() xslTransfomer.Load(strXSLTPath) xslTransfomer.Transform(strInputPath, strOutputPath) Come è intuibile, nella prima riga dichiariamo l'oggetto
XslCompiledTransform (si noti che esiste anche una classe
XslTransform ma è deprecata), nella seconda con il metodo Load
carichiamo il foglio di stile XSLT (indicato dal percorso contenuto in
strXSLTPath) e infine effettuiamo la trasformazione con il metodo
Transform, fornendogli come parametri strInputPath e
strOutputPath, rispettivamente il percorso del file XML di input e
quello in cui verrà generato l'output. $xslt = xslt_create(); xslt_process($xslt, $_GET['input'], $_GET['xslt'], $_GET['output']); xslt_free($xslt); Nella prima riga viene creato l'oggetto che permette le
trasformazioni XSLT (xslt_create) mentre la seconda esegue la
trasformazione attraverso xslt_process (passandogli il percorso
del documento XML di input, quello del foglio di stile XSLT e quello
destinato all'output); infine viene rilasciato l'oggetto in precedenza
creato (xslt_free). XSLT: confronto con altre soluzioni. Ma quali vantaggi
offre l'utilizzo di XSLT? Ammettiamo di voler formattare dei dati e
mostrarli all'utente sul web tramite HTML. Certamente le trasformazioni
XSL non possono reggere il confronto con linguaggi di programmazione
lato-server avanzati quali ASP o PHP sul lato della potenza, infatti, ad
esempio, le possibilità di modificare una stringa si limita ad un
substring e poco altro. Risulta però assai vantaggioso sotto altri
aspetti. |
|||
<< INDIETRO | by VeNoM00 |