Comportamento (a me) incomprensibile di XSLTProcessor

di il
1 risposte

Comportamento (a me) incomprensibile di XSLTProcessor

Ciao a tutti,
sto cercando di scrivere del codice php che permetta di visualizzare un pezzo alla volta il contenuto di un file xml (un foglio di problemi di matematica). Ho utilizzato simplexml e XSLTprocessor

La struttura del file XML è questa:

<?xml version="1.0" encoding="utf-8"?>
<data>
<problem>
.....
</problem>
<problem>
.....
</problem>
</data>

e queste sono le linee di codice incriminate:

$xml = simplexml_load_file($target_file);
$xsl = new DOMDocument;
$xsl->load('xml2html.xsl');
$proc = new XSLTProcessor;
$proc->importStyleSheet($xsl);

$p=$xml->problem[5];
echo $p->asXML();
echo $proc->transformToXML($p);

Mi aspetterei che la penultima (aggiunta per capire che cosa succede) e l'ultima mostrino lo stesso pezzo di XML (cioè il quinto problema della lista). Invece la penultima lo fa correttamente, mentre l'ultima trasforma e mostra in realtà l'intero documento. Qualcuno mi sa spiegare il perchè??
Se può essere di qualche utilità, aggiungo che il file xml2html.xsl è collaudato e funziona bene in altri contesti.
Grazie!

1 Risposte

  • Re: Comportamento (a me) incomprensibile di XSLTProcessor

    Mah... mi rispondo da solo: è bruttissima,
    ma questa sembra essere una soluzione:

    $q=simplexml_load_string($p->asXML());
    echo $proc->transformToXML($q);

    In pratica stampare una stringa con la parte di XML che mi serve e poi ri-caricare quella.
Devi accedere o registrarti per scrivere nel forum
1 risposte