Aventure XML

Aventure XML – Part2 (Drivers DomXML)

Après avoir testé pas mal de processeur XSLT, mon choix c’est arrêté sur DomXML qui malgré son stade toujours expérimental, n’en demeure pas moi très bon et surtout très répandu (Le principal critère de sélection en fait).

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.

?>
Avatar de Guillaume Kulakowski

À propos de l’auteur

Derniers articles sur le journal

  • SeedboxSync v4.1 : Authentification OIDC, Gravatar et refonte de l’administration
    Découvrez les nouveautés de SeedboxSync v4.1 : intégration d’un système d’authentification natif et OIDC (SSO), support de Gravatar, gestion des utilisateurs en CLI, formulaires Flask-WTForm et transition vers Peewee-Migrate.
  • De Jellystat à Jellydash : moderniser le suivi de mon serveur Jellyfin
    Pourquoi et comment j’ai remplacé Jellystat par Jellydash pour le suivi des statistiques de mon serveur Jellyfin. Retour d’expérience sur la découverte de cet outil moderne, léger et prometteur repéré dans la newsletter selfh.st.
  • SeedboxSync 4.0 : Fusion de l’IHM et du CLI
    La v4.0.0 de SeedboxSync marque un tournant majeur : fusion du CLI et du frontend en une seule application, migration de la configuration en base de données, planificateur Python natif et passage à SQLite WAL. Tour d’horizon des nouveautés et des changements d’architecture.
  • Modernisation du tooling dev sur SeedboxSync : Just, pnpm, uv & Ruff
    SeedboxSync fait peau neuve côté tooling ! Retour sur la modernisation de mon environnement de dev : abandon du bon vieux Makefile au profit de Just, transition vers pnpm pour un gain de temps spectaculaire côté frontend, et adoption de uv et Ruff pour booster l’écosystème Python. Moins de friction, plus de vitesse : découvrez le détail de cette mise à jour.

Articles à la une