Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > XML > XSL & XSLT
XSL & XSLT Forum d'entraide pour les extensions XSL et XSLT permettant de manipuler vos documents XML à l'aide de feuilles de style et de transformations avec PHP. Avant de poster -> tutoriels XSL et XSLT
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/10/2007, 14h10   #1
Invité régulier
 
Inscription : avril 2004
Messages : 41
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : avril 2004
Messages : 41
Points : 8
Points : 8
Par défaut [XSLT] Problème d'affichage php xsl

Bonjour à tous,

Mon problème est le suivant :
Dans xsl on peut faire appel à une fonction php à l'aide de la classe registerPhpFunctions, j'ai donc crée une fonction qui permet de générer une url qui triera les informations (croissant,décroissant).
La génération fonctionne très bien,le tri aussi.

Le soucis est l'affichage de cette url, qui ne s'affiche pas au bon endroit.
Code XML :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:php="http://php.net/xsl" version="1.0">
	<xsl:output method="html" encoding="iso-8859-1" indent="no"/>
	<!-- on recupere les parametres envoyes par le script php -->
	<xsl:param name="id1"/>
	<xsl:param name="id2"/>
	<xsl:param name="id3"/>
	<xsl:param name="id4"/>
	<xsl:template match="ROOT">
		<xsl:comment>ListeFournisseur.xsl</xsl:comment>
		<html>
			<head>
				<meta http-equiv="Pragma" content="no-cache"/>
				<meta http-equiv="Cache-Control" content="no-cache"/>
				<meta http-equiv="Expires" content="0"/>
				<title>Listes Fournisseurs</title>
				<link type="text/css" rel="stylesheet" href="css/generix.css"/>
			</head>
			<body class="liste">
				<table width="75%" class="liste" align="center">
					<tr>
//PROBLEME AFFICHAGE
						<th><xsl:apply-templates select="php:function('sorting',string($id1),string('NOMTIE'),string('ASC'))"/>Nom Tier<xsl:apply-templates select="php:function('sorting',string($id1),string('NOMTIE'),string('DESC'))"/></th>
						<th>Sigle tier</th>
						<th>Code Société</th>
						<th>Typtie</th>
						<th>Adresse</th>
					</tr>
					<xsl:apply-templates select="tier"/>
				</table>
			</body>
		</html>
	</xsl:template>
</xsl:stylesheet>
dans le code on voit bien que l'url doit être affichée dans le th du tableau mais ici ca l'affiche au début de la feuille html.Pour moi le problème n'est pas lié au code xsl mais au php.

La fonction qui permet l'affichage de l'url est celle-ci :
Code :
1
2
3
4
5
6
7
function sorting($url,$order,$ordtype)
	{
		if($ordtype== "ASC")
			print "<a href='$url?order=$order&type=$ordtype'><img src='img/tri_croissant.gif'/></a>";
		if($ordtype=="DESC")
			print "<a href='$url?order=$order&type=$ordtype'><img src='img/tri_decroissant.gif'/></a>";
	}
et pour que cette fonction soit prise en compte j'effectue ceci
Code :
1
2
3
4
5
6
7
8
9
10
11
$proc = new XsltProcessor();
	$proc->setParameter($namespace, 'id1', $url);
	$proc->setParameter($namespace, 'id2', $total_pages);
	$proc->setParameter($namespace, 'id3', $order);
	$proc->setParameter($namespace, 'id4', $ordtype);
	$proc->registerPhpFunctions();
	$xsl = new DomDocument();
	$xsl->load('xsl/ListeFournisseur.xsl');
	$xsl = $proc->importStylesheet($xsl);
	$newdom = $proc->transformToDoc($dom);
	print $newdom->saveXML();
Pour moi le problème est que la partie php s'effectue avant la transformation et donc ne prend pas en compte la feuille de style xsl et affiche l'url avant .
J'ai essayé de modifier cette partie sans résultat .

VOila je vous remerci d'avance pour vos répnses
grincheux01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/10/2007, 14h56   #2
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Retournez la valeur au lieu de l'imprimer :
Code :
1
2
3
4
5
6
7
function sorting($url,$order,$ordtype)
	{
		if($ordtype== "ASC")
			return "<a href='$url?order=$order&type=$ordtype'><img src='img/tri_croissant.gif'/></a>";
		if($ordtype=="DESC")
			return "<a href='$url?order=$order&type=$ordtype'><img src='img/tri_decroissant.gif'/></a>";
	}
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/10/2007, 15h11   #3
Invité régulier
 
Inscription : avril 2004
Messages : 41
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : avril 2004
Messages : 41
Points : 8
Points : 8
ok, je viens d'essayé cela ramene directement la chaine et ne fait plus le lien. Je me retrouve avec la chaine de caractere
grincheux01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/10/2007, 15h18   #4
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Et en rajoutant : disable-output-escaping="yes" à votre élément xsl:apply-templates (ça devrait être autre chose là - value-of, non ?).
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/10/2007, 15h28   #5
Invité régulier
 
Inscription : avril 2004
Messages : 41
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : avril 2004
Messages : 41
Points : 8
Points : 8
j'avais fait une autre methode avec un xsl:variable et fait ça à la main c'était un peu nul mais avec le disable-output-escaping="yes" tout fonctionne comme il faut merci bien
grincheux01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h43.


 
 
 
 
Partenaires

Hébergement Web