1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
| <?
// Est-ce qu'on est en ligne ?
$est_en_ligne = 1;
// Paramètres
$params = Array
(
"page" => $page,
"racine" => $racine,
"groupe" => $groupe,
"repertoire" => $repertoire,
"est_en_ligne" => $est_en_ligne
);
// Xml and XSL files
$xml = "xml/".$repertoire.$page.".xml";
if (!$xsl) $xsl = "html.xsl";
$xsl = "xsl/".$xsl;
// Allocate a new XSLT processor
$xh = xslt_create();
$nom_fich = 'file://' . getcwd () . '/' . $racine;
xslt_set_base ($xh, $nom_fich);
// Traite le document
$result = xslt_process($xh, $xml, $xsl, NULL, NULL, $params);
if (!$result) {
// ERREUR du parseur XSLT :-(
echo '<p>Erreur XSLT lors du traitement du fichier "'.$xml.'" ';
echo '('.$nom_fich.')';
echo 'par la feuille de style "'.$xsl.' :<br>';
echo xslt_error($xh);
echo ' (numero '.xslt_errno($xh).')';
echo '</p>';
} else if ($php) {
// Analyse le code PHP
$ouvre = '<php>';
$ferme = '</php>';
while ($pos_start = strpos($result, $ouvre))
{
// Ajoute ce qui n'est pas du PHP
echo substr($result, 0, $pos_start);
// Cherche la balise de fermeture
$pos_end = strpos($result, $ferme);
$pos_start += strlen($ouvre);
if (!$pos_end)
{
echo ("ERREUR: Balise fermante '$ferme' introuvable !!!");
break;
}
// Evalue le code PHP
eval(substr($result, $pos_start, $pos_end-$pos_start));
// Passe à la suite
$result = substr($result, $pos_end+strlen('</php>'));
}
echo $result;
} else {
// Ecrit la page HTML
echo $result;
}
// Destroy the XSLT processor
xslt_free($xh);
?> |
Partager