Newsgroup: it.comp.www.php
Titolo: xml-xsl

ciao a tutti,
-->php4.2 su linux
Ho creato un xml, che all'atto pratico é un "pezzo" di una pagina web.
Lo creo all'interno di un metodo il cui return é la stringa xml.
Ho anche creato l'xslt di formattazione.
Non capisco perché quando faccio l'echo della stringa mi stampa la stringa
xml senza prendere in considerazione l'istruzione:
<?xml-stylesheet type="text/xsl" href="myxsl.xsl" ?>
Ho provato anche a creare prima il file xml, scrivergli dentro la stringa
xml e poi includerlo nella pagina... ma niente!
Soluzioni?
Grazie a tutti!
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 <?xml-stylesheet type="text/xsl" href="myxsl.xsl" ?>
Non ho capito granché di ciò che hai scritto, comunque...che browser 
hai usato?
--
rob4you

rob4you ha scritto:


IE e Firefox
In pratica io "costruisco" un foglio xml che farà parte di una pagina html.
Quel "pezzo" xml lo voglio formattare con un xsl. Alché lo stampo a video
con un echo e invece di essere trasformato grazie all'xsl mi viene
stampato senza formattazione...
Nell'xml c'é l'istruzione:
<?xml-stylesheet type="text/xsl" href="myxsl.xsl" ?>
-- 


rob4you ha scritto:


IE e Firefox
In pratica io "costruisco" un foglio xml che farà parte di una pagina html.
Quel "pezzo" xml lo voglio formattare con un xsl. Alché lo stampo a video
con un echo e invece di essere trasformato grazie all'xsl mi viene
stampato senza formattazione...
Nell'xml c'é l'istruzione:
<?xml-stylesheet type="text/xsl" href="myxsl.xsl" ?>
-- 


 <?xml-stylesheet type="text/xsl" href="myxsl.xsl" ?>
Cioè tu, in una pagina con html (quindi che inzia e finisce con i 
classici tag <html> e </html>, hai inserito un pezzo di xml?
Beh, se è così, penso sia ovvio che in questo caso non avrai l'effetto 
voluto.
Se invece la pagina è TUTTA xml, e la vuoi formattare con un foglio 
stile xsl, allora saprai sicuramente che puoi farlo direttamente solo 
in IE (che ha un parser xml) e non in FF.
In entrambi i casi, il mio suggerimento è l'uso delle funzioni di php, 
che vengono in aiuto proprio per questo.
Citando un semplice esempio del manuale:
<?php
// Load the XML source
$xml = new DOMDocument;
$xml->load('collection.xml');
$xsl = new DOMDocument;
$xsl->load('collection.xsl');
// Configure the transformer
$proc = new XSLTProcessor;
$proc->importStyleSheet($xsl); // attach the xsl rules
echo $proc->transformToXML($xml);
?>
E il gioco è fatto.
--
rob4you
www.outofmind.eu

 xml e poi includerlo nella pagina... ma niente!
vedi la domanda che ti han fatto per capire se includi l'xml in una
pagina html o l'output dello script e' esclusivamente l'xml. in questo
caso potrebbe essere un problema di header che il server invia al
browser
prova ad aggiungere prima dell'echo (e senza inviare nessun output
precedentemente)
header('Content-type; application/xml');
o
header('Content-type; text/xml');

 // Load the XML source
Si lo so, ma quelle sono disponibili solo dalla 5 se non sbaglio e io uso
la 4.
Grazie


 la 4.
Verissimo...ecco un motivo per preferire la 5 alla 4! :-)
scherzi a parte, se sei "legato" alla versione 4, se vuoi gestire le 
xslt, quanto meno installa le librerie Sablotron appropriate per lo 
scopo. L'indirizzo è:  
http://www.gingerall.org/sablotron.html
Dopo che lo hai fatto, ho trovato sul manuale la solita funzioncina che 
fa più o meno la stessa cosa di prima:
<?php
function xml2html($xmldata, $xsl)
{
    /* $xmldata -> your XML */
    /* $xsl -> XSLT file */
    $path = 'include';
    $arguments = array('/_xml' => $xmldata);
    $xsltproc = xslt_create();
    xslt_set_encoding($xsltproc, 'ISO-8859-1');
    $html =
        xslt_process($xsltproc, 'arg:/_xml', "$path/$xsl", NULL, 
$arguments);
    if (empty($html)) {
       die('XSLT processing error: '. xslt_error($xsltproc));
    }
    xslt_free($xsltproc);
    return $html;
}
?>
--
rob4you
www.outofmind.eu