<?php
///////////////////////////////////////////////////////////////////////////
// Génération du fichier XML !
///////////////////////////////////////////////////////////////////////////
// Requete
$sqlxml = " SELECT * FROM produits WHERE nouvproch=1 ORDER BY id DESC LIMIT 0,10 ";
// Execute la requete
$resultxml = mysql_query($sqlxml) or die('Erreur SQL : <br />'.$sqlxml);
$nbresultxml = mysql_num_rows($resultxml);
if ($nbresultxml != 0) {
$file= fopen("xml/nouveaute.xml", "w");
$_xml ="<?xml version=\"1.0\" encoding=\"iso-8859-1\" ?>\r\n";
$_xml .="<?xml:stylesheet type=\"text/xsl\" href=\"formatage_xml.xsl\" ?>\r\n";
$_xml .="<!DOCTYPE LISTPROD SYSTEM \"docdtd.dtd\">\r\n\n";
$_xml .="<LISTPROD>\r\n";
$_xml .="\t\t<TYPEXML>[ | Flux XML | Nouveauté ]</TYPEXML>\r\n";
while ($dataxml = mysql_fetch_array($resultxml)) {
// formatage du descriptif
$remplace = array("<br>","_");
$par = array(""," ");
$nvdesc = str_replace($remplace,$par,substr($dataxml["descriptif"],0,420)).'...[...]';
$nvnomcat = ucwords(str_replace($remplace,$par,$dataxml["cat"]));
if ($dataxml["id"]) {
$_xml .="\t\t<PRODUIT>\r\n";
$_xml .="\t\t<ID>".$dataxml["id"]."</ID>\r\n";
$_xml .="\t\t<FAMILLE>".$dataxml["famille"]."</FAMILLE>\r\n";
$_xml .="\t\t<LIENFAMILLE>".urlencode($dataxml["famille"])."</LIENFAMILLE>\r\n";
$_xml .="\t\t<CATEGORIE>".$nvnomcat."</CATEGORIE>\r\n";
$_xml .="\t\t<LIENCATEGORIE>".$dataxml["cat"]."</LIENCATEGORIE>\r\n";
$_xml .="\t\t<SOUSCATEGORIE>".$dataxml["souscat"]."</SOUSCATEGORIE>\r\n";
$_xml .="\t\t<LIENSOUSCATEGORIE>".urlencode($dataxml["souscat"])."</LIENSOUSCATEGORIE>\r\n";
$_xml .="\t\t<REFERENCE>".$dataxml["ref"]."</REFERENCE>\r\n";
$_xml .="\t\t<ACCROCHE>".$dataxml["titre"]."</ACCROCHE>\r\n";
$_xml .="\t\t<DESCRIPTIF>".htmlspecialchars($nvdesc, ENT_NOQUOTES)."\n</DESCRIPTIF>\r\n";
$_xml .="\t\t<NOMBREVU>".$dataxml["nbrvu"]."</NOMBREVU> ";
$_xml .="\t\t<LIEN>".$dataxml["www"]."</LIEN> ";
$_xml .="\t\t<MARQUE>".$dataxml["marque"]."</MARQUE>\r\n";
$_xml .="\t\t<PHOTO>".$dataxml["visuel"]."</PHOTO>\r\n";
$_xml .="\t\t<ZOOM>".$dataxml["zoom"]."</ZOOM>\r\n";
$_xml .="\t\t</PRODUIT>\r\n";
} else {
$_xml .="\t<ID title=\"Plus rien dans la base\">\r\n";
$_xml .="\t\t<REFERENCE>Aucune</REFERENCE>\r\n";
$_xml .="\t</ID>\r\n";
}
}
$_xml .="</LISTPROD>";
fwrite($file, $_xml);
fclose($file);
echo "<br><br><a href=\"xml/nouveaute_nemo.xml\" target=\"_blank\"><img src=\"http://www./v2/pics/rss1.gif\" border=\"0\"></a>";
}
else {
echo "no XML";
}
?>
<?xml version="1.0" encoding="iso-8859-1" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output encoding="iso-8859-1" method="html"/>
<xsl:template match="/">
<html>
<head>
<xsl:for-each select="LISTPROD/PRODUIT">
<title>
<xsl:value-of select="TYPEXML"/>
</title>
</xsl:for-each>
<!--OFFLINE-->
<style media="all" type="text/css">
@import url(../css/nemostyle.css);
</style>
</head>
<body bgcolor="#333333" background="pics/bg_xml.gif" bgproperties="fixed">
<table align="center" width="100%">
<tr>
<td align="center" valign="top">
<div class="frame">
<div class="content">
<font size="+1"><b>
</b></font>
</div>
<xsl:value-of select="REFERENCE"/>
<br/>
<br/>
<!--On fait une boucle pr lister le fichier XML-->
<xsl:for-each select="LISTPROD/PRODUIT">
<div class="content">
<a>
<xsl:attribute name="href">
http://www.nemo-fr.com/v2/index.php?rubrique=ficheproduit&id=<xsl:value-of select="ID"/>
</xsl:attribute>
<xsl:attribute name="target">
_blank
</xsl:attribute>
<img class="imgxml">
<xsl:attribute name="src">
/produit/mini/<xsl:value-of select="PHOTO"/>
</xsl:attribute>
<xsl:attribute name="title">
<xsl:value-of select="REFERENCE"/> | Cliquez pour le Détail
</xsl:attribute>
<xsl:attribute name="border">
0
</xsl:attribute>
</img>
</a>
<b>
<xsl:value-of select="MARQUE"/> | <xsl:value-of select="CATEGORIE"/> | <xsl:value-of select="REFERENCE"/>
</b>
<br/>
<xsl:value-of select="DESCRIPTIF"/>
<span>
<br/>
<a>
<xsl:attribute name="href">
http://www.nemo-fr.com/v2/index.php?rubrique=ficheproduit&id=<xsl:value-of select="ID"/>
</xsl:attribute>
<xsl:attribute name="target">
_blank
</xsl:attribute>
<img src="http://www.nemo-fr.com/v2/pics/puce.gif" border="0"></img> Voir sur Nemo-Fr.com
</a>
</span>
<br/><br/>
</div>
<!--Fin de la boucle-->
</xsl:for-each>
</div>
</td></tr></table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
[/php]Code : Tout sélectionner
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output encoding="iso-8859-1" indent="yes" method="xml" omit-xml-declaration="yes"
doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
<xsl:param name="titre"/>
<xsl:template match="/">
<html>
<head>
<title>
<xsl:value-of select="$titre"/>
</title>
</head>
<body>
<!-- -->
</body>
</html>
</xsl:template>
</xsl:stylesheet><?php
$titre = "mon titre - ou tout ce que tu veux";
/* load the xml file and stylesheet as domdocuments */
$xsl = new DomDocument();
$xsl->load('doc.xsl');
$inputdom = new DomDocument();
$inputdom->load('doc.xml');
/* create the processor and import the stylesheet */
$proc = new XsltProcessor();
$xsl = $proc->importStylesheet($xsl);
$proc->setParameter(null, "titre", $titre);
/* transform the xml document */
$newdom = $proc->transformToXml($inputdom);
/* eval and output the xml */
$newdom = eval("?".chr(62).$newdom.chr(60)."?");
?>
Le "eval" en fin de code permet de faire évaluer le document xml généré comme si c'était du php : en effet, je place du code php dans mon document xsl. Ce qui me permet, par exemple, de faire un "include".Code : Tout sélectionner
<head>
<title>
<xsl:value-of select="LISTPROD/PRODUIT[1]/TYPEXML"/>
</title>
</head>Heu.....Nos messages ont du se croiser un peu.
Tu n'as pas besoin de mettre une boucle for-each pour générer le titre. Si celui-ci est le même dans chaque "PRODUIT", tu peux écrire ceci :
Tu prends alors le contenu du noeud "TYPEXML" du premier noeud "PRODUIT"Code : Tout sélectionner
<head> <title> <xsl:value-of select="LISTPROD/PRODUIT[1]/TYPEXML"/> </title> </head>
<edit>
Si tu as plusieurs "PRODUIT", ton code va produire autant de "titre" que de "PRODUIT"
J'ai quelques problème avec tes codes : pourrais-tu poster le code xml généré par ton php et pas le code php.
Ce sera plus facile pour moi de corriger le xsl.
</edit>
Code : Tout sélectionner
<?xml version="1.0" encoding="iso-8859-1" ?>
<?xml:stylesheet type="text/xsl" href="formatage_xml.xsl" ?>
<LISTPROD>
<TYPEXML>[| Flux XML | Nouveauté ]</TYPEXML>
<PRODUIT>
<ID>1544</ID>
<FAMILLE>logiciels</FAMILLE>
<LIENFAMILLE>logiciels</LIENFAMILLE>
<CATEGORIE>Antivirus</CATEGORIE>
<LIENCATEGORIE>antivirus</LIENCATEGORIE>
<SOUSCATEGORIE>Logiciels (Antivirus)</SOUSCATEGORIE>
<LIENSOUSCATEGORIE>Logiciels+%28Antivirus%29</LIENSOUSCATEGORIE>
<REFERENCE>BITDEFENDER 9 Standard</REFERENCE>
<ACCROCHE>Le BitDefender Nouveau arrive ! [Sortie le 16 Août]</ACCROCHE>
<DESCRIPTIF>EFFICACITE !
100% de détection et de désinfection, pour éradiquer tous les codes malveillants en circulation, quelque soit la voie d'accès, y compris via les échanges P2P.
REACTIVITE !
Mises à jour automatiques et gratuites, toutes les heures, pendant 1 ANS, de la base virale ET du moteur.
INCLUS : Assistance technique par téléphone, email et chat online 7j/7 - 24h/24.
NOUVELLES FONCTIONNALITES !
Technologi...[...]
</DESCRIPTIF>
<NOMBREVU>9</NOMBREVU> <LIEN>http://www.editions-profil.fr/</LIEN> <MARQUE>Editions Profil</MARQUE>
<PHOTO>BitDefenderStd9.jpg</PHOTO>
<ZOOM>BitDefenderStd9.jpg</ZOOM>
</PRODUIT>
Code : Tout sélectionner
<head>
<title>
<xsl:value-of select="LISTPROD/TYPEXML"/>
</title>
<!--OFFLINE-->
<style media="all" type="text/css"> @import url(../css/nemostyle.css); </style>
</head>Code : Tout sélectionner
<?xml:stylesheet type="text/xsl" href="formatage_xml.xsl" ?"A la bonne heure" comme l'aurais dis feu mon grand-père.Ce n'etait pas:
<xsl:value-of select="LISTPROD/PRODUIT/TYPEXML"/>
Mais:
<xsl:value-of select="LISTPROD/TYPEXML"/>
Héhé![]()
Ainsi je peux me servir de chaque noeud xml comme ça? c ça?
Regarde mon premier post dans ce fil.Alors où la déclare tu?
$inputdom->load('doc.xml');
par
$inputdom->loadXML($xml);
$xsl->load('doc.xsl');
est le chemin vers ton document xsl.