6.XSLT en pratique

6.1.Les outils de transformation XSL

Il existe de multiples façons d'appliquer une feuille XSL, pour faire une transformation XSLT, sur un document XML.
L'outil à utiliser dépend du contexte d'utilisation, du résultat attendu... et des connaissances de l'utilisateur.
Vous pouvez vouloir simplement visualiser le résultat, le sauvegarder dans un fichier, l'utiliser au sein d'un programme ou le transmettre sur internet.
Selon les cas vous utiliserez un programme de visualisation, une programme à lancer en ligne de commande ou un bout de code dans un langage quelconque: C, Java, PHP, etc.

6.2.Exemple avec PHP

Pour appliquer une transformation XSL sur un document XML, vous pouvez utiliser le script PHP suivant si les 2 sources (les documents XSL et XML) sont dans des fichiers.
<?php
if (count($argv) !== 3) die($argv[0].' <doc.xsl> <doc.xml>'."\n");

error_reporting(E_ALL & ~E_WARNING & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED);

$xmlFullFileName = array_pop($argv);
$xslFullFileName = array_pop($argv);

function transformXSL($xslFullFileName, $xmlFullFileName) {
    $xmlDoc = new DOMDocument();
    if ($xmlDoc->load($xmlFullFileName) === FALSE) {
      throw new Exception(
        'Impossible de charger le fichier XML ['.basename($xmlFullFileName).']'.
         ' Fichier inexistant ou mal formé');
    }
    $xmlDoc->xinclude();

    $xsltDoc = new DOMDocument();
    if ($xsltDoc->load($xslFullFileName) === FALSE) {
      throw new Exception(
        'Impossible de charger le fichier XSL ['.basename($xslFullFileName).']'.
        ' Fichier inexistant ou mal formé');
    }
    $xslt = new XSLTProcessor();
    $xslt->importStyleSheet($xsltDoc);
    
    return $xslt->transformToXML($xmlDoc);
}

try {
    echo transformXSL($xslFullFileName, $xmlFullFileName);
} catch (Exception $e) {
    die($e->getMessage()."\n");
}
Pour visualiser (en ligne de commande) le résultat de la transformation XSL il vous suffit de taper la commande suivante (en précisant le nom et éventuellement le chemin de vos documents XSL et XML):
php xslt.php doc.xsl doc.xml
warning Si la commande vous répond "PHP Fatal error: Class 'XSLTProcessor' not found" c'est tout simplement que vous n'avez pas installé/activé l'extension PHP php5-xsl
rem
  • Pour une utilisation dans un programme PHP, il vous suffit d'extraire la fonction transformXSL()
  • Si la feuille de style nécessite un passage de paramètres vous devrez adapter le script