Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    42

    trasformazione xslt lato server

    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>

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    42
    allora nessuno nessuno?
    Ma php è veramente un linguaggio sfigato...
    non capisco se vi sono antipatico o chiedo cose troppo difficili (onestamente penso più la prima)...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.