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éutiliser la valeur d'un élément avec xsl:variable [XSLT 1.0]


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2020
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Réutiliser la valeur d'un élément avec xsl:variable
    Bonjour à tous !

    J'aimerai créer via XSL un document HTML présentant un tableau listant des adresses d'un document XML. Chaque ligne du tableau doit comprendre une adresse complète: id, voie, commune, longitude et latitude.

    Voici mon document XML:

    Code XML : 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
    <depistages>
      <adresses>
        <foyer>
          <id>xxx</id>
          <voie>ccc</voie>
          <commune>aaa</commune>
        </foyer>
        <foyer>
          <id>zzz</id>
          <voie>ggg</voie>
          <commune>yyy</commune>
        </foyer>
     
     </adresses>
      <geolocalisations>
        <localisation>
          <id>eee</id>
          <longitude>ggg</longitude>
          <latitude>hhh</latitude>
        </localisation>
        <localisation>
          <id>lllllllllllllllll</id>
          <longitude>tttttttttttt</longitude>
          <latitude>kkkkkkkkkkk</latitude>
        </localisation>
     
      </geolocalisations>
    </depistages>


    Voici le code pour le tableau:

    Code XSL : 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
     <table>
                        <tr> 
                            <th> Id</th> 
                            <th>Voie</th>
                            <th>Commune</th>
                            <th >Longitude</th>
                            <th>Latitude</th>
                        </tr>
     
                        <xsl:for-each select = "//foyer | //localisation">
     
                            <xsl:sort  select="id" />
                            <xsl:variable name="id" select="id" />
     
                            <tr>     
                                <td>
                                    <xsl:value-of select = "$id"/>
                                </td>
                                <td>
                                    <xsl:value-of select = "voie"/>
                                </td>
                                <td>
                                    <xsl:value-of select = "commune"/>
                                </td> 
                                <td>
                                    <xsl:value-of select = "longitude"/>
                                </td>
                                <td>
                                    <xsl:value-of select = "latitude"/>
                                </td>
                             </tr>    
                        </xsl:for-each>
     
    </table >

    J'obtiens un tableau comprenant les bonnes adresses ( identifiant de foyer associé à identifiant de localisation ) car les données sont triées par identifiant. Mais le problème est que j'obtient sur une ligne, les valeurs de Id, Voie, et Commune et sur la suivante, les valeurs de Id (encore), longitude et latitude associées. Comment réutiliser la valeur de l'élément id pour afficher la bonne localisation et ne pas avoir de répétition en utilisant xsl:variable ?

    Merci pour votre aide !

  2. #2
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    La question est bien mal posée. Il faut ajouter un discours sur identification des id's concordants entre foyers et localisations - ce qu'on appelle quelquefois un "look-up"

    En tout car, je pense ce qu'on veut est quelque comme ça.
    Code xslt1 : 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
    <xsl:template match="adresses">
        <table>
            <tr>
                <th>Id</th>
                <th>Voie</th>
                <th>Commune</th>
                <th >Longitude</th>
                <th>Latitude</th>
            </tr>
            <xsl:for-each select="foyer">
                <xsl:sort select="id" />
                <xsl:variable name="id" select="id" />
                <tr>
                    <td><xsl:value-of select = "$id"/></td>
                    <td><xsl:value-of select = "voie"/></td>
                    <td><xsl:value-of select = "commune"/></td>
                    <td><xsl:value-of select = "../following-sibling::geolocalisations/localisation[id=$id]/longitude"/></td>
                    <td><xsl:value-of select = "../following-sibling::geolocalisations/localisation[id=$id]/latitude"/></td>
                </tr> 
            </xsl:for-each>
        </table >
    </xsl:template>

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2020
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Super merci beaucoup !

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 22/04/2013, 12h13
  2. [XSL]Récupérer les 5 plus petites valeurs de 10 éléments
    Par muad'dib dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 02/03/2009, 18h04
  3. [XSL] afficher la valeur d'un élément du noeud parent
    Par luimême dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 08/12/2005, 12h08
  4. Compter nombre d'éléments avec valeur X dans un formulaire
    Par p0Kep0K dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 24/11/2005, 15h49
  5. Faire du calcul avec la valeur d'un élément/attribut
    Par camboui dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 03/11/2005, 16h10

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