Bonjour,
je suis novice dans le XSL , j'ai réaliser un code XSL qui me transforme des donnée xml ( 2000 personne avec leurs noms et prenoms ect ... )
la template que j'ai realiser permet d'afficher les donnée dans un tableau html , mon probleme reste dans la pagination puisque j'ai beaucoup de personnes a afficher
donc je veux savoir comment je peux faire la pagination sure ma page
vois le code du XSL qui m'affiche parfaitement le tableau html :
j'ai trouvé quelques code de pagination seulement je sais pas comment integrer le mien voici le lien
Code : 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 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html" indent="no" encoding="ISO-8859-1"/> <xsl:template match="/"> <xsl:apply-templates select="annuaire"/> </xsl:template> <xsl:template match="annuaire"> <html><head><title>Annuaire</title> </head><body><h1>Annuaire</h1> <xsl:value-of select="count(personne)"/> personnes dans l'annuaire. <table border="1"><tr bgcolor="#C0C0C0"> <th>ID</th> <th>Nom</th> <th>Specialite</th> <th>Adresse</th></tr> <xsl:apply-templates select="personne"/> </table> </body> </html> </xsl:template>
Code : 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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99 <!-- Définition du nom du template --> <xsl:template name="boucle"> <!-- Les paramètres --> <xsl:param name="pageToShow"/><!-- Page à afficher --> <xsl:param name="currentPage"/><!-- Page en cours --> <xsl:param name="max"/><!-- Nombre total de pages --> <xsl:param name="windowSize"/><!-- Nombre de pages à afficher avant / après --> <xsl:param name="displayLeftDots"/><!-- Est-ce que les '...' ont déjà été affichés à gauche ou pas --> <xsl:param name="displayRightDots"/><!-- Est-ce que les '...' ont déjà été affichés à droite ou pas --> <!-- On test si on dois afficher le numéro de la page ou pas --> <!-- Et on stock le résultat (true / false) dans notre variable --> <xsl:variable name="displayCondition"> <xsl:value-of select="$pageToShow < $windowSize or $pageToShow > $currentPage - $windowSize and $pageToShow < $currentPage+$windowSize or $pageToShow > $max - ($windowSize - 1)"/> </xsl:variable> <!-- Si on doit afficher le numéro de la page --> <xsl:if test="$displayCondition='true'"> <xsl:choose> <!-- Si la page à afficher est la page en cours, on peux lui mettre un style different .. --> <xsl:when test="$pageToShow = $currentPage"> <a href="javascript:void(0)" onclick="moveTo({$pageToShow});return false;" class="selected"> <span><xsl:value-of select="$pageToShow"/></span> </a> </xsl:when> <!-- Sinon on l'affiche simplement --> <xsl:otherwise> <a href="javascript:void(0)" onclick="moveTo({$pageToShow});return false;"> <span><xsl:value-of select="$pageToShow"/></span> </a> </xsl:otherwise> </xsl:choose> </xsl:if> <!-- On créé une variable qui va nous dire si il faut afficher les points à gauche ou pas --> <xsl:variable name="leftDotsOn"> <!-- Si nous n'avons pas affiché le numéro de la page --> <xsl:if test="$displayCondition='false'"> <!-- Si la page à afficher est avant la page en cours, alors on dit d'afficher les points à gauche --> <xsl:if test="$pageToShow < $currentPage"> <xsl:value-of select="not($displayLeftDots='false')"/> </xsl:if> <!-- Si la page à afficher n'est pas avant la page en cours, on dit de ne pas afficher les points à gauche --> <xsl:if test="not($pageToShow < $currentPage)">false</xsl:if> </xsl:if> <!-- Si on a affiché le numéro de la page, on n'affiche pas les points à gauche --> <xsl:if test="$displayCondition='true'">false</xsl:if> </xsl:variable> <!-- On créé une variable qui va nous dire si il faut afficher les points à droite ou pas --> <xsl:variable name="rightDotsOn"> <!-- Si nous n'avons pas affiché le numéro de la page --> <xsl:if test="$displayCondition='false'"> <!-- Si la page à afficher est après la page en cours, alors on dit d'afficher les points à droite --> <xsl:if test="$pageToShow > $currentPage"> <xsl:value-of select="not($displayRightDots='false')"/> </xsl:if> <!-- Si la page à afficher n'est pas après la page en cours, on dit de ne pas afficher les points à droite --> <xsl:if test="not($pageToShow > $currentPage)">false</xsl:if> </xsl:if> <!-- Si on a affiché le numéro de la page, on n'affiche pas les points à droite --> <xsl:if test="$displayCondition='true'">false</xsl:if> </xsl:variable> <!-- Si on doit afficher les points, à gauche ou à droite --> <xsl:if test="$leftDotsOn='true' or $rightDotsOn='true'"> <a href="javascript:void(0)"><span>...</span></a> </xsl:if> <!-- Si la page à afficher est plus petite que le nombre total de pages --> <xsl:if test="number($pageToShow) < number($max)"> <!-- On appel à nouveau le template, en incrémentant la valeur de $pageToShow --> <!-- Pour afficher la page suivante --> <xsl:call-template name="boucle"> <xsl:with-param name="pageToShow" select="$pageToShow + 1"/> <xsl:with-param name="max" select="$max"/> <xsl:with-param name="currentPage" select="$currentPage"/> <xsl:with-param name="windowSize" select="$windowSize"/> <!-- Cette fois on lui passe en valeur le résultat de $leftDotsOn et $rightDotsOn --> <!-- Si ils sont à true, on a déjà affiché les points, et on ne les veux plus --> <xsl:with-param name="displayLeftDots" select="$displayLeftDots='true' or $leftDotsOn='true'"/> <xsl:with-param name="displayRightDots" select="$displayRightDots='true' or $rightDotsOn='true'"/> </xsl:call-template> </xsl:if> </xsl:template>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <xsl:call-template name="boucle"> <xsl:with-param name="pageToShow">1</xsl:with-param> <xsl:with-param name="currentPage" select="$pageNum"/> <xsl:with-param name="max" select="$pageCount"/> <xsl:with-param name="windowSize" select="$windowSize"/> <xsl:with-param name="displayLeftDots" select="false"/> <xsl:with-param name="displayRightDots" select="false"/> </xsl:call-template>
Partager