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 :

[XSLT] suppression de doublons


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 104
    Par défaut [XSLT] suppression de doublons
    Bonjour à tous,

    Petite question pour un newbie que je suis en XSLT (je viens de découvrir ce language très intéressant il y a qqs jours)

    ayant un fichier XML de ce type :

    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
    19
    <ListeClients>
     
    <client nom="toto" domaine="construction">
    ...
    </client>
     
    <client nom="titi" domaine="design">
    ...
    </client>
     
    <client nom="tata" domaine="construction">
    ...
    </client>
     
    <client nom="tutu" domaine="medical">
    ...
    </client>
     
    </ListeClients>
    Comment pourrais-je parcourir ce fichier (ca je sais faire ) et placer dans une variable type tableau (c possible, ca ?) la liste des différents domaines ? donc le résultat en mémoire serait ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    construction
    design
    medical
    autrement dit, je sais qu'il est par exemple possible de parcourir une liste d'éléments par ordre alphabétique, mais comment supprimer les doublons (domaine "construction" dans ce cas) ? y a-t-il une fonction qui ferait ca ou faut-il le faire manuellement ?

    merci pour vos éclaircissements.

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Février 2009
    Messages : 155
    Par défaut
    Bonjour,

    On peut faire comme ça (en XSLT 1.1 minimum) :

    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
    19
    20
    21
    22
    23
    24
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1">
    	<xsl:output  method='text' encoding='ISO-8859-1' />
     
    	<xsl:template match="/">
    		<xsl:variable name="temp">
    			<xsl:for-each select="//client[@domaine]">
    				<xsl:sort select="@domaine"/>
    				<xsl:element name="dom">
    					<xsl:value-of select="@domaine"/>
    				</xsl:element>
    			</xsl:for-each>
    		</xsl:variable>
     
    		<xsl:for-each select="$temp//dom">
    			<xsl:if test="not(text() = following::text())">
    				<xsl:value-of select="text()"/>
    			</xsl:if>
    		</xsl:for-each>
    	</xsl:template>
     
    	<xsl:template match="text()"/>
     
    </xsl:stylesheet>

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 104
    Par défaut
    Bonjour,

    Merci pour votre aide.
    Néanmoins, en essayant d'utiliser cet exemple, voici l'erreur que j'ai :

    Message : La référence à une variable ou un paramètre « temp » doit correspondre à une liste de noeuds.
    auriez-vous une idée de l'origine de cette erreur ?
    Merci d'avance.

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Février 2009
    Messages : 155
    Par défaut
    Bonjour,

    Il faut au minimum utiliser un processeur XSLT supportant la version 1.1, j'ai testé le code avec Saxon 6.5.5, Intel XML Software Suite, ou un processeur 2.0 : Saxon B ou SA 9.1.0.7.
    MSXML ne supportant que la version 1.0, ce code fonctionnera pas.
    A vrai dire je ne sais pas trop comment aborder le problème en 1.0 et je suis curieux de voir une solution...

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 104
    Par défaut
    merci pour la réponse.

    Concrètement, qu'est-ce que cela signifie ?
    Ce code étant sensé s'exécuter sur 1 serveur, dans un site asp.NET, que faut-il installer pour que cela fonctionne ? faut-il installer qqch sur le serveur ? de quoi dépend la transformation XSLT pour qu'elle s'exécute en 1.1 et non 1.0 ? je suppose qu'il ne suffit pas de mettre "<xsl:stylesheet xmlnssl="http://www.w3.org/1999/XSL/Transform" version="1.1">", sinon ce serait trop beau ?

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Février 2009
    Messages : 155
    Par défaut
    Hélas, concrètement, en .NET la classe XslCompiledTransform ainsi que le compilateur xsltc.exe ne supportent que la version 1.0 de XSLT...

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

Discussions similaires

  1. [xslt] Suppression des éléments sans contenu.
    Par dibbouk dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 17/06/2005, 17h17
  2. Réponses: 17
    Dernier message: 03/12/2004, 11h17
  3. [langage] Suppression de doublon dans tableau
    Par LFC dans le forum Langage
    Réponses: 5
    Dernier message: 15/04/2004, 14h08
  4. Requête de suppression de doublons : besoin d'aide
    Par biocorp dans le forum Langage SQL
    Réponses: 3
    Dernier message: 27/01/2004, 17h04
  5. [LG]Suppression de doublons
    Par moustique31 dans le forum Langage
    Réponses: 5
    Dernier message: 20/12/2003, 21h03

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