[PHP] Effettuare dinamicamente trasformazioni XSL a file XML

Breve post per illustrare come usare le funzioni XSL in PHP5. L'architettura di riferimento è LAMP (con Ubuntu come distro) per cui tutto è già automagicamente disponibile, poichè l'estensione XSL è già inclusa in PHP5.

Sia dato il seguente file, collection.xml:


<collection>
<cd>
<title>Fight for your mind</title>
<artist>Ben Harper</artist>
<year>1995</year>
</cd>
<cd>
<title>Electric Ladyland</title>
<artist>Jimi Hendrix</artist>
<year>1997</year>
</cd>
</collection>
e il suo foglio di stile, collection.xsl, deputato al parsing del documento XML per la generazione del codice HTML:

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="owner" select="'Nicolas Eliaszewicz'"/>

<xsl:output method="html" encoding="iso-8859-1" indent="no"/>
<xsl:template match="collection">
Hey! Welcome to <xsl:value-of select="$owner"/>'s sweet CD collection!
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="cd">
<h1><xsl:value-of select="title"/></h1>
<h2>by <xsl:value-of select="artist"/> - <xsl:value-of select="year"/></h2>
; <hr />
</xsl:template>
</xsl:stylesheet>
Vediamo il codice PHP che ci serve per effettuare dinamicamente la trasformazione:

$doc = new DOMDocument();
$xsl = new XSLTProcessor();

$doc->load('collection.xsl');
$xsl->importStyleSheet($doc);

$doc->load('collection.xml');
echo $xsl->transformToXML($doc);
Il risultato dovrebbe essere simile al seguente:

0 comments:

Byte Strike Blog - Designed by Posicionamiento Web | Bloggerized by GosuBlogger