Page 1 sur 1

Utiliser XSLT

Posté : 17 avr. 2006, 15:14
par Tchouboudou
Bonjour tout le monde… J'ai testé quelques script de transformation avec XSLT. Seulement, je ne peut pas utiliser XSLT. Voilà, j'ai lu qu'il fallait décommenter la ligne php-xsl.dll dans php.ini. Sauf que je ne trouve pas cette ligne.

Pouvez-vous m'aider ?

Merci d'avance,
Tchouboudou

Posté : 17 avr. 2006, 23:57
par Cyrano
Cherche la ligne:
extension=php_xsl.dll
Si ton php.ini ressemble à peu près au mien, c'est aux alentours de la ligne 615.

Et n'oublie pas ensuite d'enregistrer le fichier et de redémarrer le serveur Apache.

Posté : 18 avr. 2006, 08:23
par Tchouboudou
Je la trouve pas… J'ai fait une rechercher dans mon document, je ne trouve pas php-xsl.dll.

Il faudrait que je télécharge libxml2, mais je sais pas ce qu'il faut faire une fois téléchargé…

Posté : 18 avr. 2006, 08:47
par Ultiny
Tu la rajoute :wink:

Posté : 18 avr. 2006, 08:51
par jeff
salut
tu a quelle version de php

Posté : 18 avr. 2006, 10:59
par Tchouboudou
J'ai la 5, je suis sous MAC (avec MAMP), j'ai vu dans le dossier Library/lib/ que j'avais plein de fichier libxml. J'ai rajouté la ligne donné par Cyrano, j'ai redémarrer Apache, et ça marche toujours pas…

Voici mes erreurs :

Warning: XSLTProcessor::importStylesheet() [function.importStylesheet]: compilation error: file /Applications/MAMP/bin/mamp/XML/Page.xsl line 3 element stylesheet in /Applications/MAMP/bin/mamp/XML/index.php on line 5

Warning: XSLTProcessor::importStylesheet() [function.importStylesheet]: xsltParseStylesheetProcess : document is not a stylesheet in /Applications/MAMP/bin/mamp/XML/index.php on line 5

Warning: XSLTProcessor::transformToXml() [function.transformToXml]: No stylesheet associated to this object in /Applications/MAMP/bin/mamp/XML/index.php on line 8

Posté : 18 avr. 2006, 11:01
par jeff
apparement tu a bien installer la lib
on peut ton code php et xsl

Posté : 18 avr. 2006, 11:30
par Tchouboudou
Index.php
<?php
$moteur = new xsltProcessor();
$style = new domDocument();
$style->load('Page.xsl');
$moteur->importStylesheet($style);
$source = new domDocument();
$source->load('KillBill.xml');
echo $moteur->transformToXml($source);
?>
Film.xsl

Code : Tout sélectionner

<?xml version="1.0" encoding="ISO_8859-1" ?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w2.org/1999/XSL/Transform"> <xsl:template match="Film"> <h1><i><xsl:value-of select="titre" /></i></h1> <xsl:value-of select="genre" /> <i><xsl:value-of select="code_pays" /></i> <xsl:value-of select="annee" />. Mis en scène par <b><xsl:value-of select="concat(Realisateur/@prenom, ' ', Realisateur/@nom)" /></b> <h3>Acteurs :</h3> <xsl:for-each select="Acteur"> <b><xsl:value-of select="concat(@prenom, ' ',@nom)" /><b> <xsl:value-of select="@nom_role" /><br /> </xsl:for-each> <h3>Résumé :</h3> <xsl:value-of select="resume" /> </xsl:template> </xsl:stylesheet>
Page.xsl

Code : Tout sélectionner

<?xml version="1.0" encoding="ISO-8859-1" ?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w2.org/1999/XSL/Transform"> <xsl:include href="Film.xsl" /> <xsl:output method="html" encoding="ISO-8859-1" /> <xsl:template match="/"> <html> <head> <title>Page produite avec XSLT</title> </head> <body> <center><h1>Résultat de la mise en forme XSLT</h1></center> Voici la liste des films, mis au format HTML <xsl:apply-templates /> </body> </html> </xsl:template> </xsl:stylesheet>

Posté : 18 avr. 2006, 12:17
par jeff
et comme ceci
$moteur = new xsltProcessor();

 domdocument::load('Page.xsl');
$moteur->importStylesheet(domdocument::load('Page.xsl'));
echo $moteur->transformToXml(domdocument::load('KillBill.xml')); 

Posté : 18 avr. 2006, 12:29
par Tchouboudou
Marche pas…

Posté : 20 avr. 2006, 00:07
par Hubert Roksor
Tu t'es planté de namespace, c'est www.w3.org. De plus, tu as mal fermé un tag <b>

Code : Tout sélectionner

<b><xsl:value-of select="concat(@prenom, ' ',@nom)" /></b>
À part ça, ça a l'air de marcher (je n'ai pas KillBill.xml donc difficile à dire).

Posté : 20 avr. 2006, 08:27
par Tchouboudou
Merci beaucoup, ça marche !!!