La funzione xslt_process() è una delle più importanti della nuova estensione XSLT. Permette di eseguire una trasformazione XSLT usando quasi ogni tipo di fonte per l'input - i contenitori. Questa è un completamento mediante l'uso dell'argomento buffers -- un concetto preso dal processore XSLT Sablotron (attualmente l'unico processore XSLT supportato da questa estensione). Il contenituore di input di default è il nome del file del documento trasformato. Se il contenitore di destinaizone non viene fornito, ad esempio è impostato a NULL - alla la funzione restituisce il risultato.
Avvertimento |
Questa funzione ha modifica i propri argomenti dalla versione 4.0.6. Infatti non fornire più il contenuto XML o XSL come secondi e terzi argomenti, poichè questi creano un segmentation fault in Sablotron fino alla versione 0.95 inclusa. |
I contenitori possono essere impostati anche tramite la matrice $arguments (vedere più avanti).
Il più semplice tipo di trasformazione con la funzione xslt_process() è la trasformazione di un file XML con un file XSLT, mettendo il risultato in un terzo file contenente un nuovo documento XML (o HTML). Fare questo con Sablotron è davvero molto semplice...
Mentre questa funzionalità è importante, a volte, specialmente in un ambiente web, si vorrebbe avere la possibilità di scrivere a video il risultato direttamente. Quindi, se si omette il terzo argomento alla funzione xslt_process() (o si inserisce il valore NULL per l'argomento), lo script restituirà automaticamente il valore della trasformazione dell'XSLT, invece di scriverlo in un file...
Esempio 2. Uso di xslt_process() per trasformare un file XML e uno XSL in una variabile contenente i dati XML restituiti
|
I due casi sopra sono i due casi più semplici che ci sono quando c'è una trasformazione XSLT e c'è da dire che dovreste essere per la maggior parte delle volte in questi casi, ma, a volte, puoi prendere il tuo codice XML e XSLT da fonti esterne, come database e socket. In questi casi, avrai i dati XML e/o XSLT in una variabile -- nella produzione di applicazioni l'overhead per scaricare questo codice al file potrebbere essere eccessivo. Qui la sinstassi degli argomenti dell'XSLT ci aiuta. Invece dei file come argomenti XML e XSLT alla funzione xslt_process(), puoi specificare l' "argument place holders" il quale è poi sostituito dal valore dato nell'argomento dell'array (il quinto parametro della funzione xslt_process()). Di seguito c'è un esempio del processo di inserimento di codice XML e XSLT senza l'ausilio di file.
Esempio 3. Uso di xslt_process() per trasformare una variabile contenente dati XML e una variabile contenente dati XSL in una variabile contenente i dati XML risultanti
|
Finalmente, l'ultimo argomento della funzione xslt_process() rappresenta una matrice di qualsiasi parametro di alto livello che si desidera passare al documento XSLT. Questi parametri possono essere referenziati dal file XSL utilizzando l'istruzione <xsl:param name="parameter_name">. I parametri devono avere la codifica UTF-8 ed i rispettivi valori devono essere interpretati come stringhe dal processore Sablotron. In altre parole non si possono passare come parametri al documento XSLT dei node-set.
Esempio 4. Passaggio di variabili PHP al file XSL
Il precedente esempio visualizzerà:
|
Nota: Please note that file:// is needed in front of path if you use Windows.