prob de transformation d'un xml via php

prob de transformation d'un xml via php - XML/XSL - Programmation

Marsh Posté le 29-04-2005 à 14:20:06    

Bonjour,
 
je rencontre un problème bizarre lors d'un essai de transformation via php d'un xml en xsl.
Tout d'abord, voici mes trois fichiers:
 

Code :
  1. <?php
  2. require 'class.php'; // classe sablotron
  3. # Création de l'objet XS
  4. $XS = new xslt('ex1.xml','ex2.xsl',true,'sablotron');
  5. # Transformation
  6. $XS->transform();
  7. # Affichage du résultat
  8. echo $XS->output();
  9. ?>


 
le fichier "ex2.xsl"
 

Code :
  1. <?xml version="1.0"?>
  2. <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
  3. <xsl:template match="/">
  4. <html>
  5. <body>
  6. <table border="1" cellspacing="0" cellpadding="3">
  7. <tr bgcolor="#FFFF00">
  8. <td>Artiste</td>
  9. <td>Titre</td>
  10. </tr>
  11. <xsl:for-each select="compilation/mp3">
  12. <xsl:choose>
  13. <xsl:when test=".[artiste='Alain Souchon']">
  14. <tr bgcolor="#00FF00">
  15. <td><xsl:value-of
  16. select="titre"/></td>
  17. <td><xsl:value-of
  18. select="artiste"/></td>
  19. </tr>
  20. </xsl:when>
  21. <xsl:otherwise>
  22. <tr>
  23. <td><xsl:value-of select="titre"/></td>
  24. <td><xsl:value-of
  25. select="artiste"/></td>
  26. </tr>
  27. </xsl:otherwise>
  28. </xsl:choose>
  29. </xsl:for-each>
  30. </table>
  31. </body>
  32. </html>
  33. </xsl:template>
  34. </xsl:stylesheet>


 
le fichier "ex1.xml"
 

Code :
  1. <?xml version="1.0"?>
  2. <compilation>
  3. <mp3>
  4. <titre>Foule sentimentale</titre>
  5. <artiste>Alain Souchon</artiste>
  6. </mp3>
  7. <mp3>
  8. <titre>Solaar pleure</titre>
  9. <artiste>MC Solaar</artiste>
  10. </mp3>
  11. <mp3>
  12. <titre>Le baiser</titre>
  13. <artiste>Alain Souchon</artiste> </mp3>
  14. <mp3>
  15. <titre>Pourtant</titre>
  16. <artiste>Vanessa Paradis</artiste>
  17. </mp3>
  18. <mp3>
  19. <titre>Chambre avec vue</titre>
  20. <artiste>Henri Salvador</artiste>
  21. </mp3>
  22. </compilation>


 
Quand je teste la page en local, il affiche cette erreur:
 

Code :
  1. Error 3, Level 0
  2. msgtype : error
  3. code : 4
  4. module : Sablotron
  5. URI : arg:/_xsl
  6. line : 22
  7. msg : cannot open file 'C:/APACHE/Apache2/ex1.xml'


 
 
J'utilise php 4.3.10.10, j'ai activé l'extention php_xslt et php_domxml, et j'ai copié les dll expat, inconv et sablot là où il le faut.
Avez-vous une idée du problème que je rencontre, et de sa  
solution .
 
Merci beaucoup,


Message édité par kebab4 le 29-04-2005 à 14:21:08
Reply

Marsh Posté le 29-04-2005 à 14:20:06   

Reply

Marsh Posté le 29-04-2005 à 14:27:29    

Sinon v'la la version domxml  

$xml_doc = domxml_open_file('pouet.xml');
$xsl_doc = domxml_xslt_stylesheet_file('pouet.xsl');
 
$res = $xsl_doc->process($xml_doc);
 
echo $res->dump_mem(true, 'utf-8');

Reply

Marsh Posté le 29-04-2005 à 16:01:54    

si j'ai utilise domxml ça marche, mais dans mon cas je vous passer en parametre du constructeur de la classe sablotroon la chaine de caractere qui contient le contenu du fichier xml et pas le chemin du fichier xml car a chaque fois je change le fichier xml suivant certains  créteres et aussi les enregistrment recherchés par l'utilisateur et avec domxml_open_file()je ne peut pas passer le contenu du xml a cette fonction. c est pour ca que je préfère la premiér methode sablotron.

Reply

Marsh Posté le 29-04-2005 à 16:14:21    

Ah ben tu peux utiliser alors la fonction domxml_open_mem :

$xml_doc = domxml_open_mem('<?xml version......');


Et continuer pareil qu'avant.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed