| 12
 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