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.
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.
Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
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>
La fonction qui permet l'affichage de l'url est celle-ci :
et pour que cette fonction soit prise en compte j'effectue ceci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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>"; }
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 .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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();
J'ai essayé de modifier cette partie sans résultat .
VOila je vous remerci d'avance pour vos répnses
Partager