Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    xslt_create() - come processa?

    Ciao, un semplice codice.

    Codice PHP:

    <?php
    $parser 
    xslt_create();
    $html xslt_process($parser'page.xml.php''emule.xul.xsl');
    xslt_free($parser);

    echo 
    $html;
    ?>
    In questo modo trasformo il mio file XML in HTML attraverso una trasformazione XSL, solo che se XML contiene del php, il parsing del documento fallisce...

    Insomma, pare che il parser processi il codice sorgente e non il risultato della pagina PHP... il sorgente XML, infatti, pur contenendo PHP viene elaborato correttamente e inviato al browser come semplice XML.
    Are you alive?
    No, but I was written with LOVE. A new scripting language.
    www.frequenze.it

  2. #2
    Ho provato anche ad inviare la pagina su un server remoto, in modo che sia quasi obbligatorio il processo PHP ma non cambia niente... qualche idea?
    Are you alive?
    No, but I was written with LOVE. A new scripting language.
    www.frequenze.it

  3. #3
    serve a convertire XML in HTML...non PHP in HTML

    puoi creare tu il codice XML tramite la tua pagina e POI tramite una funzione lo converti processandolo in HTML...in pratica invece di estrarlo da una pagina lo estrai da una variabile che crea la pagina stessa

    cmq...in PHP5 cambia tutto completamente...andrà ad oggetti
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  4. #4
    Estensione a parte... che non da problemi.

    La pagina page.xml.php

    Codice PHP:

    <?php

    $ciao 
    "Ciao sono XML";
    header("Content-type: text/xml");
    echo 
    "<?xml version=\"1.0\"?>";

    ?>

    <page>

    <item><?=$ciao?></item>

    </page>
    e' una perfetta pagina PHP una volta processata da Apache. Se io la metto su un server esterno il mio PHP non deve aver modo di accedere al sorgente, in nessun caso.

    Perche' allora il parser da' errore???

    Il passaggio dovrebbe essere

    PHP -> Apache -> XML <- parserPHP -> Apache -> HTML <- browser

    Se accede al codice sorgente allora succede un casino. E' un buco di sicurezza grosso come una casa, o magari e' cosi appositamente, ma non riesco a capire perche'.
    Are you alive?
    No, but I was written with LOVE. A new scripting language.
    www.frequenze.it

  5. #5
    Ciao,
    il parser xslt non esegue la pagina PHP ma la prende così com'è, quindi tu fai processare l'output misto php/xml. Ecco il perchè dell'errore.

    Se vuoi prendere il contenuto xml generato da PHP devi far eseguire la pagina, raccoglierla in una stringa e poi passare quell'xml al parser

    Es.
    <?php

    //notare http://
    $xml = file_get_contents('http://page.xml.php') ;

    $xsl = file_get_contents('emule.xul.xsl') ;

    $arguments = array(
    '/_xml' => $xml,
    '/_xsl' => $xsl
    )

    $parser = xslt_create();

    $html = xslt_process($parser, 'arg:/_xml', 'arg:/_xsl', NULL, $arguments);

    xslt_free($parser);

    echo $html;
    ?>

    Se vuoi che ad eseguire la trasformazione sia la pagina php stessa che genera l'xml, a occhio e croce puoi fare anche così ( non ho provato ma dovrebbe funzionare)

    <?php
    //file ob_transformer.php

    function xslt_transform($bufferXML)
    {
    global $XSLT ;

    $arguments = array(
    '/_xml' => $bufferXML,
    '/_xsl' => file_get_contents($XSLT)
    )

    $parser = xslt_create();

    return (xslt_process($parser, 'arg:/_xml', 'arg:/_xsl', NULL, $arguments)) ;


    xslt_free($parser);


    }
    ?>

    <?php
    //file page.xml.php

    $XSLT = "emule.xul.xsl"

    include('ob_transformer.php') ;

    /*
    Catturo l'output
    */
    ob_implicit_flush(0) ;
    ob_start('xslt_transform') ;

    //tuo codice misto php e xml

    ?>


    P.s.
    Non si tratta di un baco nè di una falla nella sicurezza, il file così come lo carichi tu viene sempre e comunque caricato da locale (relativamente allo script)
    per favore NIENTE PVT TECNICI da sconosciuti

  6. #6
    Codice PHP:
    <?php
    //notare [url]http://[/url] 
    $xml file_get_contents('http://www.frequenze.it/tmp/page.xml.php'); 
    $xsl file_get_contents('http://www.frequenze.it/tmp/emule.xul.xsl'); 

    $arguments = array( 
    '/_xml' => $xml
    '/_xsl' => $xsl 


    $parser xslt_create(); 

    $html xslt_process($parser'arg:/_xml''arg:/_xsl'NULL$arguments); 

    xslt_free($parser); 

    echo 
    $html;
    ?>
    Non riesco proprio a capire... ho caricato i file sul mio sito (lo script e' quindi reale a questo punto, ma restituisce degli errori. Eppure, aperti nel browser daranno come risultato due perfetti file XML.

    ... non riesco proprio a capire. Mi dai una mano?
    Are you alive?
    No, but I was written with LOVE. A new scripting language.
    www.frequenze.it

  7. #7
    posta gli errori, ora stacco ma domani provo a rispondere
    per favore NIENTE PVT TECNICI da sconosciuti

  8. #8
    Scusa... funziona. Non ho messo il punto e virgola a $arguments.

    Mi spieghi il perche' di quell'array e del perche' un codice cosi' non funziona??

    Codice PHP:
        $myxml file_get_contents("http://www.frequenze.it/tmp/page.xml.php");
        
    $myxsl file_get_contents("http://www.frequenze.it/tmp/emule.xul.xsl");
        

    $parser xslt_create();
    $html xslt_process($parser$myxml$myxsl);
    xslt_free($parser);
    echo 
    $html
    Grazie!
    Are you alive?
    No, but I was written with LOVE. A new scripting language.
    www.frequenze.it

  9. #9
    Originariamente inviato da Mutato
    Scusa... funziona. Non ho messo il punto e virgola a $arguments.

    Mi spieghi il perche' di quell'array e del perche' un codice cosi' non funziona??
    Perchè a xslt_process puoi passare indifferentemente una stringa o un file, e non c'è modo di distinguere chiaramente la stringa che rappresenta il nome di un file da una stringa qualsiasi.

    Quindi per poter utilizzare entrambi è necessario specificare esplicitamente di cosa si tratta.
    Nel caso di Windows è anche raccomandabile premettere file:// al nome del file
    per favore NIENTE PVT TECNICI da sconosciuti

  10. #10
    E quella sintassi?

    arg:/_xml???

    cos'e' arg: ???

    Non l'ho mai visto prima VVoVe:
    Are you alive?
    No, but I was written with LOVE. A new scripting language.
    www.frequenze.it

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.