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 :

Connaitre la position d'un élément, suivant son contenu [XSLT 1.0]


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 252
    Points : 192
    Points
    192
    Par défaut Connaitre la position d'un élément, suivant son contenu
    Bonjour à tous.
    J'ai un souci pour connaitre la position d'un élément, par rapport à une autre colonne.
    Un bout de code expliquant beaucoup mieux qu'un long discours....

    J'ai une liste de fichier en XML tel que :
    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
     
    <Files>
        <File >
            <ID>33CB1A85-A191-45F0-B0C7-31CD543AB</ID>
            <BeginDate>2010-10-08</BeginDate>
            <EndDate>2011-06-30</EndDate>
            <Service>
                <Name>EUROPE</Name>
            </Service>
        </File>
        <File >
            <ID>33CB1A85-A11-45F0-B0C7-31CD54EE53AB</ID>
            <BeginDate>2010-10-08</BeginDate>
            <EndDate>2011-06-30</EndDate>
            <Service>
                <Name>MONDE</Name>
            </Service>
        </File>
        <File >
            <ID>33C85-A191-45F0-B0C7-31CD54EE53AB</ID>
            <BeginDate>2010-10-08</BeginDate>
            <EndDate>2011-06-30</EndDate>
            <Service>
                <Name>EUROPE</Name>
            </Service>
        </File>
        <File >
            <ID>33CB1A85-A191-45F0-B0-31CD54EE53AB</ID>
            <BeginDate>2010-10-08</BeginDate>
            <EndDate>2011-06-30</EndDate>
            <Service>
                <Name>MONDE</Name>
            </Service>
        </File>
    </Files>
    Le but étant de trier par rapport à name et ensuite le premier de chaque name doit avoir le statut "valide"
    Pour le tri pas de souci, je fais un sort, en revanche, je n'arrive pas à connaitre la position de l’élément suivant la balise name

    J'ai testé ce bout de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
                                                 <xsl:if test = "position()=first()">
                                                       <xsl:text>Valid</xsl:text>
     
                                                 </xsl:if>
    Pas de souci pour le premier élément, mais comment faire pour le premier élement monde ?
    D'avance merci !

  2. #2
    Expert confirmé
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Points : 4 843
    Points
    4 843
    Par défaut
    Tu veux le premier dans l'ordre XML absolument ou bien le premier par rapport à un autre critère (date de début, ...) ?

    Quoi qu'il en soit il te faudra appliquer la méthode de Muench.
    Dans le premier cas tu devras l'appliquer sur <Name> afin d'avoir toutes les valeurs différentes de name.
    Dans le second cas, sur name et le critère de tri.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 252
    Points : 192
    Points
    192
    Par défaut
    Bonjoru et merci pour ta réponse
    En fait je souhaite connaitre le premier élement sur Name
    Dans mon code avant je fais plusieurs trie via sort
    En voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
                            <xsl:sort select="BeginDate" order="descending"/>
                            <xsl:sort select="Name" order="descending"/>
    Pas de souci particulier
    Vu qu'après, j'affiche quand même dans une colonne de tableau Name, la aussi pas de souci
    En revanche, je souhaite que le premier de chaque groupe (ici Europe et monde) soit "valide".
    Ici nous avons 4 ID, mais on peut en avoir beaucoup plus (30 ou 40)
    De plus, je ne connais pas toutes les valeurs possible de Name
    J'ai (tenté) d'appliqué la méthode Muench mais visiblement je me trompe dans l'arbre XML
    Suivant ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      <xsl:value-of select="Service/Name[generate-id(.)=generate-id(key('name', .)[1])]"/>
      <xsl:variable name="na" select="Name"/>
      <b><xsl:value-of select="$na"/></b>
    Je parviens a recuperer le premier (soit Europe) mais pas monde
    Une idée ?
    Merci d'avance !

  4. #4
    Expert confirmé
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Points : 4 843
    Points
    4 843
    Par défaut
    Dans un value-of, tu récupères une seule valeur.

    Il faut passer par une boucle for-each. Normalement avec la même expression dans une boucle for-each, tu devrais avoir toutes les valeurs.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 252
    Points : 192
    Points
    192
    Par défaut
    Merci !
    C'était effectivement ça (vendredi toussa....)

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

Discussions similaires

  1. Connaitre la position d'un élément d'une séquence vérifiant un ordre
    Par oc_alex86 dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 21/03/2011, 07h07
  2. Hauteur div auto suivant son contenu
    Par gab.64 dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 29/10/2010, 17h17
  3. Position absolute et deplavement de son contenu
    Par DjChat dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 02/07/2008, 16h05
  4. [XPath]Connaitre la Position() de l'élément parent
    Par virgul dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 18/04/2007, 11h28
  5. [VB5]Connaitre l'index d'une liste via son contenu
    Par guda dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 15/10/2005, 15h08

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