probleme de resultat retourné par une variable

probleme de resultat retourné par une variable - XML/XSL - Programmation

Marsh Posté le 09-08-2006 à 21:28:59    

Bonsoir tous le monde
 
Voici le fichier XML  

Code :
  1. Code :
  2. <?xml version="1.0" encoding='ISO-8859-1'?>
  3. <?xml-stylesheet type="text/xsl" href="Devellopez.xsl"?>
  4. <LISTE-A><A>
  5. <NUM>20-10</NUM>
  6. <C>    <ANI>non</ANI> </C>
  7. <S><SIT>
  8.        <DEP>Aaaa</DEP>
  9.        <COM>BB</COM>
  10.    </SIT> </S>
  11. </A>
  12. <A> <NUM>20-11</NUM>
  13. <C>    <ANI>oui</ANI> </C>
  14. <S><SIT>
  15.        <DEP>Abbb</DEP>
  16.        <COM>BB</COM>
  17.    </SIT> </S>
  18. </A>
  19. <A> <NUM>20-12</NUM>
  20. <C>  <ANI>oui</ANI> </C>
  21. <S><SIT>
  22.        <DEP>Aaaa</DEP>
  23.        <COM>BB</COM>
  24.    </SIT> </S>
  25. </A>
  26. </LISTE-A>


 
le fichier XSL est le suivant  

Code :
  1. Code :
  2. <?xml version="1.0" encoding="iso-8859-1" ?>
  3. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  4. <xsl:output method="html" media-type="text/html; charset=ISO-8859-1" version="4.0"/>
  5.  
  6. <xsl:template match="/">
  7. <html>
  8.   <body>
  9.     <table border="0" width="*" >
  10.  <tr><th>Nombre noeud</th>
  11.      <th>Numero du A</th>
  12.  </tr>
  13.  <xsl:call-template name="doc">
  14.   <xsl:with-param name="requete" select="document('requete.xml')/requete"/>
  15.  </xsl:call-template>
  16.      </table>
  17.   </body>
  18. </html>
  19.     </xsl:template>
  20. <xsl:template name ="doc"  match="LISTE-A">
  21. <xsl:param name="requete"/>
  22.  <xsl:for-each select="//A">
  23.   <xsl:choose>
  24.           <xsl:when test=".//DEP = $requete/DEP and .//ANI= $requete/ANI">
  25.          <tr><td><xsl:variable name="num">
  26.             <xsl:number level="any" from="LISTE-A"/>
  27.            </xsl:variable>
  28.             <xsl:value-of select="$num"/> </td>
  29.   <td><font color="#FF8040">  <xsl:value-of select="NUMERO"/></font></td>
  30.        <td><font color="#FF8040"> dep</font></td>
  31.   <td><font color="blue">ani</font></td></tr>
  32.     </xsl:when>
  33.   </xsl:choose>
  34. </xsl:for-each>
  35. </xsl:template></xsl:stylesheet>


Je recoit le resultat CORRECT SUIVANT :)  
 
Nombre noeud Numero du A
2 20-11 dep ani
 
LE PROBLEME COMMENCE lorsque je change l'instruction <xsl:when test=".//DEP = $requete/DEP and .//ANI= $requete/ANI"> PAR une variable et je met cette instruction dans le fichier suivant test.xml

Code :
  1. Code :
  2. <?xml version="1.0" encoding='ISO-8859-1'?>
  3. <test1>
  4. <cle>.//DEP = $requete/DEP and .//ANI= $requete/ANI </cle>
  5. </test1>


 
DANS ce cas je cahnge le fichier XSL par le code suivant  

Code :
  1. Code :
  2. <?xml version="1.0" encoding="iso-8859-1" ?>
  3. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  4. <xsl:output method="html" media-type="text/html; charset=ISO-8859-1" version="4.0"/>
  5.  
  6. <xsl:template match="/">
  7. <html>
  8.   <body>
  9.     <table border="0" width="*" >
  10.  <tr><th>Nombre noeud</th>
  11.      <th>Numero du A</th>
  12.  </tr>
  13.  <xsl:call-template name="doc">
  14.   <xsl:with-param name="requete" select="document('requete.xml')/requete"/>
  15.   <xsl:with-param name="varReq1" select="document('test.xml')/test1/cle[1]"/>
  16.  </xsl:call-template>
  17.      </table>
  18.   </body>
  19. </html>
  20.     </xsl:template>
  21. <xsl:template name ="doc"  match="LISTE-A">
  22. <xsl:param name="requete"/>
  23.  <xsl:param name="varReq1"/>
  24. <xsl:value-of select="$varReq1"/>
  25.  <xsl:for-each select="//A">
  26.   <xsl:choose>
  27.           <xsl:when test="$varReq1">
  28.          <tr><td><xsl:variable name="num">
  29.              <xsl:number level="any" from="LISTE-A"/>
  30.            </xsl:variable>
  31.             <xsl:value-of select="$num"/>
  32.         </td>
  33.   <td><font color="#FF8040">  <xsl:value-of select="NUMERO"/></font></td>
  34.        <td><font color="#FF8040"> dep</font></td>
  35.   <td><font color="blue">ani</font></td></tr>
  36.     </xsl:when>
  37.   </xsl:choose>
  38. </xsl:for-each>
  39. </xsl:template>
  40. </xsl:stylesheet>


 resultat Non ATTENDU
 
Nombre noeud Numero du A  
1 20-10 dep ani
2 20-11 dep ani
3 20-12 dep ani
ce que j’attend qu’il m’affiche le meme resultat que celle du precedent pourrier vous me dire pq ?
MALGRE il affiche le contenu du fichier test.xml suite à l'instruction suivante

Code :
  1. Code :
  2. <xsl:value-of select="$varReq1"/>


 
Merci d'avance


Message édité par coucouA le 10-08-2006 à 08:24:37
Reply

Marsh Posté le 09-08-2006 à 21:28:59   

Reply

Marsh Posté le 11-08-2006 à 10:37:29    

d'apres le l'adresse suivante  
http://www.w3.org/TR/xslt20/#xsl-element
je crois que je dois definir un type à mon variable varReq1
càd au niveau de l'instruction
 
<xsl:param name="varReq1" as="xs:boolean">
 
mais boolean n'est pas correct car j'ai une expression complexe
avez vous une idée sur ce sujet
 
merci d'avance


Message édité par coucouA le 11-08-2006 à 10:38:12
Reply

Sujets relatifs:

Leave a Replay

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