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 :

Afficher les duplicatas [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
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 24
    Par défaut Afficher les duplicatas
    Bonjour,

    j'ai cet xml :

    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
    <?xml version="1.0" encoding="UTF-8" ?>
    <?xml-stylesheet href="mondeuxieme.xsl" type="text/xsl"?>
     
    	<refs>
    		<cat1>
    			<name>toto</name>
    		</cat1>
    		<cat1>
    			<name>tata</name>
    		</cat1>
     
    		<cat2>
    			<name>tutu</name>
    		</cat2>
    		<cat2>
    			<name>toto</name>
    		</cat2>
    	</refs>
    Comment faire en XSL pour n'afficher que toto ?

    merci d'avance pour votre aide

  2. #2
    Membre expérimenté
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2007
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 199
    Par défaut
    tu veux faire afficher que le premier toto rencontrés ou tous les toto ou le premier toto du noeud cat1 ?

    Tous les totos : Sinon tu peux utiliser la fonction position()

    Le premier toto de cat1 par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /refs/cat1[position()=1]/name[.='toto']
    etc, etc...

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 24
    Par défaut
    Citation Envoyé par caballo Voir le message
    tu veux faire afficher que le premier toto rencontrés ou tous les toto ou le premier toto du noeud cat1 ?
    En fait je voudrais détecter que si il y a deux toto, j'en affiche qu'un seul

  4. #4
    Membre expérimenté
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2007
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 199
    Par défaut
    tu utilise alors la fonction count() pour déterminer/tester le nombre de toto et tu n'affiche que le premier par exemple

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 24
    Par défaut
    Je vais essayer ça, je te remercie

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 24
    Par défaut
    Citation Envoyé par caballo Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /refs/cat1[position()=1]/name[.='toto']
    J'ai réussi grâce à ça, en parcourant mes noeuds dans un foreach et en remplaçant la position par une variable qui s'incrémente, merci beaucoup

  7. #7
    Membre expérimenté
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2007
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 199
    Par défaut
    Il y a effectivement des dizaines de façon de procéder !

  8. #8
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 24
    Par défaut
    Re,

    J'ai une autre petite question, toujours avec le même XML, j'ai fais cet XSL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <xsl:variable name="namePath" select="//name" />
    <xsl:for-each select="$namePath">
        <xsl:variable name="a" select="position()"/>
        <p><xsl:value-of select="$namePath[$a]"></xsl:value-of></p>
    </xsl:for-each>
    J'obtiens donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    toto 
    tata 
    tutu
    toto
    J'aimerais pouvoir n'afficher que : J'ai essayé plein de trucs avec preceding:: ou preceding::sibling, mais je n'ai pas réussi :/

  9. #9
    Membre expérimenté
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2007
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 199
    Par défaut
    En XSL 1.0 Il faut utiliser un prédicat avec preceding::

    [not(preceding::balise/. = .)]

    En version 2.0 il y a directement une fonction qui permet de faire cela : <xsl:for-each select="distinct-values(//name)">.

    Si tu es amené à travailler sur XSL de manière approfondie, il faut que tu te penche sur :
    http://www.developpez.net/forums/d12...xml-xsl-xpath/

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

Discussions similaires

  1. [Relations] afficher les relations entre 2 tables
    Par dzincou dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 14/01/2004, 17h07
  2. [web] comment afficher les erreur d'un cgi
    Par chtiboss dans le forum Web
    Réponses: 6
    Dernier message: 24/12/2003, 11h22
  3. [JTable] Comment ne pas afficher les titres ?
    Par FabienBxl dans le forum Composants
    Réponses: 3
    Dernier message: 08/10/2003, 15h01
  4. Comment afficher les accent sous mysql v4.0.13
    Par buildozer dans le forum Requêtes
    Réponses: 2
    Dernier message: 17/06/2003, 09h33
  5. Afficher les bonnes facettes
    Par WormsHL-Groove dans le forum OpenGL
    Réponses: 3
    Dernier message: 26/08/2002, 21h36

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