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] Changer le nom des éléments...


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 169
    Points : 40
    Points
    40
    Par défaut [XSLT] Changer le nom des éléments...
    Bonjour,

    j'ai à peu près réussi à mettre en forme comme je le voulait mon XML, mais maintenant j'aimerais faire quelque chose de tout bête (enfin je pense! ), c'est à dire afficher un autre nom pour chaque élement de mon xml. Exemple tout simple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <base10_processus>
                <base10_etape>
                 ......
     
               </base10_etape>
     
     
    </base10_processus>
    Et je voudrais par exmple avec XSL arriver à ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     - processus
                + etape
                ....
    Donc en gros, comment faire pour spécifier une règle pour tous les noms de mes éléments (sachant que je les connais tous à l'avance) qui lorsqu'elle tombe sur l'élement en question lui donne un autre nom pour l'affichage...
    Merci d'avance pour votre aide!

  2. #2
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    il faudrait ton xslt qui te permet deja d'afficher comme tu veux (mais sans changer les noms) pour qu'on t'explique quoi modifier

  3. #3
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Points : 786
    Points
    786
    Par défaut
    est ce que tes noms de balises s appelleront toujours base10 quelque chose ou cela peut aussi varier?

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 169
    Points : 40
    Points
    40
    Par défaut
    Pour le xslt, je le posterais ce soir quand je rentrerais chez moi parce que mon accès au net est très réduit à l'heure actuelle

    Euh sinon, le nom de mes balises commence toujours par "oa_" plus précisement mais je me rends compte que je vais avoir aussi besoin de règles pour le nom des attributs de mes éléments...

    Bref, la suite très bientot

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 169
    Points : 40
    Points
    40
    Par défaut
    Voila mon XSL...(très largement inspiré de celui d'un des utilisateurs du site )

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    <table width="70%" align="center" border="0">
                             <tr>  
                                 <td name="principal" width="8%" align="left" class="ligne1" onclick="javascript:affiche_cache(this);" >
                                     <img name="signe_principal" src="./images/plus.gif" />
                                     <xsl:text> </xsl:text> 
                                     <xsl:attribute name="colspan"><xsl:value-of select="count(child::*)"/></xsl:attribute>
                                     <b><xsl:value-of select="name()"/></b>
                                     <br />(<span class="attribut"><xsl:for-each select="@*"><b><xsl:value-of select="name()"/></b> : <i><xsl:value-of select="."/></i>  </xsl:for-each></span>)
                                 </td>
                                 <td width="28%">
                                 </td>
                             </tr>
                                 <xsl:apply-templates select="*"/>        
                      </table>		 
                </body>
          </html>
       </xsl:template>
     
       <xsl:template match="*">
     
             <xsl:choose>
     
                <xsl:when test="*"> 
    		<tr>
    		  <td width="8%">
                      </td>
                      <td width="15%" style="display:none" name="secondaire" align="left" class="ligne2" onclick="javascript:affiche_cache(this);" >
                          <img id="signe_secondaire" src="./images/plus.gif" />
                          <xsl:text> </xsl:text>
                          <xsl:attribute name="colspan"><xsl:value-of select="count(child::*)"/></xsl:attribute>
                          <b><xsl:value-of select="name()"/></b>
                          <br />(<span class="attribut"><xsl:for-each select="@*"><b><xsl:value-of select="name()"/></b> : <i><xsl:value-of select="."/></i><br /></xsl:for-each></span>)
                      </td>
                      <td width="15%">
                      </td> 
    	        </tr>  
                    <tr id="trfinal" style="display:none" >
                      <td width="8%" >
                      </td>
                      <td width="15%">
                      </td>
                      <td width="15%" name="final" align="left" class="ligne3" >
                        <xsl:apply-templates select="*"/>
                      </td>
                    </tr>
                </xsl:when>
     
                <xsl:otherwise>
     
                   <div>
                        <b><xsl:value-of select="name()"/></b>
                        <br />(<span class="attribut"><xsl:for-each select="@*"><b><xsl:value-of select="name()"/></b> : <i><xsl:value-of select="."/></i><br /></xsl:for-each></span>)
                   </div>
                   <div class="valeurnoeud"><xsl:value-of select="."/></div>
     
                </xsl:otherwise>
     
            </xsl:choose>
     
       </xsl:template>
    Le problème est que pour l'affichage des élements et de leurs attributs, j'utilise une boucle sans me soucier de leur nom, mais si je veux pouvoir remplacer leur nom, je vais devoir définir une règle pour chacun, non? J'avoue ne pas savoir comment m'y prendre!
    Merci d'avance!

  6. #6
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    pas forcemment , plus simple mais certes moins elegant que de faire un template pour chaque serait un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <xsl:variable name="le_nom"><xsl:choose>
    	<xsl:when test="name()=truc_b10">truc</xsl:when>
    	<xsl:when test="name()=machin_re">autre_truc</xsl:when>
    	......
    	<xsl:otherwise><xsl:value-of select="name()"></xsl:value-of></xsl:otherwise>
    </xsl:choose></xsl:variable>
    au debut de ta template *

    et remplacer tous les
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select="name()"/>
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select="string($le_nom)"/>

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 169
    Points : 40
    Points
    40
    Par défaut
    Merci beaucoup, je vais essayer ça de suite!

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 169
    Points : 40
    Points
    40
    Par défaut
    Heu j'ai essayé mais je ne suis pas sur de bien tout comprendre!
    En effet, quand je met ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <xsl:variable name="le_nom"><xsl:choose> 
       <xsl:when test="name()=truc_b10">truc</xsl:when>
    Ca veut bien dire que si le nom de mon élément est "truc_b10", alors je le remplace par truc, non?

    Parce que là j'ai fais ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <xsl:variable name="le_nom"><xsl:choose> 
    <xsl:when test="name()=oa_message">messssssssssssss</xsl:when>
    <xsl:otherwise><xsl:value-of select="name()"></xsl:value-of></xsl:otherwise>			 </xsl:choose></xsl:variable>		 
                        <xsl:attribute name="colspan"><xsl:value-of select="count(child::*)"/></xsl:attribute>
                           <b><xsl:value-of select="string($le_nom)"/></b>
    Et pour mon premier élément qui s'appelle "oa_message", au lieu d'avoir "mesage", j'ai tjs "oa_message"

    Je m'y prends surement mal!

  9. #9
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Points : 786
    Points
    786
    Par défaut
    oublie pas de mettre des quotes autour du nom
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <xsl:when test="name()='oa_message'">messssssssssssss</xsl:when>

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 169
    Points : 40
    Points
    40
    Par défaut
    Super, merci à vous, ça marche nickel!
    Encore merci pour votre patience!

  11. #11
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Points : 786
    Points
    786
    Par défaut
    met le sujet à résolu alors stp

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

Discussions similaires

  1. [XSLT] Changer les noms de balise lors de la fusion
    Par toxine dans le forum XSL/XSLT/XPATH
    Réponses: 9
    Dernier message: 25/01/2006, 09h47
  2. Nom des éléments d'un formulaire
    Par licorne dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 15/12/2005, 09h45
  3. [XML] Norme des noms des éléments
    Par anaon dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 12/12/2005, 17h33
  4. [CSS]Changer l'interligne des éléments d'une liste à puces
    Par khany dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 21/03/2005, 13h57
  5. DBGrid - changer le noms des entête de colonnes ?
    Par safab dans le forum Bases de données
    Réponses: 2
    Dernier message: 12/11/2004, 16h49

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