Bonjour,
je suis sur la fusion d'un document xml avec un fichie xsl que j'ai créé.
Le xml contient une liste de résultats que je dois mettre en forme.
Je débute en xsl et j'ai des soucis sur la structure du document. Je fais la fusion en php avec domxml. Mais mon code coince au niveau du xsl.
Les résultats devants être sur plusieurs pages j' enrichi mon flux xml afin d'y placer des infos pour la gestion des pages.
Une page de résultats type comporte:
- le nombre de résultats (templates xsl NBANS)
-l'affichage des résultats (templates xsl R)
- l'affichage des liens numéros de pages de résultats pour naviguer quand le nombre de résultat est supérieur à la limite de résultatpar page. (template gestion_pages)
Dans mon xsl, c'est ma template gestion_pages qui pose probleme.
Les appels à NBANS et R se font dans la template SERVICE (voir code ci-dessous).
Jusque la mon flux tml de sortie était correct.
A la suite dès que j'insere un <call-template name="gestion_pages"/>, dans mon flux xml, j'ai l'affichage du nombre de résultats qui disparait.
Voici le flux xml enrichi associé au xsl:
voici le xsl:
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 <HADESXML> <SERVICE num="1" name="ke"> <NBDOCS value="127"/> <NBANS value="10" start="1" end="10" NUMBER_OF_PAGES="2" CURRENT_PAGE="1"> <PAGE NUMBER="1"><![CDATA[http://localhost/test/result_xml.php?&numpage=1]]></PAGE> <PAGE NUMBER="2"><![CDATA[http://localhost/test/result_xml.php?&numpage=2]]></PAGE> </NBANS> <RT value="71" net="55" parse="16"/> <R num="0"> <TITLE>titre1</TITLE> <URL>www.google.com</URL> <RESUME>resume</RESUME> </R> <R num="1"> <TITLE>titre1</TITLE> <URL>www.google.com</URL> <RESUME>resume</RESUME> </R> <R num="2"> <TITLE>titre1</TITLE> <URL>www.google.com</URL> <RESUME>resume</RESUME> </R> <R num="3"> <TITLE>titre1</TITLE> <URL>www.google.com</URL> <RESUME>resume</RESUME> </R> <R num="4"> ... </R> ... <R num="5"> </R> </SERVICE> <SERVICE>blabla<SERVICE> </HADESXML>
Merci d'avance pour m'aider à résoudre ces problemes de structures dans mon fichier xsl.
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
100
101
102
103
104 <xsl:styl<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="html" encoding="ISO-8859-1" omit-xml-declaration="yes" indent="yes" /> <xsl:template match="/"> <xsl:apply-templates select="HADESXML" /> </xsl:template> <xsl:template match="HADESXML"> </xsl:template> <xsl:template match="HADESXML"> <xsl:apply-templates select="SERVICE[1]" /> </xsl:template> <xsl:template match="SERVICE"> <div> <xsl:apply-templates select="NBANS" /> <br /><br /> <xsl:apply-templates select="R" /> <br /><br /> <xsl:call-template name="gestion_pages"/> </div> </xsl:template> <xsl:template match="NBANS"> <div class="resultat"> <xsl:text> Il y a </xsl:text> <xsl:value-of select="@value" /> <xsl:text> résultat(s) correspondant(s) </xsl:text><br /><br /> <xsl:text> Documents </xsl:text> <xsl:value-of select="@start" /> <xsl:text> à </xsl:text> <xsl:value-of select="@end" /> <xsl:text> sur </xsl:text> <xsl:value-of select="@end" /> </div> </xsl:template> <xsl:template match="R"> <div class="moteur_resultat"> <a href="{URL}"><xsl:value-of select="@num +1" /><xsl:text disable-output-escaping="yes">&nbsp;-&nbsp;</xsl:text><xsl:value-ofselect="TITLE"/></a><br /> <xsl:value-of select="RESUME" /> <br /><br /> </div> <br /> </xsl:template> <xsl:template name="gestion_pages" match="NBANS"> <xsl:if test="NBANS/@NUMBER_OF_PAGES > 1"> <div id="navigation_page"> <xsl:if test="NBANS/@CURRENT_PAGE > 1"> <li><!-- <a><xsl:attribute name="target">_self</xsl:attribute> <xsl:attribute name="href"><xsl:value-of select="/HADESXML/NBANS/PAGE[/HADESXML/NBANS/@CURRENT_PAGE - 1]"/> </xsl:attribute>Page precedente</a> --> <span class="sep">|</span></li> </xsl:if> <xsl:for-each select="NBANS/PAGE"> <xsl:choose> <xsl:when test = "/HADESXML/NBANS/@CURRENT_PAGE = position()"><li class="sel"><xsl:value-of select="@NUMBER"/></li></xsl:when> <xsl:otherwise><li><a><xsl:attribute name="target">_self</xsl:attribute><xsl:attribute name="href"><xsl:value-of select="."/></xsl:attribute><xsl:value-of select="@NUMBER"/></a></li></xsl:otherwise> </xsl:choose> </xsl:for-each> <xsl:if test="NBANS/@CURRENT_PAGE != NBANS/@NUMBER_OF_PAGES"> <li><span class="sep">|</span> <!--<a><xsl:attribute name="target">_self</xsl:attribute> <xsl:attribute name="href"><xsl:value-of select="NBANS/PAGE[NBANS/@CURRENT_PAGE + 1]"/> </xsl:attribute>Page suivante</a>--> </li> </xsl:if> </div> </xsl:if> </xsl:template> </xsl:stylesheet>
Partager