Bonjour.
J'apprends actuellement le xsl, et je rencontre un problème bizarre lors d'un essai de transformation via php.
Tout d'abord, voici mes trois fichiers:
Le fichier xml, xmldoc.xml:
Le fichier xsl, styles.xsl:
Et le fichier php, exemple.php:
Le but étant donc, tout d'abord, d'afficher tous les albums (la finalité du script étant au final de pouvoir choisir l'album voulu via une liste, qui enverra au xsl le numéro d'ordre de la balise album voulue.
Seulement voilà, j'ai un problème.
Quand je teste la page en local, il affiche cette erreur:
et quand je l'affiche sur mon hébergeur web, ça marche (sauf que la fonction xslt_set_enconding, elle ne marche pas...).
Mais moi j'aimerai que ça marche en local, histoire de pouvoir faire autant de test que je veux pour arriver au résultat (et aussi pour pouvoir coder hors-ligne).
J'utilise Wamp Server, avec php 4.3.11, 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.
Modifié par Lisarael (07 Apr 2005 - 11:09)
J'apprends actuellement le xsl, et je rencontre un problème bizarre lors d'un essai de transformation via php.
Tout d'abord, voici mes trois fichiers:
Le fichier xml, xmldoc.xml:
<?xml version="1.0" encoding="ISO-8859-1"?>
<musique>
<album annee="2003">
<auteur src="http://www.brandnewrock.com">Brand new</auteur>
<titre>Deja Entendu</titre>
</album>
<album annee="2004">
<auteur src="http://www.carajo.com.ar">Carajo</auteur>
<titre>Atrapasuños</titre>
</album>
<album annee="2000">
<auteur src="http://www.gorillaz.com">Gorillaz</auteur>
<titre>Gorillaz</titre>
</album>
<album annee="2003">
<auteur src="http://www.yellowcardrock.com">Yellowcard</auteur>
<titre>Ocean avenue</titre>
</album>
</musique>
Le fichier xsl, styles.xsl:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="//album">
<h3>
<xsl:value-of select="./auteur" />
</h3>
<h4>
<xsl:value-of select="./titre" />
<xsl:if test="@annee">
(<xsl:value-of select="@annee" />)
</xsl:if>
</h4>
<p><a href="{./auteur/@src}">Site officiel</a> de <xsl:value-of select="./auteur" />.</p>
<hr />
</xsl:template>
</xsl:stylesheet>
Et le fichier php, exemple.php:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3c.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<title>testing xml</title>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"/>
<meta http-equiv="content-style-type" content="text/css"/>
</head>
<body>
<h1>Testing xml/xsl with php</h1>
<h2>Mon album choisi:</h2>
<div id="album-zone">
<?php
// création du processeur Xsl
$xslProc = xslt_create();
// chargement, transformation et affichage du document xml
$transformedXml = xslt_process($xslProc, "./xmldoc.xml", "./styles.xsl", NULL);
if (empty($transformedXml)) {
die('Erreur d\'analyse XSLT : '. xslt_error($xslProc));
}
//affichage
print($transformedXml);
?>
</div>
</body>
</html>
Le but étant donc, tout d'abord, d'afficher tous les albums (la finalité du script étant au final de pouvoir choisir l'album voulu via une liste, qui enverra au xsl le numéro d'ordre de la balise album voulue.
Seulement voilà, j'ai un problème.
Quand je teste la page en local, il affiche cette erreur:
a écrit :
Warning: Sablotron error on line none: cannot open file 'c:/wamp/apache/styles.xsl' in e:\wamp local server folder\xml test php 4\exemple.php on line 20
Erreur d'analyse XSLT : cannot open file 'c:/wamp/apache/styles.xsl'
et quand je l'affiche sur mon hébergeur web, ça marche (sauf que la fonction xslt_set_enconding, elle ne marche pas...).
Mais moi j'aimerai que ça marche en local, histoire de pouvoir faire autant de test que je veux pour arriver au résultat (et aussi pour pouvoir coder hors-ligne).
J'utilise Wamp Server, avec php 4.3.11, 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.
Modifié par Lisarael (07 Apr 2005 - 11:09)