Logo classes.scriptsphp.org PHP

go to nav bar

XSLT

Application d' une feuille de style XSLT à un document XML.

Cette classe permet d' appliquer une feuille de style XSLT à un document XML. La transformation peut être effectuée de différentes manières : soit en utilisant les extensions que PHP fournit : php-XSLT ou php-DOMXML-XSLT, soit en ligne de commande avec SABLOTRON, XALAN ou XSLTPROC. L' implementation de ces processeurs n' étant pas forcement la meme, certains exemples peuvent poser problème selon votre version de SABLOTRON ou de XALAN, notemment les exemples 3 et 4 qui utilisent des espaces de noms apparemment pas encore supportés sur mes versions de TEST (SABLOTRON 0.98).

Les Méthodes

Exemples

  1. Fichier XML de référence
  2. Exemple 1-1 Affichage simple (code PHP)
  3. Exemple 1-2 Affichage simple (feuille XSLT)
  4. Exemple 2-1 Ajout de quelques variables + TRI par date (code PHP)
  5. Exemple 2-2 Ajout de quelques variables + TRI par date (Feuille XSLT)
  6. Exemple 3-1 Formatage de la date - Affichage Jours,Mois en toutes lettres (code PHP)
  7. Exemple 3-2 Formatage de la date - Affichage Jours,Mois en toutes lettres (Feuille XSLT 1)
  8. Exemple 3-3 Formatage de la date - Affichage Jours,Mois en toutes lettres (Feuille XSLT 2)
  9. Exemple 4-1 Alternance des couleurs dans la liste (code PHP)
  10. Exemple 4-2 Alternance des couleurs dans la liste (feuille XSLT)

Exemple 3-2 Formatage de la date - Affichage Jours,Mois en toutes lettres (Feuille XSLT 1)

<?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="xml" version="1.0"  indent="yes" omit-xml-declaration="yes"
 media-type="text/html" />
 
 <!-- Inclusion de la template contenant les dates en toutes lettres -->
<xsl:include href="ex.XSLT.8.php.src"/>

<xsl:param name="limit"/>

<xsl:template match="/">

    <xsl:variable name="url" select="root/url"/>
    <xsl:variable name="language" select="root/language"/>
    <h1>
        <a href="{$url}" hreflang="{$language}">
            <xsl:value-of select="root/title"/>
        </a>
    </h1>
    <ul>
        <xsl:for-each select="root/item[ position() &lt;= $limit ]">
            <xsl:sort select="@date" data-type="text" order="ascending"/>
    
            <!-- Année -->
            <xsl:variable name="annee" select="substring-before(@date, '-')"/>
            <!-- variable temporaire -->
            <xsl:variable name="temp" select="substring-after(@date, '-')"/>
            <!-- Mois -->
            <xsl:variable name="mois" select="substring-before($temp, '-')"/>
            <!-- Jour -->
            <xsl:variable name="jour" select="substring-after($temp, '-')"/>
            <!-- Mois en toutes lettres -->
            <xsl:variable name="mois-lettres" select="$lesmois[@m=$mois]/@nom"/>
            <!-- 
            Jour en toutes lettres
            trouvé chez O'reilly
            -->
            <xsl:variable name="a" select="floor((14 - $mois) div 12)"/>
            <xsl:variable name="y" select="$annee - $a"/>
            <xsl:variable name="m" select="$mois + 12 * $a - 2"/>
            <xsl:variable name="jour-lettres" select="$lesjours[@j=($jour + $y + floor($y div 4) - floor($y div 100)
             + floor($y div 400) + floor((31 * $m) div 12)) mod 7]/@nom"/>
                <!-- Voila, on a tout, on recompose la chaine -->    
            <li>        
                <strong>
                    <xsl:value-of select="concat($jour-lettres,' ',$jour,' ',$mois-lettres,' ',$annee)"/>
                </strong>    
                <xsl:text>:::</xsl:text>
                <xsl:value-of select="text()"/>
            </li>
        </xsl:for-each>
    </ul>
</xsl:template>

</xsl:stylesheet>

Merci de ne pas suivre ce lien emails.

0.1376s | «»
PHP powered