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 :

éliminer les doublons


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre à l'essai
    Femme Profil pro
    developpement
    Inscrit en
    Décembre 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : developpement
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 17
    Points : 14
    Points
    14
    Par défaut éliminer les doublons
    bonjour,
    J'ai un fichier xml structuré comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <elt1>
      <elt2  id="p1">
       <grp chp1= "A" chp2="B"/>
       <grp chp1 ="A" chp2="C"/>
       <grp chp1= "X" chp2="S"/>
       <grp chp1= "X" chp2="Z"/>
    </elt2 >
    <elt2  id="p2">
       <grp chp1= "C" chp2="E"/>
       <grp chp1 ="C" chp2="F"/>
       <grp chp1= "D" chp2="g"/>
       <grp chp1= "D" chp2="h"/>
    </elt1>

    en appliquant une feuille xsl je souhiate avoir l'affichage suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    Paramètres	Champs
    P1	Chp1	Chp2
    	A	B,C
    	X	S,Z
    P2	C	E,F
    	D	G,h
    J'ai fait une boucle pour ne pas avoir des doublons du champs chp1, mais je ne sais pas c quoi l'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    
    <xsl:for-each select="//elt2[@id=$par]/grp[not(@chp1 = preceding-sibling:://elt2[@id=par]/grp/@chp1)]">
    l'erreur est au niveau coloré en rouge
    erreur = test de oeud attendu "//" trouvé

    Merci pour vos aides.

  2. #2
    Membre émérite
    Avatar de polymorphisme
    Homme Profil pro
    Publishing
    Inscrit en
    Octobre 2009
    Messages
    1 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Publishing
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 1 460
    Points : 2 371
    Points
    2 371
    Par défaut
    Bonjour,

    tu trouvera la méthode à suivre dans l'article Filtrage de doublons avec XSLT 1.0 . N'hésite pas à refaire un post, si tu comprends vraiment pas.

  3. #3
    Membre à l'essai
    Femme Profil pro
    developpement
    Inscrit en
    Décembre 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : developpement
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 17
    Points : 14
    Points
    14
    Par défaut
    Merci pour votre réponse.

    J'ai créé une clé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <xsl:key name="doublons" match="grp" use="concat(cle, //elt2/@id, @chp1)"/>
    après je fais un boucle comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
     <xsl:for-each select="//elt2[@id=$par]/groupe[generate-id() = generate-id(key('doublons',concat(cle,$par,@chp1))[1])]">
    Je rçois un résultat incomplet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Paramètres	Champs
    P1	Chp1	Chp2
    	A	B,C
    	X	S,Z
    P2	   
         ICI JE NE RECOIS RIEN !!
    Pour l'élément elt2 ayant l'id = p2, je ne reçois plus de valeurs

    Merci pour vos aides

  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 845
    Points
    4 845
    Par défaut
    C'est ta clef qui est mauvaise. Essaye plutôt comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:key name="doublons" match="grp" use="concat(../@id, '_', @chp1)"/>
    Bien entendu, il te faut aussi changer l'appel de la clef en conséquence.

  5. #5
    Membre à l'essai
    Femme Profil pro
    developpement
    Inscrit en
    Décembre 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : developpement
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 17
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par Loceka Voir le message
    C'est ta clef qui est mauvaise. Essaye plutôt comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:key name="doublons" match="grp" use="concat(../@id, '_', @chp1)"/>
    Bien entendu, il te faut aussi changer l'appel de la clef en conséquence.

    Merci beaucoup, ça marche

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

Discussions similaires

  1. Distinct - éliminer les doublons
    Par chris801 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 27/03/2007, 23h22
  2. comment éliminer les doublons
    Par fk04 dans le forum Requêtes
    Réponses: 1
    Dernier message: 09/08/2006, 17h22
  3. Éliminer les doublons d'une BDD MySQL
    Par sansouna24 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 21/05/2006, 11h26
  4. Réponses: 2
    Dernier message: 12/05/2006, 08h35
  5. [sql] [oracle] éliminer les doublons dans sum ?
    Par trungsi dans le forum Langage SQL
    Réponses: 14
    Dernier message: 04/03/2005, 12h29

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