Ciao ragazzi,
Sto cercando di capire come far interagire php xml ed xslt.

Ho generato un file xml contenente i risultati di una query.
Ho scritto un file xsl che mi permettesse di presentare i dati tramite istogrammi (ancora da perfezionare).
Ora se richiamo il file xml il tutto funziona. ovvero mi applica la trasformazione.
Dunque il problema è questo:
Se cerco di applicarla lato server non funziona (mi scrive solo i testi ma non mi visualizza gli istogrammi)
vi posto i file per chiarezza

grazie

Codice PHP:
<?
include ("/var/www/prog/config.inc.php");
include (
"/var/www/prog/top_foot.inc.php");

//intestazione
//top();


$db mysql_connect($db_host$db_user$db_password);
  if (
$db == FALSE)
    die (
"Errore nella connessione. Verificare i parametri nel file config.inc.php");

  
mysql_select_db($db_name$db)
    or die (
"Errore nella selezione del database. Verificare i parametri nel file config.inc.php");

$query="SELECT matricola,cognome,studente.nome,data_nascita,esame.nome, voto, anno,cfu,data FROM `studente` INNER JOIN ( sostenuto INNER JOIN esame ON fk_insegnamento=insegnamento) ON fk_matricola=matricola WHERE fk_matricola='86'";
$result=mysql_query($query$db);     

  
mysql_close($db);
//endif; // chiude la verifica della presenza dei dati
$row mysql_fetch_array($result);
$filefopen("esami.xml""w");
$_xml =  "<"."?xml version='1.0' encoding='UTF-8' ?".">\r\n";
//$_xml .=  "<"."?xml-stylesheet type='text/xsl' href='isto_2008_2.xsl' ?".">\r\n";
//$_xml .=  "<"."?xml-stylesheet type='text/xsl' href='esami.xsl'?".">\r\n";
$_xml .= "<studente id='$row[0]'>\r\n";
$_xml .= "\t<dati_anagrafici>\r\n";
$_xml .= "\t\t<cognome>\r\n";
$_xml .= "\t\t\t{$row['cognome']}\r\n";
$_xml .= "\t\t</cognome>\r\n";
$_xml .= "\t\t<nome>\r\n";
$_xml .= "\t\t\t{$row[2]}\r\n";
$_xml .= "\t\t</nome>\r\n";
$_xml .= "\t</dati_anagrafici>\r\n";
$_xml .= "\t<esami>\r\n";
do
 {
    
$_xml .= "\t\t<esame>\r\n";
    
$_xml .= "\t\t\t<nome>{$row[4]}</nome>\r\n";
        
$_xml .= "\t\t\t<".mysql_field_name($result,5).">{$row['voto']}</".mysql_field_name($result,5).">\r\n";
        
$_xml .= "\t\t\t<".mysql_field_name($result,6).">{$row['anno']}</".mysql_field_name($result,6).">\r\n";
        
$_xml .= "\t\t\t<".mysql_field_name($result,7).">{$row['cfu']}</".mysql_field_name($result,7).">\r\n";
        
$_xml .= "\t\t\t<".mysql_field_name($result,8).">{$row['data']}</".mysql_field_name($result,8).">\r\n";
        
//$_xml .= "\t\t</".str_replace(" ", "_", $row[4]).">\r\n";
    
$_xml .= "\t\t</esame>\r\n";
}while (
$row mysql_fetch_array($result));
$_xml .= "\t</esami>\r\n";
$_xml .= "</studente>";


fwrite($file$_xml);

fclose($file);


// Trasformazione xsl lato server

$xml = new DOMDocument;
$xml->load('esami.xml');

$xsl = new DOMDocument;
$xsl->load('isto_2008_2.xsl');
//$xsl->load('esami.xsl');

// Configure the transformer
$proc = new XSLTProcessor;
$proc->importStyleSheet($xsl); // attach the xsl rules

echo $proc->transformToXML($xml);


//echo "XML has been written. <a href=\"test.xml\">View the XML.</a>";

//} else {

//echo "No Records found";

//}


// chiusura pagina
//foot();
?>


file xml


<?xml version='1.0' encoding='UTF-8' ?>
<studente id='86'>
<dati_anagrafici>
<cognome>
Rossi
</cognome>
<nome>
Mario
</nome>
</dati_anagrafici>
<esami>
<esame>
<nome>Analisi Matematica I</nome>
<voto>19</voto>
<anno>I</anno>
<cfu>7</cfu>
<data>2003-10-01</data>
</esame>
<esame>
<nome>Analisi Matematica II</nome>
<voto>25</voto>
<anno>I</anno>
<cfu>6</cfu>
<data>2003-12-15</data>
</esame>
<esame>
<nome>Calcolatori Elettronici I</nome>
<voto>21</voto>
<anno>I</anno>
<cfu>6</cfu>
<data>2002-07-25</data>
</esame>
<esame>
<nome>Economia e Organizzazione Aziendale</nome>
<voto>25</voto>
<anno>I</anno>
<cfu>5</cfu>
<data>2002-07-04</data>
</esame>
<esame>
<nome>Fisica Generale I</nome>
<voto>21</voto>
<anno>I</anno>
<cfu>6</cfu>
<data>2004-12-16</data>
</esame>
<esame>
<nome>Fisica Generale II</nome>
<voto>24</voto>
<anno>I</anno>
<cfu>7</cfu>
<data>2005-05-05</data>
</esame>
<esame>
<nome>Fondamenti di Informatica I</nome>
<voto>28</voto>
<anno>I</anno>
<cfu>6</cfu>
<data>2001-12-04</data>
</esame>
<esame>
<nome>Geometria e Algebra</nome>
<voto>24</voto>
<anno>I</anno>
<cfu>6</cfu>
<data>2003-04-15</data>
</esame>
<esame>
<nome>Lingua Inglese</nome>
<voto>30</voto>
<anno>I</anno>
<cfu>3</cfu>
<data>2007-01-11</data>
</esame>
<esame>
<nome>Teoria dei Circuiti</nome>
<voto>23</voto>
<anno>I</anno>
<cfu>5</cfu>
<data>2005-07-07</data>
</esame>
</esami>
</studente>

file di trasmormazione xsl


<?xml version="1.0" encoding="utf-8"?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
xmlns:svg="http://www.w3.org/2000/svg" >
<xsl:variable name="L" select="1500" />
<xsl:variable name="H" select="300" />
<xsl:variable name="Alf" select="0.2"/>
<xsl:variable name="Beta" select="0.8"/>
<xsl:variable name="Mas" >
<xsl:call-template name="massimo1" />
</xsl:variable>
<xsl:variable name="scala" select="($H*$Beta )div $Mas" />
<xsl:variable name="B" select="$L div ((1+$Alf)*count(/studente/esami/esame)+$Alf)"/>
<xsl:variable name="D" select="$B*$Alf" />

<xsl:template match="studente">
<svg:svg width="{$L}" height="{$H+200}" >
<svg:rect x="0" y="0" height="{$H+200}" width="{$L}" style="fill:rgb(200,255,255)"/>
<svg:text x="30" y="30" >
<xsl:value-of select="concat('massimo=' ,$Mas)" />
</svg:text>
<svg:g id="esame" transform="translate(0,{$H})">
<xsl:for-each select="esami/esame">
<xsl:variable name="val" select="/studente/esami/esame/voto"/>
<xsl:variable name="col1" >
<xsl:call-template name="colore" >
<xsl:with-param name="v" select="$val*position()*sum(/studente/esami/esame/voto)" />
</xsl:call-template>
</xsl:variable>
<!--preleva il colore dall' attributo xml
<svg:rect x="{position()*($D+$B)-$B}" y="-{$val*$scala}" height="{$val*$scala}" width="{$B}" style="fill:{@fill};"/> -->
<svg:rect x="{position()*($D+$B)-$B}" y="-{$val*$scala}" height="{$val*$scala}" width="{$B}" style="fill:{$col1};"/>
<svg:text x="{position()*($D+$B)-$B + 7.5}" y="-{$val*$scala+5}" style="font-family:arial;text-anchor:middle;baseline-shift:-15;">
<xsl:value-of select="voto"/>
</svg:text>
<svg:text x="{position()*($D+$B)-$B + 7.5}" y="20" style="font-family:arial;text-anchor:middle;baseline-shift:-15; font-size:xx-small">
<xsl:value-of select="nome"/>
</svg:text>
</xsl:for-each>
<svg:text x="50" y="40" style="font-family:arial;text-anchor:middle;baseline-shift:-15;">
<xsl:value-of select="concat('totale =' ,sum(/studente/esami/esame/voto))" />
</svg:text>
<svg:text x="50" y="60" style="font-family:arial;text-anchor:middle;baseline-shift:-15;">
<xsl:value-of select="concat('n. valori=',count(/studente/esami/esame))" />
</svg:text>
<svg:text x="50" y="80" style="font-family:arial;text-anchor:middle;baseline-shift:-15;">
<xsl:value-of select="concat('media=' , sum(/studente/esami/esame/voto) div count(/studente/esami/esame))" />
</svg:text>
</svg:g>
</svg:svg>
</xsl:template>



<xsl:template name="massimo1" >
<xsl:for-each select="/studente/esami/esame" >
<xsl:sort select="value" data-type="number" />
<xsl:if test ="position()=last()" >
<xsl:value-of select="voto" />
</xsl:if>
</xsl:for-each>
</xsl:template>

<xsl:template name="colore" >
<xslaram name="v" select ="231" />
<xsl:variable name="r" select="round($v mod 255)" />
<xsl:variable name="g" select="round($v*$v mod 255)" />
<xsl:variable name="b" select="round($v*$v*$v mod 255)" />
<xsl:value-of select="concat('rgb(',$r,',',$g,',',$b,')')" />
</xsl:template>
</xsl:transform>