Feuille de style XSLT


Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /homepages/31/d249765410/htdocs/vlasic2/wp-content/plugins/wp-code-highlight/wp-code-highlight.php on line 68

Le XSLT (Extensible Stylesheet Language Transformation) est un langage de programmation que j’ai beaucoup utilisé au sein de Cyberporte.Il permet de manipuler des fichiers XML et de les transformer en ce que vous voulez: HTML… ou encore XML… ou avec certains modules créer du PDF…

Le XSLT est aussi un langage de programmation complet. Il possède des fonctions de calcul, de comptage, des boucles (xsl:if… xsl:choose, xsl:when, xsl:otherwise, xsl:for-each…), des recherches dans un document XML. Néanmoins la fonction principale d’XSLT est le traitement d’un arbre XML.

En créant des templates (xsl:template) on va pouvoir capturer les balises d’un document XML et lui appliquer un traitement.

exemple de base (et puéril j’en conviens…):

Document source XML: liste.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<liste_appreciations_artistes>
  <artiste name="nickcave">J'adore</artiste>
  <artiste name="pjharvey">Je vénère</artiste>
  <artiste name="sarahblasko">J'apprécie énormément</artiste>
  <artiste name="thekills">Je kiffe...</artiste>
</liste_appreciations_artistes>

Feuille de style XSLT: style.xsl

<?xml version="1.0" encoding="ISO-8859-1"?>
 <xsl:stylesheet version="1.0"
                 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="html"
             encoding="ISO-8859-1"
             doctype-public="-//W3C//DTD HTML 4.01//EN"
             doctype-system="http://www.w3.org/TR/html4/strict.dtd"
             indent="yes" />

<xsl:template match="liste_appreciations_artistes">
   <html>
     <body>
       <p>Liste des appréciations par artiste :</p>
       <ul>
         <xsl:apply-templates select="artiste" />
       </ul>
     </body>
   </html>
 </xsl:template>

 <xsl:template match="artiste">
   <li>
      <xsl:value-of select="@name" />
      <xsl:text> : </xsl:text>
      <xsl:value-of select="." />
   </li>
 </xsl:template>

</xsl:stylesheet>

Pour appeler la transformation, en PHP par exemple…

<?
// Crée le processeur XSLT
$xh = xslt_create();
xslt_set_base ($xh, 'file://' . getcwd () . '/');

// Traite le document, puis affiche le résultat
$result = xslt_process($xh, 'liste.xml', 'style.xsl');
if (!$result)
  echo ("Erreur XSLT ...");
else
  echo ($result);

// Kill le processeur XSLT
xslt_free($xh);
?>

Résultat en HTML:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
        "http://www.w3.org/TR/html4/strict.dtd">
<html>
  <body>
    <p>Liste des appréciations par artistes :</p>
      <ul>
        <li>nickcave : J'adore</li>
        <li>pjharvey : Je vénère</li>
        <li>sarahblasko : J'apprécie énormément</li>
        <li>thekills : Je kiffe...</li>
      </ul>
   </body>
</html>

Donc affiché dans un navigateur:

Liste des appréciations par artistes:

  • nickcave: J’adore
  • pjharvey: Je vénère
  • sarahblasko: j’apprécie énormément
  • thekills: Je kiffe…

Principe de base

Un document XML contient une liste d’informations agencées dans un arbre possédant des attributs, des contenus…

La feuille de style XSLT va capturer le document XML grâce à un template qui identifie le nom racine du document source:

<xsl:template match="liste_appreciations_musiciens"</xsl:template>

Il va ensuite créer un autre template pour traiter les éléments qu’il rencontre:

<xsl:template match="artistes"</xsl:template>

puis les insérer au sein de la template principale:

Dans l’entete de la feuille de style XSLT il est stipulé que nous voulons du HTML

<xsl:output method="html...</xsl:output>

Nous avons donc à l’arrivée un document HTML.

Sachant que ce traitement peut être appelé au sein d’un script PHP ou CGI ou ce que vous voulez… il faudra effectuer une création de processeur, un appel du traitement et une destruction du processeur. Pour cela vous pouvez utiliser le bout de code plus haut…

Ceci est un fonctionnement de base mais il existe une multitude d’outils facilitant les transformations, et XSLT peut manipuler de très gros fichiers XML grâce à sa puissance. Cela en fait un outil de traitement de données incontournable.

En extrapolant il est de plus en plus fréquent de voir des système de gestion de données qui au lieu de se baser sur un stockage de type base de donnée (mysql, postgresql…) utilise plutôt des fichiers XML qui proposent les mêmes règles de sécurité, les mêmes facilités d’accés, de mise à jour…

Une application complète et efficace de l’outil XSLT se trouve sur le site XCRUCIATE outil créé par la société CYBERPORTE pour laquelle j’ai travaillé.

Cet outil est un CMS performant qui permet de générer des sites web (exemple: StPixels.com) multi utilisateurs, avec des règles d’accès, et une gestion du contenu du type WordPress ou Drupal…

Ce contenu a été publié dans xml, avec comme mot(s)-clé(s) , , , , , , . Vous pouvez le mettre en favoris avec ce permalien.

Laisser un commentaire