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

XML/XSL et SOAP Discussion :

Liste des valeurs d'un attribut sans répétition des doublons


Sujet :

XML/XSL et SOAP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 30
    Points : 25
    Points
    25
    Par défaut Liste des valeurs d'un attribut sans répétition des doublons
    Bonjour,
    je cherche une expression XPATH qui me liste des valeurs d'un attribut sans répétition des doublons. Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <List-doc>
    	<document type="A"/>
    	<document type="B"/>
    	<document type="C"/>
    	<document type="C"/>
    	<document type="A"/>
    </list-doc>
    Je cherche à avoir la liste :A,B,C
    Merci d'avance

  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
    Si le document n'est pas disproportionalement grand, et que quand vous dites xpath, vous diriez dans la contexte de xslt, vous pouvez les découvrir comme ça.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <xsl:template match="/list-doc">
        <root>
            <xsl:apply-templates select="document" />
        </root>
    </xsl:template>
    <xsl:template match="document">
        <xsl:if test="count(preceding-sibling::document[@type=current()/@type])=0">
            <type><xsl:value-of select="@type" /></type>
        </xsl:if>
    </xsl:template>
    Il va montrer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <root>
        <type>A</type>
        <type>B</type>
        <type>C</type>
    </root>
    Mais c'est un algorithm de O(N^2), avec N le numbre de l'élément document et N assez grand. Le plus efficace moyen de le faire pour N vraiement grand serait utilsant xsl:key pour un regroupement... une sorte de faq aussi...

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 16
    Points : 31
    Points
    31
    Par défaut
    Bonjour,

    Si cela est pour une expression xpath et un retour de type string alors la fonction distinct-values() devrait amplement suffire.

  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
    Citation Envoyé par zeh0pe Voir le message
    Si cela est pour une expression xpath et un retour de type string alors la fonction distinct-values() devrait amplement suffire.
    Par contre elle n'est disponible qu'en XPath 2.0.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 16
    Points : 31
    Points
    31
    Par défaut
    Oui, je n'ai pas pensé à le préciser.

    Merci

  6. #6
    Nouveau membre du Club
    Inscrit en
    Janvier 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 30
    Points : 25
    Points
    25
    Par défaut
    Merci pour les réponses.
    Effectivement je travail avec xpath dans le contexte de XSLT 1.1 et donc je ne peut pas utiliser les fonction xpath 2.0.
    Je doit me contenter par la solution de tsuji .

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 31/05/2015, 20h57
  2. Réponses: 10
    Dernier message: 06/07/2009, 13h56
  3. Liste des valeurs de l'attribut xml:lang
    Par ribrok dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 26/02/2008, 14h35
  4. Réponses: 9
    Dernier message: 26/11/2007, 09h50
  5. Passer des valeurs dans mon actionform sans les afficher
    Par tonito53 dans le forum Struts 1
    Réponses: 6
    Dernier message: 04/01/2007, 11h36

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