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] sélectionner une option d'un select


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre du Club Avatar de gojira
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 94
    Points : 55
    Points
    55
    Par défaut [XSLT] sélectionner une option d'un select
    Bonjour,

    Je reviens avec une chose que je ne comprends pas.
    J'ai un deux XML.
    L'un contient les options d'un select.
    L'autre contient la valeur sauvegardée du select.

    Avec un xslt je veux pouvoir créer mon select à partir du premier XML mais lui donner la valeur du second XML (valeur qui appartient à l'ensemble des valeurs du premier)

    Donc j'opère de deux façons:
    la première consiste en:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <xsl:template match="Node1">
          <xsl:variable name="Name"><xsl:value-of select="@Name"/></xsl:variable>
         <xsl:for-each select="Node2">
            <option>
            <xsl:if test="$InputFile/Node1/Node2/option[@Name=$Name]!=''">
              <xsl:attribute name="selected">1</xsl:attribute>
            </xsl:if>
            <xsl:attribute name="value">
              <xsl:value-of select="@Name" />
            </xsl:attribute>
            <xsl:value-of select="@Name" />
            </option>
          </xsl:for-each>
    la deuxième façon étant donné que j'ai plusieurs combos
    c'est d'éclater les options et de tester chaque cas:
    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
    27
    28
    29
    30
      <xsl:template match="Node2">
          <xsl:variable name="Node2"><xsl:value-of select="@Name"/></xsl:variable>
          <td style="font-size:10pt;font-weight:bold">
    	<xsl:value-of select="@Name"/>
          </td>
          <td>
    	<select id="{$Name}" name="{$Name}" style="font-size:8pt">
    	  <xsl:choose>
    	    <xsl:when test="$InputFile/Node1/Node2[@Name=$Name]='Y'">
                  <option value=""></option>
                  <option value="Y" selected="selected">Y</option>
                  <option value="N">N</option>
                  <option value="N/A">N/A</option>
    	    </xsl:when>
    	    <xsl:when test="$InputFile/Node1/Node2[@Name=$Name]='N'">
                  <option value=""></option>
                  <option value="Y">Y</option>
                  <option value="N" selected="selected">N</option>
                  <option value="N/A">N/A</option>
    	    </xsl:when>
    	    <xsl:otherwise>
                  <option value="" selected="selected"></option>
                  <option value="Y">Y</option>
                  <option value="N">N</option>
                  <option value="N/A">N/A</option>
    	    </xsl:otherwise>
    	  </xsl:choose>
          </select> 	
          </td>
      </xsl:template>
    Bon, c'est très moche... c'est pas du tout dans l'optique du xsl.. mais je débute là-dedans... et surtout pour mon cas particulier les tutoriaux du site ne m'ont pas beaucoup aidé dans le sens où je n'a pas réussi à les adapter à mon histoire.

    Merci par avance pour votre aide inestimable.
    Amicalement
    Gojira

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

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Salut

    perso je préfère la première solution, mais je n'ai pas compris ton problème, tu ne poses aucune question !?

  3. #3
    Membre du Club Avatar de gojira
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 94
    Points : 55
    Points
    55
    Par défaut
    Ah oui... mince...
    Ben mon problème c'est que ça ne sélectionne pas!

    J'ai deux fichiers XML
    Le premier est le suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <MenuSelects Name='MenuSelects'>
    <MenuSelect Name='A'></MenuSelect>
    <MenuSelect Name='B'></MenuSelect>
    <MenuSelect Name='C'></MenuSelect>
    <MenuSelect Name='D'></MenuSelect>
    </MenuSelects>
    <MenuE Name='MenuE'>
    <Option Name='1'></OptionName>
    <Option Name='2'></OptionName>
    <Option Name='3'></OptionName>
    <Option Name='4'></OptionName>
    </MenuE>
    le deuxième contient les valeurs à afficher:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <A>Y</A>
    <B>N</B>
    <C>Y</C>
    <D>Y</D>
    <MenuE>2</MenuE>
    je veux pouvoir construire en XSLT:
    une liste de <select> A, B, C, D ayant tous les mêmes options ('','Y', 'N', 'N/A') mais
    Mais dont la valeur à afficher est dnas le deuxième fichier.
    Evidemment si elle ne s'y trouve pas, on affiche une option vide
    (<option value=""></option>)

    Et un select MenuE qui a le même principe...

    j'arrive à afficher les combo...
    Mais rien n'est sélectionné.

    et comme je commence en XSL... je n'ai pas le recul nécessaire pour comprendre ce qui ne va pas...

    Merci beaucoup.

  4. #4
    Membre du Club Avatar de gojira
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 94
    Points : 55
    Points
    55
    Par défaut
    c'est bon j'ai trouvé...
    j'ai fait ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <xsl:for-each select="node1">
            <option>
            <xsl:if test="$Value=@Name">
              <xsl:attribute name="selected">true</xsl:attribute>
            </xsl:if>
            <xsl:attribute name="value">
              <xsl:value-of select="@Name" />
            </xsl:attribute>
            <xsl:value-of select="@Name" />
            </option>
    </xsl:for-each>
    et ça marche bien...
    merci à ceux qui m'ont lu et on essayé de m'aider.

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

Discussions similaires

  1. Dé-sélectionner une option d'un select multiple
    Par renaud26 dans le forum jQuery
    Réponses: 5
    Dernier message: 07/09/2011, 12h18
  2. activer un input lorsque l'on choisi une option ds un select
    Par netwebzone dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 29/04/2007, 23h12
  3. Selectionner une option dans un select
    Par _beber85 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 06/04/2006, 16h48
  4. [javascript] Sélectionner l'option d'un select
    Par LE NEINDRE dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 26/10/2005, 17h35
  5. Supprimer une option d'un select à choix multiple
    Par Oluha dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/02/2005, 14h16

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