IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XSL/XSLT/XPATH XML Discussion :

[XSLT] Problème d'affichage de contenus à la suite avec du <xsl:choose> [Débutant(e)]


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 120
    Points : 56
    Points
    56
    Par défaut [XSLT] Problème d'affichage de contenus à la suite avec du <xsl:choose>
    Bonjour à tous,
    j'ai un petit souci:
    dans les fichiers xml que je dois transformer on a à chaque fois une icone "securité" qui est suivie d'une ou de plusieurs icônes listant les types de danger qu'on peut rencontrer. Pour faire le xslt de cette partie j'ai fait le code suivant, sauf qu'il m'affiche l'icône sécurité et une seule icone parmi les autres
    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
     
    <xsl:template match="Danger_enum">
       <Danger_enum>
        <Image align="aleft" position="below"  src="../../Illustrations/securite.eps" height="1cm" width="1cm"/>
        <Type_Danger>
             <xsl:choose>		
    	<xsl:when test="//Incendie">			
    	<Incendie>
    	<Image align="aleft"  position="below"   src="../../Illustrations/a14_02.eps" height="1cm" width="1cm"/>		
    	</Incendie>	     
    	</xsl:when>
    	<xsl:when test="//Asphyxie">
    	<Asphyxie>					
    	<Image align="acenter"  position="below"  src="../../Illustrations/a02_02.eps" height="1cm" width="1cm" />			</Asphyxie>
    	</xsl:when>
    	<xsl:when test="//Brulure_chimique">
    	<Brulure_chimique>				
    	<Image align="aleft"  position="below"   src="../../Illustrations/a02_01.eps" height="1cm" width="1cm" />			</Brulure_chimique>
                 </xsl:when>
    	<xsl:when test="//Surface_brulante">
    	 <Surface_brulante>				
    	 <Image align="aleft"  position="below"   src="../../Illustrations/a13_01.eps" height="1cm" width="1cm" />		   </Surface_brulante>
    	 </xsl:when>
             </xsl:choose>
    </Type_Danger>
    </xsl:template>
    Comment pourrai-je faire pour pouvoir afficher mon icône "sécurité" et le ou les icônes qui doivent suivre en fonction de mon document? j'ai essayé de mettre un "xsl:for-each" mais ça n'a pas marché.
    Mer d'avance

  2. #2
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    tu as essayé tout simplement ceci :

    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
    <xsl:template match="Danger_enum">
       <Danger_enum>
        <Image align="aleft" position="below"  src="../../Illustrations/securite.eps" height="1cm" width="1cm"/>
        <Type_Danger>
             <xsl:apply-template/>
        </Type_Danger>
      </Danger_enum>
    </xsl:template>
     
    <xsl:template match="Incendie">
    	<Incendie>
    	<Image align="aleft"  position="below"   src="../../Illustrations/a14_02.eps" height="1cm" width="1cm"/>		
    	</Incendie>
    </xsl:template>
     
    <xsl:template match="Asphyxie">
    	<Asphyxie>					
    	<Image align="acenter"  position="below"  src="../../Illustrations/a02_02.eps" height="1cm" width="1cm" />			</Asphyxie>
    </xsl:template>
     
    [etc.]
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 120
    Points : 56
    Points
    56
    Par défaut
    ça a l'air tellement plus simple!!! Waaw! Je teste et je te dis si ça marche...Merci

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 120
    Points : 56
    Points
    56
    Par défaut
    Merci Swoög!
    J'ai testé ta proposition mais ça n'a pas marché comme je voulais. c'est quand j'ai remplacé ton premier match
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <xsl:template match="Danger_enum">
       <Danger_enum>
        <Image align="aleft" position="below"  src="../../Illustrations/securite.eps" height="1cm" width="1cm"/>
        <Type_Danger>
             <xsl:apply-template/>
        </Type_Danger>
      </Danger_enum>
    </xsl:template>
    Par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <xsl:template name="Type_Danger">   
        <Type_Danger>   
       <Image align="aleft" position="below"  src="../../Illustrations/securite.eps" height="1cm" width="1cm"/>                                
       <xsl:for-each select="*">  
       <xsl:value-of select="."/>      
        </Type_Danger> 
    </xsl:template>
    en matchant les autres éléments comme indiqué dans ton exemple que j'ai obtenu l'affichage de mes images. Seulement là où ça fonctionne pas c'est qu'il ne m'affiche plus mon image qui est dans mon <xsl:template name="Type_Danger"> ci-dessus. Comment pourrai-je faire pour qu'il m'affiche cette image?

  5. #5
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Eh bien en fait, déjà ton template est mal formé (tu ne fermes pas le for-each ) ensuite, est-ce que tu fais bien un apply-template quelque part pour appeller celui-ci ?
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 120
    Points : 56
    Points
    56
    Par défaut
    Pour le "fo-each" c'est au moment de le mettre sur le code que je l'ai oublié mais sur mon xslt il est bien présent Sinon, j'ai pas fait de <xsl:apply-templates> car <xsl:template name="Type_Danger"> est l'élément que je veux matcher. Mon xml se présente comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <Danger_enum>
    	<Type_Danger>
    		<Asphyxie/>
    		<Incendie/>
    		...
    	</Type_Danger>
    </Danger_enum>
    une image générique doit accompagner Danger_enum ou Type_danger et chaque autre élément aura son image. Avec la méthode que tu m'a proposée c'est l'image générique qui ne s'affiche pas lors de la transformation. Suis-je peut être plus clair cette fois-ci

  7. #7
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    ok, je viens de voir :

    tu utilises name comme argument pour ta balise template, il faut que tu utilises match
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 120
    Points : 56
    Points
    56
    Par défaut
    ça a marcher comme sur des roulettes! En fait, tu avais raison sur le match. j'ai remonté d'un cran et j'ai déclaré <xsl:apply-templates/> pour mon <xsl:template name="Type_Danger"> et ça marcher.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <xsl:template match="Danger_enum">
    	<Danger_enum>
    	<Image align="aleft" position="below"  src="../../Illustrations/securite.eps" height="1cm" width="1cm"/>     
    	<xsl:apply-templates/>
    	</Danger_enum>
    </xsl:template>
    Merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. onclick: affichage de contenus de tabs différents
    Par flora806 dans le forum jQuery
    Réponses: 2
    Dernier message: 13/05/2013, 17h03
  2. [XSLT] condition pour faire un affichage à ma sauce
    Par wholehog2 dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 11/06/2012, 23h23
  3. [WPF/Blend] Affichage des contenus multiples dans l'arbre du designer
    Par Rolsct dans le forum Windows Presentation Foundation
    Réponses: 6
    Dernier message: 19/01/2009, 21h29
  4. Réponses: 2
    Dernier message: 05/03/2008, 19h30
  5. Affichage des tables temporaires d'Access avec GetTableNames
    Par Oluha dans le forum Bases de données
    Réponses: 2
    Dernier message: 25/05/2005, 16h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo