Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1527 connectés 

  FORUM HardWare.fr
  Programmation
  XML/XSL

  [Résolu] - [XSL] problème avec un xls:for-each

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Résolu] - [XSL] problème avec un xls:for-each

n°1929001
Seth_
I warn you, I'm armed !
Posté le 05-10-2009 à 14:41:39  profilanswer
 

Bonjour à tous :hello:
Voila j'ai un petit souci avec du xml et du xsl. Débutant en dév, j'ai toujours essayé d'en rester loin mais là j'ai pas eu le choix :o
 
J'ai besoin d'afficher un tableau de jalons (date + événement), j'ai donc mon tableau de 2 colonnes "Evénement" et "Date". Rien de bien difficile jusque là.
Ca se corse au niveau des lignes...
 
En fait mon fichier XML est généré via une fonction PHP. Les balises sont insérées en dur dans le code et le contenu est fourni par des variables.  
C'est peut-être pas super clair, mais à priori mon fichier .xml n'a aucun soucis (j'ai indenté moi-même après car ça ne fonctionnait pas si je le faisais dans la partie PHP où je créé mon fichier .xml) :  

Code :
  1. <?xml version="1.0" encoding="ISO-8859-1"?>
  2. <?xml-stylesheet href="fiche.xsl" type="text/xsl"?>
  3. <fichehl>
  4.     <date>01-10-2009</date>
  5.     <titre><![CDATA[XSL3 - Design et jalons]]></titre>
  6.     <resp>Blabla</resp>
  7.     <desc><![CDATA[Mise en place du design.
  8. Test du nouveau code au niveau des jalons (génération auto des lignes).]]></desc>
  9.     <changes><![CDATA[* change1
  10. * change2
  11. * change3]]></changes>
  12.     <ww><![CDATA[* Qui
  13. * Quand]]></ww>
  14.     <jalons>
  15.         <jde>
  16.             <jdate>28-09-09</jdate>
  17.             <jevent><![CDATA[event 1]]></jevent>
  18.         </jde>
  19.         <jde>
  20.             <jdate>29-09-09</jdate>
  21.             <jevent><![CDATA[event 2]]></jevent>
  22.         </jde>
  23.         <jde>
  24.             <jdate>30-09-09</jdate>
  25.             <jevent><![CDATA[event 3]]></jevent>
  26.         </jde>
  27.     </jalons>
  28.     <fm><![CDATA[* FM1
  29. * FM2
  30. * FM3]]></fm>
  31.     <ep><![CDATA[* EP1
  32. * EP2
  33. * EP3]]></ep>
  34. </fichehl>


Passons au fichier .xsl :
J'ai créé un template approprié aux jalons (dans le doute) :

Code :
  1. <xsl:template name="jalons" match="//jalons">
  2.         <xsl:for-each select="//jde">
  3.             <tr>
  4.                 <td>
  5.                     <xsl:value-of select="//jevent"/>
  6.                 </td>
  7.                 <td>
  8.                     <xsl:value-of select="//jdate"/>
  9.                 </td>
  10.             </tr>
  11.         </xsl:for-each>
  12. </xsl:template>


Et voici la partie du fichier .xsl où ce template particulier est appelé et utilisé :

Code :
  1. <table id="jalons">
  2.     <tr>
  3.         <th>Evénement</th>
  4.         <th>Date</th>
  5.     </tr>
  6.     <xsl:call-template name="jalons"/>
  7. </table>


Le tout m'affichant ceci :  
http://img11.yfrog.com/img11/6610/resultatxml.jpg
 
Au lieux de m'afficher dans les lignes 2 et 3 : "event 2" et "event 3" ainsi que "29-09-09" et "30-09-09" pour la colonne "Date" :o
 
 
Vous avez une idée ?  
M'engueulez pas trop si c'est une faute bête, je débute en xml/xsl  [:ooterreuroo]  
 
Merci :jap:


Message édité par Seth_ le 05-10-2009 à 15:05:48
mood
Publicité
Posté le 05-10-2009 à 14:41:39  profilanswer
 

n°1929005
Aiua
PSN : Aiua / GT : Aiua42
Posté le 05-10-2009 à 14:59:09  profilanswer
 

si tu enlèves les // devant jde, jevent et jdate ça marche pas mieux ?


---------------
"The pen is mightier than the sword if the sword is very short, and the pen is very sharp." TP. Mes Jeux. Mes Ventes. Groupe HFR sur PlayFire.
n°1929007
Seth_
I warn you, I'm armed !
Posté le 05-10-2009 à 15:02:46  profilanswer
 

Aiua a écrit :

si tu enlèves les // devant jde, jevent et jdate ça marche pas mieux ?


Arf, le méga boulet [:prozac]
C'était presque bien ça, il fallait enlever les // devant jevent et jdate en fait :jap:
 
Merci beaucoup Aiua :jap: ²²²

n°1929008
pataluc
Posté le 05-10-2009 à 15:05:40  profilanswer
 

il faut plutot utiliser current() pour faire référence à l'élément courant de ta boucle:

Code :
  1. <tr>
  2.    <td>
  3.        <xsl:value-of select="current()/jevent"/>
  4.    </td>
  5.    <td>
  6.        <xsl:value-of select="current()/jdate"/>
  7.    </td>
  8. </tr>

http://erwy.developpez.com/cours/l [...] le/#L1.1.2

Message cité 2 fois
Message édité par pataluc le 05-10-2009 à 15:06:54
n°1929010
Seth_
I warn you, I'm armed !
Posté le 05-10-2009 à 15:07:24  profilanswer
 

pataluc a écrit :

il faut plutot utiliser current() pour faire référence à l'élément courant de ta boucle:

Code :
  1. <tr>
  2.    <td>
  3.        <xsl:value-of select="current()/jevent"/>
  4.    </td>
  5.    <td>
  6.        <xsl:value-of select="current()/jdate"/>
  7.    </td>
  8. </tr>

http://erwy.developpez.com/cours/l [...] le/#L1.1.2


Je prends note :)
 
Merci à vous deux :jap:

n°1929060
Aiua
PSN : Aiua / GT : Aiua42
Posté le 05-10-2009 à 17:09:05  profilanswer
 

pataluc a écrit :

il faut plutot utiliser current() pour faire référence à l'élément courant de ta boucle:

Code :
  1. <tr>
  2.    <td>
  3.        <xsl:value-of select="current()/jevent"/>
  4.    </td>
  5.    <td>
  6.        <xsl:value-of select="current()/jdate"/>
  7.    </td>
  8. </tr>

http://erwy.developpez.com/cours/l [...] le/#L1.1.2


ça sert pas à grand chose, qd on nomme un noeud, c'est forcément un fils du noeud courant :o

 

et je suis quasi sur (j'ai pas testé) que tu peux aussi enlever les // devant jde :o
bon dans ton cas ça change pas grand chose parce que tu n'as qu'un noeud jalon, mais sinon ça ferait des trucs bizarre (ou si t'avais des noeuds jde ailleurs que comme fils de jalon :o)

Message cité 1 fois
Message édité par Aiua le 05-10-2009 à 17:10:21

---------------
"The pen is mightier than the sword if the sword is very short, and the pen is very sharp." TP. Mes Jeux. Mes Ventes. Groupe HFR sur PlayFire.
n°1929064
Seth_
I warn you, I'm armed !
Posté le 05-10-2009 à 17:13:59  profilanswer
 

Aiua a écrit :


ça sert pas à grand chose, qd on nomme un noeud, c'est forcément un fils du noeud courant :o
 
et je suis quasi sur (j'ai pas testé) que tu peux aussi enlever les // devant jde :o
bon dans ton cas ça change pas grand chose parce que tu n'as qu'un noeud jalon, mais sinon ça ferait des trucs bizarre (ou si t'avais des noeuds jde ailleurs que comme fils de jalon :o)


Si j'enlève les // devant jde, plus rien ne s'affiche [:spamafote]

n°1929088
Aiua
PSN : Aiua / GT : Aiua42
Posté le 05-10-2009 à 18:54:47  profilanswer
 

ah oui, j'avais pas vu que tu appelles ton template par son nom, du coup ton match="//jalons" il sert à rien
 
mais ça serait plus propre de faire :
 

Code :
  1. <xsl:for-each select="/fichehl/jalons">  (ou "//jalons" si vraiment tu préfères :D)
  2.     <xsl:call-template name="jalons"/>
  3. </xsl:for-each>


 
et

Code :
  1. <xsl:template name="jalons">
  2.     <xsl:for-each select="jde">
  3.     ...
  4.     </xsl:for-each>
  5. </xsl:template>



---------------
"The pen is mightier than the sword if the sword is very short, and the pen is very sharp." TP. Mes Jeux. Mes Ventes. Groupe HFR sur PlayFire.
n°1929226
Seth_
I warn you, I'm armed !
Posté le 06-10-2009 à 09:48:33  profilanswer
 

Aiua a écrit :

ah oui, j'avais pas vu que tu appelles ton template par son nom, du coup ton match="//jalons" il sert à rien

 

mais ça serait plus propre de faire :

Code :
  1. <xsl:for-each select="/fichehl/jalons">  (ou "//jalons" si vraiment tu préfères :D)
  2.     <xsl:call-template name="jalons"/>
  3. </xsl:for-each>


et

Code :
  1. <xsl:template name="jalons">
  2.     <xsl:for-each select="jde">
  3.     ...
  4.     </xsl:for-each>
  5. </xsl:template>



 

C'est fait, merci :jap:


Message édité par Seth_ le 06-10-2009 à 09:48:52

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  XML/XSL

  [Résolu] - [XSL] problème avec un xls:for-each

 

Sujets relatifs
problème crash Excel 2000 après supression d'un ongletProbleme installation CodeBlocks(mingw32)
[résolu] 1 applet insérée 2 fois dont seule la première marche[Résolu]Prog java ecoute même quand pas focus dans Windows
Problème avec les bouclesProblème de headers dans formulaire traité en php
Problème dans la rédaction d'un petit scriptProblème d' espace dans le résultat de la date
[Résolu] Choix d'un schéma d'une tableprobleme installation de forum sur free
Plus de sujets relatifs à : [Résolu] - [XSL] problème avec un xls:for-each


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR