J'ai de la peine entre value-of et apply-template

J'ai de la peine entre value-of et apply-template - XML/XSL - Programmation

Marsh Posté le 12-08-2004 à 17:08:03    

Hello
J'ai un truc comme ça :  
 
<menu sandwich="bigmac" frites="grosses" boisson="coca" />
dès fois, je peux avoir :  
<menu sandwich="bigmac" frites="grosses" boisson="coca" sauce="curry" />
 
Je veux faire une feuille XSL qui me permet d'afficher tous les attribus genre :
 
Sandwich = bigmac
mais si il en manque un, genre sauce, que sa affiche pas Sauce= mais rien du tout.
 
J'ai donc choisi de faire un template par attribus de ce genre =
<xsl:template match="menu[@sandwich]">
Sandwich=<xsl:value-of select="@sandwich" />
</xsl:template>
 
Voici le bug : Il affiche que le dernier, soit dans mon cas : la 1ère fois : coca et la 2ème fois curry
 
 
Pouvez-vous m'aider ? c'est certainement très simple mais je m'embrouille ! Merci :jap:  
 

Reply

Marsh Posté le 12-08-2004 à 17:08:03   

Reply

Marsh Posté le 12-08-2004 à 17:32:41    

Faut tester la présence de chaque attribut comme ceci :
 

Code :
  1. <xsl:template match="menu[@sandwich]">
  2.   <xsl:if test="@sauce">
  3.     <xsl:text>Sauce:</xsl:text>
  4.     <xsl:value-of select="@sauce"/>
  5.   </xsl:if>
  6. </xsl:template>


 
pas testé, sinon faut poster ton xml, xslt et un exemple du résultat escompté pour pas chercher midi à 14 heures.


Message édité par avander le 12-08-2004 à 17:33:55
Reply

Marsh Posté le 12-08-2004 à 17:38:33    

ok
Le XML

Code :
  1. <commande>
  2. <menu sandwich="bigmac" frites="grosses" boisson="coca" />
  3. <menu sandwich="bigmac" frites="grosses" sauce="curry" />
  4. </commande>


la sortie

Code :
  1. <h1>Menu</h1><br />
  2. Sandwich = bigmac <br />
  3. Frites = grosses <br />
  4. boisson = coca <br />
  5. <h1>Menu</h1><br />
  6. Sandwich = bigmac <br />
  7. Frites = grosses <br />
  8. sauce = curry <br />


 
et non pas  
 

Code :
  1. <h1>Menu</h1><br />
  2. Sandwich = bigmac <br />
  3. Frites = grosses <br />
  4. boisson = coca <br />
  5. sauce = <br />
  6. <h1>Menu</h1><br />
  7. Sandwich = bigmac <br />
  8. Frites = grosses <br />
  9. boisson = <br />
  10. sauce = curry <br />


Message édité par moxfulder le 12-08-2004 à 17:39:17
Reply

Marsh Posté le 13-08-2004 à 14:47:04    

???
 
Pourquoi avoir édité ?

Reply

Marsh Posté le 15-08-2004 à 23:41:24    

busOman a écrit :

???
 
Pourquoi avoir édité ?


 
euh je t'ai pas suivi là :heink:

Reply

Marsh Posté le 16-08-2004 à 12:32:56    

Ton problème est résolu ?

Reply

Marsh Posté le 16-08-2004 à 16:46:36    

busOman a écrit :

Ton problème est résolu ?


 
oui atta, je mets la réponse ici pour ceux qui auraient besoin :  
 

Code :
  1. <xsl:choose>
  2. <xsl:when test="@sauce!=''">
  3.  Sauce = <xsl:value-of select="@sauce"/>
  4. </xsl:when>
  5. </xsl:choose>


 
Evidemment, faire cela avec chaque valeur facultative.


Message édité par moxfulder le 16-08-2004 à 16:47:00
Reply

Sujets relatifs:

Leave a Replay

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