[xml-xsl] Probleme de structure de fichier xsl

Probleme de structure de fichier xsl [xml-xsl] - XML/XSL - Programmation

Marsh Posté le 16-07-2006 à 16:31:18    

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:
 

Code :
  1. <HADESXML>
  2. <SERVICE num="1" name="ke">
  3.     <NBDOCS value="127"/>
  4. <NBANS value="10" start="1" end="10" NUMBER_OF_PAGES="2" CURRENT_PAGE="1">
  5.  <PAGE NUMBER="1"><![CDATA[http://localhost/test/result_xml.php?&numpage=1]]></PAGE>
  6.  <PAGE NUMBER="2"><![CDATA[http://localhost/test/result_xml.php?&numpage=2]]></PAGE>
  7. </NBANS>
  8. <RT value="71" net="55" parse="16"/>
  9.      <R num="0">
  10.  <TITLE>titre1</TITLE>
  11.  <URL>www.google.com</URL>
  12.  <RESUME>resume</RESUME>
  13. </R>
  14.         <R num="1">
  15.  <TITLE>titre1</TITLE>
  16.  <URL>www.google.com</URL>
  17.  <RESUME>resume</RESUME>
  18.         </R>
  19.         <R num="2">
  20.    <TITLE>titre1</TITLE>
  21.  <URL>www.google.com</URL>
  22.  <RESUME>resume</RESUME>
  23.         </R>
  24.         <R num="3">
  25.  <TITLE>titre1</TITLE>
  26.  <URL>www.google.com</URL>
  27.  <RESUME>resume</RESUME>
  28. </R>
  29.      <R num="4">
  30. ...
  31. </R>
  32. ...
  33. <R num="5">
  34. </R>
  35. </SERVICE>
  36. <SERVICE>blabla<SERVICE>
  37. </HADESXML>


 
voici le xsl:

Code :
  1. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  2. <xsl:output method="html" encoding="ISO-8859-1" omit-xml-declaration="yes" indent="yes" />
  3. <xsl:template match="/">
  4.    
  5.     <xsl:apply-templates select="HADESXML" />
  6.    
  7. </xsl:template>
  8. <xsl:template match="HADESXML">
  9. </xsl:template>
  10. <xsl:template match="HADESXML">
  11.     <xsl:apply-templates select="SERVICE[1]" />   
  12. </xsl:template>
  13. <xsl:template match="SERVICE">
  14.    <div>
  15.     <xsl:apply-templates select="NBANS" />
  16.     <br /><br />
  17.     <xsl:apply-templates select="R" />
  18. <br /><br />
  19. <xsl:call-template name="gestion_pages"/>
  20. </div>
  21. </xsl:template>
  22. <xsl:template match="NBANS">
  23.     <div class="resultat">
  24.     <xsl:text> Il y a </xsl:text>
  25.     <xsl:value-of select="@value" />
  26.     <xsl:text> résultat(s) correspondant(s) </xsl:text><br /><br />
  27.     <xsl:text> Documents </xsl:text>
  28.     <xsl:value-of select="@start" />
  29.     <xsl:text> à </xsl:text>
  30.     <xsl:value-of select="@end" />
  31.     <xsl:text> sur </xsl:text>
  32.     <xsl:value-of select="@end" />
  33.     </div>
  34.    
  35. </xsl:template>
  36. <xsl:template match="R">
  37.     <div class="moteur_resultat">
  38.     <a href="{URL}"><xsl:value-of select="@num +1" /><xsl:text
  39. disable-output-escaping="yes">&amp;nbsp;-&amp;nbsp;</xsl:text><xsl:value-ofselect="TITLE"/></a><br />
  40.     <xsl:value-of select="RESUME" />
  41.     <br /><br />
  42.     </div>
  43.     <br />
  44. </xsl:template>
  45. <xsl:template name="gestion_pages" match="NBANS">
  46. <xsl:if test="NBANS/@NUMBER_OF_PAGES > 1">
  47.   <div id="navigation_page">
  48.  
  49.       <xsl:if test="NBANS/@CURRENT_PAGE > 1">
  50.      
  51.       <li><!--
  52.       <a><xsl:attribute name="target">_self</xsl:attribute>
  53.       <xsl:attribute name="href"><xsl:value-of select="/HADESXML/NBANS/PAGE[/HADESXML/NBANS/@CURRENT_PAGE -
  54. 1]"/>
  55.       </xsl:attribute>Page precedente</a>
  56.       -->
  57.       <span class="sep">|</span></li>
  58.      
  59.       </xsl:if>
  60.  
  61.       <xsl:for-each select="NBANS/PAGE">
  62.   
  63.           <xsl:choose>
  64.      <xsl:when test = "/HADESXML/NBANS/@CURRENT_PAGE = position()"><li
  65. class="sel"><xsl:value-of select="@NUMBER"/></li></xsl:when>
  66.      <xsl:otherwise><li><a><xsl:attribute name="target">_self</xsl:attribute><xsl:attribute
  67. name="href"><xsl:value-of select="."/></xsl:attribute><xsl:value-of
  68. select="@NUMBER"/></a></li></xsl:otherwise>
  69.    </xsl:choose>
  70.        
  71.   </xsl:for-each>
  72.  
  73.     <xsl:if test="NBANS/@CURRENT_PAGE != NBANS/@NUMBER_OF_PAGES">
  74.    
  75.     <li><span class="sep">|</span>
  76.     <!--<a><xsl:attribute name="target">_self</xsl:attribute>
  77.     <xsl:attribute name="href"><xsl:value-of select="NBANS/PAGE[NBANS/@CURRENT_PAGE + 1]"/>
  78.     </xsl:attribute>Page suivante</a>-->
  79.     </li>
  80.  
  81.     </xsl:if>   
  82.   </div>
  83. </xsl:if>
  84. </xsl:template>
  85. </xsl:stylesheet>


 
Merci d'avance pour m'aider à résoudre ces problemes de structures dans mon fichier xsl.

Reply

Marsh Posté le 16-07-2006 à 16:31:18   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed