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 :

Récupération de valeur


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 22
    Points : 18
    Points
    18
    Par défaut Récupération de valeur
    Bonjour,
    J'ai cette partie d'un xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <_06_auteur apagenum="1" pagenum="1">
    <Emph cstyle="06_auteur_c">Françoise</Emph>
    <Emph cstyle="07_biographie"> Rédactrice</Emph>
    </_06_auteur>
    Je voudrait récupérer les valeurs françoise et Rédactrice sous la forme <auteur>Françoise</auteur> et <biographie>Rédactrice</biographie>

    J'ai essayé ceci, sans résultat, sa me donne : <auteur>Françoise Pétry Rédactrice en chef </auteur>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <xsl:template match="//Emph[contains(@cstyle,'auteur')]">
        <auteur>
          <xsl:apply-templates />
        </auteur>
      </xsl:template>
     
       <xsl:template match="//Emph[contains(@cstyle,'biographie')]">
        <biographie>
          <xsl:apply-templates />
        </biographie>
      </xsl:template>
    j'ai un traitement dans le cas ou sa se présente sous la forme <_06_auteur apagenum="1" pagenum="1">Nom</_06_auteur>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <xsl:when test="contains(translate(name(current()),$translate-from,$translate-to),'auteur')">
                <auteur>
                  <xsl:value-of select="."/>
                </auteur>
              </xsl:when>
    Comment faire, quelqu'un a une idée ?

    Merci d'avance pour votre aide.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 22
    Points : 18
    Points
    18
    Par défaut
    J'ai modifié, il y a du mieux, mais c'est pas encore ça...
    Voilà le code :
    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
     
              <xsl:when test="contains(translate(name(current()),$translate-from,$translate-to),'auteur')">
                 <auteur>
                  <xsl:call-template name="auteur"/>
                  <xsl:value-of select="."/>
                 </auteur>
              </xsl:when>
     
     
     
    <xsl:template name="auteur">
        <xsl:for-each select="//*">
          <xsl:choose>
     
            <xsl:when test="Emph[contains(@cstyle,'auteur')]">
              <auteur>
                <xsl:apply-templates />
              </auteur>
            </xsl:when>
     
           <xsl:when test="Emph[contains(@cstyle,'biographie')]">
             <biographie>
               <xsl:apply-templates />
             </biographie>
             </xsl:when>
     
            </xsl:choose>
           </xsl:for-each>
          </xsl:template>
    ce qui me donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <auteur>
      <auteur>
        <auteur>Françoise</auteur>
        <biographie> Rédactrice</biographie>
      </auteur>
    Françoise Rédactrice
    </auteur>
    Alors que je voudrais
    <auteur>Françoise</auteur>
    <biographie> Rédactrice</biographie>

    Comment faire ?

    Merci d'avance pour votre aide.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 268
    Points : 199
    Points
    199
    Par défaut
    Bonjour,

    Enlève le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select="."/>
    Ca devrait donner ce que tu veux.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 22
    Points : 18
    Points
    18
    Par défaut
    Après modifs, j'ai maintenant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
              <xsl:when test="contains(translate(name(current()),$translate-from,$translate-to),'auteur')">
                  <xsl:call-template name="auteur"/>
              </xsl:when>
    et ça me donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <auteur>
        <auteur>Françoise</auteur>
        <biographie> Rédactrice</biographie>
      </auteur>
    Comment je peu faire pour enlever la balise <auteur> qui englobe le tout ?

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 268
    Points : 199
    Points
    199
    Par défaut
    Je ne vois pas d'où vient le problème dans les codes indiqués. Peut être s'agit il d'un code à un autre endroit ? Y en a t il ?

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    En changeant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <xsl:when test="contains(translate(name(current()),$translate-from,$translate-to),'auteur')">
                 <auteur>
                  <xsl:call-template name="auteur"/>
                 </auteur>
    </xsl:when>
    En
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:when test="contains(translate(name(current()),$translate-from,$translate-to),'auteur')">
                <xsl:call-template name="auteur"/>
    </xsl:when>

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 22
    Points : 18
    Points
    18
    Par défaut
    Non plus...

    J'ai fais des modifs, voici le code :
    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:when test="contains(translate(name(current()),$translate-from,$translate-to),'auteur')">
           <xsl:call-template name="auteur"/>
    </xsl:when>
     
     
     
    <xsl:template name="auteur" match="//Emph[contains(@cstyle,'auteur')]">
          <xsl:choose>
     
            <xsl:when test="Emph[contains(@cstyle,'auteur')]">
              <auteur>
                <xsl:apply-templates />
              </auteur>
            </xsl:when>
     
           <xsl:when test="Emph[contains(@cstyle,'biographie')]">
             <biographie>
               <xsl:apply-templates />
             </biographie>
             </xsl:when>
     
         <xsl:otherwise>
           <auteur_si_pas_sousbalise>
                <xsl:value-of select="."/>
           </auteur_si_pas_sousbalise>
         </xsl:otherwise>
     
         </xsl:choose>
       </xsl:template>
    Mais ça ne fonctionne tjrs pas, j'ai ceci :
    <auteur>
    <auteur_si_pas_sousbalise>Françoise</auteur_si_pas_sousbalise>
    Rédactrice
    </auteur>

  8. #8
    Membre éprouvé Avatar de laurentibus
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Points : 908
    Points
    908
    Par défaut
    essaye :
    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
     
    <xsl:template match="//Emph[@cstyle=='auteur']">
        <auteur>
          <xsl:value-of select="."/>
        </auteur>
    </xsl:template>
    <xsl:template match="//Emph[@cstyle=='biographie']">
        <biographie>
          <xsl:value-of select="."/>
        </biographie>
    </xsl:template>
    <xsl:template match="//Emph[@cstyle!='biographie' && @cstyle!='auteur']">
        <balise_inconnu>
          <xsl:value-of select="."/>
        </balise_inconnu>
    </xsl:template>

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 22
    Points : 18
    Points
    18
    Par défaut
    ça ne marche pas...

    j'ai encore modifier et j'en suis à :
    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
     
    <xsl:when test="contains(translate(name(current()),$translate-from,$translate-to),'auteur')">
        <xsl:apply-templates />
    </xsl:when>
     
     
            <xsl:template match="Emph[contains(@cstyle,'auteur')]">
              <auteur>
                <xsl:apply-templates />
              </auteur>
           </xsl:template>
     
           <xsl:template match="Emph[contains(@cstyle,'biographie')]">
             <biographie>
               <xsl:apply-templates />
             </biographie>
         </xsl:template>
     
        <xsl:template  match="Emph">
           <auteur_si_pas_sousbalise>
                <xsl:value-of select="."/>
           </auteur_si_pas_sousbalise>
        </xsl:template>
    Il y a du mieux, puisque j'obtient bien :
    <auteur>Françoise</auteur>
    <biographie>Rédactrice</biographie>

    mais dans le cas où j'ai :
    <_06_auteur apagenum="1" pagenum="1">Françoise</_06_auteur> (donc sans sous balises), j'obtient Françoise, alors que je voudrait <auteur>Françoise</auteur>

    Comment je pourrai adapter pour prendre ce cas de figure en compte ?

    Merci d'avance pour votre aide...

  10. #10
    Membre éprouvé Avatar de laurentibus
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Points : 908
    Points
    908
    Par défaut
    tout marche

    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
     
    <xsl:template match="//Emph">
    	<xsl:choose>
    		<xsl:when test="@cstyle='06_auteur_c'">
    			<auteur>
    				<xsl:value-of select="."/>
    			</auteur>
    		</xsl:when>
    		<xsl:when test="@cstyle='07_biographie'">
    			<biographie>
    				<xsl:value-of select="."/>
    			</biographie>
    		</xsl:when>
    		 <xsl:otherwise>
               <auteur>
    				<xsl:value-of select="."/>
    			</auteur>
              </xsl:otherwise>
    	</xsl:choose>
    </xsl:template>

Discussions similaires

  1. [checkbox] Récupération des valeurs de checkbox
    Par chng001 dans le forum Struts 1
    Réponses: 13
    Dernier message: 07/09/2009, 20h31
  2. [struts] [checkbox] récupération des valeurs cochées
    Par abourell dans le forum Struts 1
    Réponses: 16
    Dernier message: 10/06/2005, 20h58
  3. Réponses: 8
    Dernier message: 09/03/2005, 10h47
  4. récupération de valeur de lien
    Par sex-sansbol dans le forum ASP
    Réponses: 3
    Dernier message: 07/06/2004, 10h43
  5. Récupération de valeurs d'un tableau
    Par leeloo076 dans le forum ASP
    Réponses: 12
    Dernier message: 25/03/2004, 10h59

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