Mise en garde issue de php.net :

Ce module est EXPERIMENTAL. Cela signifie que le comportement de ces fonctions, leurs noms et concrètement, TOUT ce qui est documenté ici peut changer dans un futur proche, SANS PREAVIS! Soyez-en conscient, et utilisez ce module à vos risques et périls.

Précédemment nous avions évoqué le principe de l'abstraction du processeur XSLT, je vous livre donc le code de mon driver pour DomXML.

<?
/*---------------------------------------------------
* PhotoLib 1.0
* PhotoLib, la Galerie web.
* --------------------------------------------------
* Par Guillaume Kulakowski
* Développée pour la Licence Professionnelle.
* --------------------------------------------------*/


/**
* couche d'abstraction gérant la gestion du processeur XSLT Domxml.
* @package PhotoLib
* @version $Id
*/


class xsltProcessor {
   
    /*
     * Variables de la classe.
     */

    var $xml;            // dom.
    var $xsl;            // domxsltStylesheet.
    var $html;        // domDocument.
    var $cpt;            // Compteur de transformation.


    /**
     * Constructeur de la classe xsltProcessor. C'est le constructeur qui va
     * récupérer et charger les documents XML et XSL.
     * @param (String) Document XML.
     * @param (String) Document XSL.
     */

    function xsltProcessor( $XML_file, $XSL_file ){

        $this->xslt         = domxml_xslt_stylesheet_file($XSL_file);        // Chargement de la feuille XSL.
        $this->xml         = domxml_open_file($XML_file);            // Chargement de la feuille XML.
        $this->cpt        = 0;                        // Compteur de transformation à 0.
    }


    /**
     * Gère la transformation du document XML.
     * @param (array) Paramètre à passer au document XSL. Ce dernier peut être
     * null.
     */

    function transform( $param = null ){

        // Transformation avec passage de paramètre :
        if ( $param != null )
            { $this->html = $this->xslt->process($this->xml, $param); }

        // Transformation sans paramètre :
        else
            { $this->html = $this->xslt->process($this->xml); }

        $this->cpt++;
    }


    /**
     * A partir d'un domDocument généré par transform(), retourne le code html
     * de ce domDocument.
     * @return (String) Code html.
     */

    function output(){

        return $this->html->html_dump_mem();
    }


    /**
     * Compte le nombre de transformation XSLT effectuées.
     * @return (int) Nombre de transformation XSLT
     */

     function xsltCount(){
         return $this->cpt;
     }


     /**
     * Compte le nom du processeur XSLT.
     * @return (String) Nom du processeur XSLT.
     */

     function xsltName(){
         return '<a href="http://php.net/domxml" target="_blank">DomXML</a>';
     }


}    // Fin.

?>