CXXIII. XSL

Introduction

Avertissement

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.

L'extension XSL implémente le standard XSL, et fait des transformations XSLT à l'aide de la bibliothèque libxslt.

Pré-requis

Cette extension utilise la bibliothèque libxslt qui peut être trouvée sur http://xmlsoft.org/XSLT/. La bibliothèque libxslt version 1.0.18 ou supérieure est requise.

Installation

PHP 5 inclut l'extension XSL par défaut et peut être activée en ajoutant l'argument --with-xsl[=DIR] à votre ligne de configuration. DIR est le dossier d'installation de la bibliothèque libxslt.

Exemples

Dans cet exemple d'introduction, nous allons apprendre comment transformer un document XML en un document HTML.

Exemple 1. Un arbre XSL simple

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="html" encoding="iso-8859-1" indent="no"/>
 <xsl:template match="collection">
  Hey! Bienvenue dans ma collection de CD !
  <xsl:apply-templates/>
 </xsl:template>
 <xsl:template match="cd">
  <h1><xsl:value-of select="titre"/></h1>
  <h2>par <xsl:value-of select="artiste"/></h2>
  <h3> - <xsl:value-of select="annee"/></h3>
 </xsl:template>
</xsl:stylesheet>

Exemple 2. L'arbre XML correspondant

<collection>
 <cd>
  <titre>PHP Rock</titre>
  <artiste>Joe Coder</artiste>
  <annee>2003</annee>
 </cd>
 <cd>
  <titre>Squashing Typos on a Winter's Eve</titre>
  <artiste>kennyt</artiste>
  <annee>2004</annee>
 </cd>
</collection>

Exemple 3. Transformation de XML en HTML

Le code PHP suivant utilise les extensions XML et XSL pour transformer le code XML en du code HTML présentable.

<?php
/* Chargement des sources XML */
$xml = new DomDocument; // dans /ext/dom
$xml->load('exemple.xml');

$xsl = new DomDocument;
$xsl->load('exemple.xsl');

/* Configuration du transformateur */
$proc = new xsltprocessor;
$proc->importStyleSheet($xsl); // Importation des règles XSL
echo $proc->transformToXML($xml); // Transformation
?>

Cela doit produire le code HTML suivant :

Hey! Bienvenue dans ma collection de CD !

<h1>PHP Rock</h1>
<h2>par Joe Coder</h2>
<h3> - 2003</h3>

<h1>Squashing Typos on a Winter's Eve</h1>
<h2> par kennyt</h2>
<h3> - 2004</h3>

Constantes prédefinies

Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.

XSL_CLONE_AUTO (entier)

XSL_CLONE_NEVER (entier)

XSL_CLONE_ALWAYS (entier)