Précédent   Forum des professionnels en informatique > Autres langages > XML/XSL et SOAP
XML/XSL et SOAP Forum d'entraide sur XML et SOAP. Avant de poster -> FAQ XML, Sources XML
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/02/2012, 17h34   #1
Invité régulier
 
Inscription : janvier 2007
Messages : 27
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 27
Points : 7
Points : 7
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 :
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
yassou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 19h11   #2
Membre confirmé
 
Inscription : octobre 2011
Messages : 188
Détails du profil
Informations forums :
Inscription : octobre 2011
Messages : 188
Points : 287
Points : 287
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 :
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 :
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...
tsuji est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 21h13   #3
Membre à l'essai
 
Inscription : août 2010
Messages : 12
Détails du profil
Informations forums :
Inscription : août 2010
Messages : 12
Points : 22
Points : 22
Bonjour,

Si cela est pour une expression xpath et un retour de type string alors la fonction distinct-values() devrait amplement suffire.
zeh0pe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2012, 08h26   #4
Membre Expert
 
Avatar de Loceka
 
Tlouye Ci
Inscription : mars 2004
Messages : 1 456
Détails du profil
Informations personnelles :
Nom : Tlouye Ci

Informations forums :
Inscription : mars 2004
Messages : 1 456
Points : 2 159
Points : 2 159
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.
Loceka est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2012, 10h27   #5
Membre à l'essai
 
Inscription : août 2010
Messages : 12
Détails du profil
Informations forums :
Inscription : août 2010
Messages : 12
Points : 22
Points : 22
Oui, je n'ai pas pensé à le préciser.

Merci
zeh0pe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/02/2012, 09h28   #6
Invité régulier
 
Inscription : janvier 2007
Messages : 27
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 27
Points : 7
Points : 7
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 .
yassou est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h41.


 
 
 
 
Partenaires

Hébergement Web