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 :

Eliminier les doublons sur 2 node


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Inscrit en
    Avril 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 9
    Par défaut Eliminier les doublons sur 2 node
    Bonjour à tous,
    J'ai beaucoup de mal a trouver après un tri quel est le premier élement,
    Je m'explique
    Soit le xml suivant :

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
     
    <Files>
        <File >      
            <Season>2012</Season>
            <IssueDate>2012-03-02T00:00:00</IssueDate>
            <Number>95284</Number>
            <Link>https0</Link>
            <Name>DEV pdf</Name>
            <Language>FR-FR</Language>
            <Valid>1</Valid>
            <BeginDate>2012-03-02</BeginDate>
            <EndDate>2013-12-31</EndDate>
            <Service >
                <PK>21909986-81AD-4DF1-B2CA-618831C1E073</PK>
                <Name>Préparation - Distribution</Name>
            </Service>
        </File>
        <File >
     
            <Season>2012</Season>
            <IssueDate>2012-07-31T00:00:00</IssueDate>
            <Number>104878</Number>
            <Link>htt8</Link>
            <Name>DEV </Name>
            <Language>FR-FR</Language>
            <Valid>1</Valid>
            <BeginDate>2012-07-31</BeginDate>
            <EndDate>2013-12-31</EndDate>
            <Service >
                <PK>21909986-81AD-4DF1-B2CA-618831C1E073</PK>
                <Name>Préparation - Distribution</Name>
            </Service>
        </File>
        <File >
     
            <Season>2012</Season>
            <IssueDate>2012-02-23T00:00:00</IssueDate>
            <Number>93691</Number>
            <Link>httpl</Link>
            <Name>DEV </Name>
            <Language>FR-FR</Language>
            <Valid>1</Valid>
            <BeginDate>2012-02-23</BeginDate>
            <EndDate>2013-12-31</EndDate>
            <Service >
                <PK>21909986-81AD-4DF1-B2CA-618831C1E073</PK>
                <Name>Agriculture</Name>
            </Service>
        </File>
        <File >
     
            <Season>2012</Season>
            <IssueDate>2012-08-06T00:00:00</IssueDate>
            <Number>104883</Number>
            <Link>https:p</Link>
            <Name>DEV - Certificat AB V2.pdf</Name>
            <Language>EN-GB</Language>
            <Valid>1</Valid>
            <BeginDate>2012-08-06</BeginDate>
            <EndDate>2013-12-31</EndDate>
            <Service >
                <PK>21909986-81AD-4DF1-B2CA-618831C1E073</PK>
                <Name>Préparation - Distribution</Name>
            </Service>
        </File>
        <File >
     
            <Season>2012</Season>
            <IssueDate>2012-01-23T00:00:00</IssueDate>
            <Number>88589</Number>
            <Link>httpsv</Link>
            <Name>DEV </Name>
            <Language>FR-FR</Language>
            <Valid>1</Valid>
            <BeginDate>2012-01-23</BeginDate>
            <EndDate>2013-12-31</EndDate>
            <Service >
                <PK>21909986-81AD-4DF1-B2CA-618831C1E073</PK>
                <Name>Agriculture</Name>
            </Service>
        </File>
        <File >
     
            <Season>2012</Season>
            <IssueDate>2012-02-14T00:00:00</IssueDate>
            <Number>92049</Number>
            <Link>https:/P</Link>
            <Name>DEV </Name>
            <Language>FR-FR</Language>
            <Valid>1</Valid>
            <BeginDate>2012-02-14</BeginDate>
            <EndDate>2013-12-31</EndDate>
            <Service >
                <PK>21909986-81AD-4DF1-B2CA-618831C1E073</PK>
                <Name>Préparation - Distribution</Name>
            </Service>
        </File>
        <File >
     
            <Season>2012</Season>
            <IssueDate>2012-08-06T00:00:00</IssueDate>
            <Number>104882</Number>
            <Link>https:/O</Link>
            <Name>DEV</Name>
            <Language>FR-FR</Language>
            <Valid>1</Valid>
            <BeginDate>2012-08-06</BeginDate>
            <EndDate>2013-12-31</EndDate>
            <Service >
                <PK>21909986-81AD-4DF1-B2CA-618831C1E073</PK>
                <Name>Agriculture</Name>
            </Service>
        </File>
    </Files>>
    Je souhaiterai classer mes elmeent par Service/Name ET par langue
    J'ai essayé d'adapter une méthode muench mais je n'y arrive pas du tout

    Début de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        <xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>
       <xsl:key name="language" match="//Language" use="."/>
    <!--    <xsl:key name="begindate" match="BeginDate" use="."/>
    -->    <xsl:key name="name" match="Service/Name" use="."/><!--
        <xsl:key name="issuedate" match="IssueDate" use="."/>
        <xsl:key name="number" match="Number" use="."/>-->
     
     
        <xsl:template match="/">
    Un peu plus loin..
    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
     
     
                                <xsl:for-each select="//File">
                                    <xsl:sort select="Service/Name" order="descending"/>
                                    <xsl:sort select="Language" order="ascending"/>                                    
                                    <xsl:sort select="Season" order="descending"/>
                                    <xsl:sort select="BeginDate" order="descending"/>
     
     
     
     
                                    <xsl:choose>
                                        <xsl:when test="substring(Service/Name, 0, 16) = 'EU 834/2007 Pré' and substring(BeginDate,0, 5) > substring(ex:date-time(),0, 5) - 4 and substring(Number,string-length(Number) - 1, 2) != 'AC'">
     
                                            <xsl:choose>
    <!--                                            <xsl:when test="BeginDate[generate-id(.)=generate-id(key('begindate', .)[1])] and Number[not(x &lt; Number/x)]/x">-->
                                                <xsl:when test="Service/[generate-id(.)=generate-id(key('language', .)[1])]">
    Si quelqu'un avait une idée...

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 585
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 585
    Par défaut
    Normal, un Muench utilise une clé, toi tu en utilises deux.

    Commence déjà par regrouper uniquement par nom de service, pour voir comment ça marche.
    Après, et après seulement, tu essaieras de chercher comment ajouter la langue dans la clé.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 252
    Par défaut
    Ok donc si je comrpends bien, il me faut faire un truc du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     <xsl:key name="language" match="Language" use="."/>
     <xsl:key name="name" match="Service/Name" use="."/>
     
     
    <xsl:when test="Service/Name[generate-id(.)=generate-id(key('name', .)[1])]">
    Après quand tu me dis de regrouper, je comprends pas trop, j'avais vu une méthode avec le concat mais je n'ai pas trop compris comment faire (et l’intérêt du concat en plus..)

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

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

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

    dans un premier temps, tu voir comment fonctionne key, en utilisant uniquement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:key name="name" match="Service/Name" use="."/>
    <!-- ... -->
    <xsl:when test="Service/Name[generate-id(.)=generate-id(key('name', .)[1])]">
    Tu n'as pas besoin d'un autre élément xsl:key.

    Le regroupement n'a rien à voir avec la fonction concat, c'est une étape technique qui consiste à regrouper, "à mettre ensemble", des noeuds suivant des critères donnés
    en un ensemble de noeuds.

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/07/2008, 19h49
  2. Gérer les Doublons sur 3 Colonnes
    Par faressam dans le forum Excel
    Réponses: 2
    Dernier message: 03/06/2008, 13h04
  3. Autoriser les doublons sur un champ
    Par marco_fot_hxc dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 29/04/2008, 10h40
  4. Eviter les doublons sur un champ SQL Serveur 2005
    Par crashyear dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 05/12/2006, 09h02
  5. [Access] supprimer les doublons sur deux champs
    Par nini94 dans le forum Langage SQL
    Réponses: 15
    Dernier message: 13/10/2006, 12h41

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