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 :

Regrouper des champs multiples pour qu'ils soient uniques [XSLT 1.0]


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 28
    Par défaut Regrouper des champs multiples pour qu'ils soient uniques
    Bonjour,

    j'ai un souci XSL, concernant l'unicité de mon traitement. Je m'explique : dans le XML ci-dessous je veux afficher une sorte de tableau avec une seul ligne concernant le hostname1 genre:
    hostname || Job

    <MULTI>
    <INSTANCE name="Client" >
    <ITEM>hostname1</ITEM>
    </INSTANCE>
    <INSTANCE name="Job" >
    <ITEM>/var</ITEM>
    </INSTANCE>
    </MULTI>
    <MULTI>
    <INSTANCE name="Client" >
    <ITEM>hostname1</ITEM>
    <INSTANCE name="Job" >
    <ITEM>/data</ITEM>
    </INSTANCE>
    <MULTI>
    Mon problème c'est que je n'arrive pas à faire en sorte que ça m'affiche qu'une seul ligne en gros je veux regrouper les jobs pour les memes hosts.
    J'ai regardé ici : http://xml.developpez.com/faq/?page=3#xslt_doublon
    Mais je n'arrive pas l'utiliser dans mon cas

    avez vous une solution

    merci

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Tu veux produire quoi, à quelles conditions ?

    Non, ton premier post ne le dit pas. Et si tu n'arrives pas à appliquer l'article de FAQ mentionné, c'est que ce que tu essaies de faire n'est pas directement évident.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 28
    Par défaut rep
    je veux obtenir une ligne du type :
    hostname1 || /data /var

    je ne veux pas :

    hostname1 || /data
    hostname1 || /var

    je veux donc éviter les doublons et regrouper /data et /var dans la meme ligne!
    Est ce plus clair?

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Beaucoup plus clair, je ne vois pas ce que cette histoire de hostname1 || Job faisait dans le premier post.
    Au passage, il y a un problème avec ta deuxième balise <INSTANCE name="Client" > : elle s'ouvre mais ne se ferme pas. On va dire que c'est un oubli.

    Bon, la clé porte sur les INSTANCE[@name='Client']
    Le use sera ITEM.

    Tu sélectionnes toutes les valeurs uniques de ITEM pour les INSTANCE en question, comme le montre la FAQ.
    À l'intérieur de cette boucle, tu veux boucler pour choper /var et /data. Voici comment :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <xsl:variable name="$hostname" select="ITEM"/>
     
    <xsl:for-each select="/MULTI/INSTANCE[@name='Job'][preceding-sibling::INSTANCE[ITEM = $hostname]]/ITEM">
      <!-- faire quelque chose avec -->
    </xsl:for-each>
    Edit : euh, il y a plus simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <xsl:variable name="$hostname" select="ITEM"/>
     
    <xsl:for-each select="/MULTI/INSTANCE[@name='Client' and ITEM = $hostname]/following-sibling::INSTANCE/ITEM">
      <!-- faire quelque chose avec -->
    </xsl:for-each>
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 28
    Par défaut RE modélisation
    Merci de ton aide mais enfait ce n'est pas vraiment le modèle xml que j'ai je me suis mal exprimé selon la répétition des noeud.

    J'ai un fichier composé comme cela :

    <?xml version="1.0" encoding="UTF-8"?>
    <REPORT>
    <MULTI>
    <INSTANCE name="Client">
    <ITEM>hostname1</ITEM>
    </INSTANCE>
    <INSTANCE name="Status" >
    <ITEM>failed</ITEM>
    </INSTANCE>
    </MULTI>
    <MULTI>
    <INSTANCE name="Client">
    <ITEM>hostname2</ITEM>
    </INSTANCE>
    <INSTANCE name="Status" >
    <ITEM>success</ITEM>
    </INSTANCE>
    </MULTI>
    <MULTI>
    <INSTANCE name="Client">
    <ITEM>hostname1</ITEM>
    </INSTANCE>
    <INSTANCE name="Status" >
    <ITEM>success</ITEM>
    </INSTANCE>
    </MULTI>
    </REPORT>
    Je veux dans ce cas encore une fois, trier les hostname afin d'obtenir le résultat :

    hostname1 failed
    hostname2 success

    Je veux faire aparaitre mon failed à condition que j'ne obtiens au moins un

    merci et désolé encore pour cette erreur copier coller !!!

  6. #6
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 28
    Par défaut
    Personne peut m'aider? C'est vraiement un problème sur lequel je but depuis un moment!!
    merci

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

Discussions similaires

  1. tMap: utilisation du tMap pour une regroupement des champs
    Par ben.83 dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 18/03/2010, 08h51
  2. formulaire avec des champs multiples
    Par don'de dans le forum Struts 1
    Réponses: 13
    Dernier message: 16/02/2007, 09h42
  3. Réponses: 2
    Dernier message: 23/08/2006, 17h26
  4. Regrouper des champs par mois
    Par nou366 dans le forum Bases de données
    Réponses: 4
    Dernier message: 17/05/2006, 14h23
  5. Regrouper des champs dans un GROUP BY
    Par kaiserazo dans le forum Langage SQL
    Réponses: 7
    Dernier message: 11/07/2005, 08h43

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