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 2.0] Supprimer les doublons et regroupement de valeurs


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 22
    Points : 12
    Points
    12
    Par défaut [XSLT 2.0] Supprimer les doublons et regroupement de valeurs
    Bonjour à tous,

    Cela fait quelques jours que je sèche sur un problème et malgré les heures passées sur le net à essayer de comprendre toutes les subtilités du XSL, je suis complétement perdu.

    J'ai un document XML de cette forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <Trail>
      <Load Model="toto.prt" State="Start" />
      <Information Text="Tous les objets de la session sont affichés. Aucun objet ne sera effacé." />
      <Load Model="tutu.drw" State="Start">
        <Error Text="Impossible de charger la police XXX." />
        <Error Text="Impossible de charger la police YYY." />
        <Load Model="tata.prt" State="Start" />
        <Load Model="template.frm" State="Start">
          <Error Text="Impossible de charger la police XXX." />
        </Load>
      </Load>
      <Information Text="Tous les objets de la session sont affichés. Aucun objet ne sera effacé." />
     </Trail>
    Le nombre d'imbrication de balise <Load> n'est pas limité.

    Je souhaite arriver à une analyse de ce fichier en affichant chaque type d'erreur et pour chaque erreur la liste des modèles affectés.

    J'ai réussi récupérer mes différentes erreurs et à les afficher. Par contre je n'arrive pas à réduire les doublons ni à afficher la liste des Model pour chaque erreur.

    Voici mon xsl :
    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
     
    <?xml version="1.0" encoding="UTF-8"?>
     
    <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xsl:output method="html"/>
    <xsl:template match="/">
    <HTML>
    <BODY>
    <H1>Trail</H1>
    <table border="1">
    		<tr bgcolor="#9acd32">
    			<th align="left">Error</th>
    			<th align="left">Model</th>
    		</tr><!--<xsl:apply-templates/>-->
    		<xsl:for-each-group select="//Error" group-by="@Text">
    			<xsl:sort select="current-grouping-key()"/>
    			<xsl:for-each select="current-group()">
    			<xsl:if test="not(@Text=preceding-sibling::Error/@Text)"> <!--Balise IF qui ne fonctionne pas -->
    			<tr>
    			<td>
    				<xsl:value-of select="current-grouping-key()"/>
    			</td>
    			<td>
    				<!--Ajouter le code pour afficher la liste des models ici -->
    			</td>
    			</tr>
    			</xsl:if>
    		</xsl:for-each>
    	</xsl:for-each-group>
    </table>
    </BODY>
    </HTML>
    </xsl:template>
    </xsl:stylesheet>
    N'ayant commencé le XSL que très recemment, j'ai encore du mal avec les utilisation de groupes, de key ou même des Xpath un peu trop évolués.

    Merci d'avance pour toute l'aide que vous pourrez m'apporter

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    Finalement aprés moult arrachage de cheuveux j'ai réussi à obtenir ce que je voulais et même plus. Je rajoute même un petit tri par nombre d'erreur pour faire mieux

    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
     
    <BODY>
    	<H1>Trail</H1>
    	<table border="1">
    		<tr bgcolor="#9acd32">
    			<th align="left">Error</th>
    			<th align="left">Nombre</th>
    			<th align="left">Modele</th>
    		</tr><!--<xsl:apply-templates/>-->
    		<xsl:for-each-group select="//Error" group-by="@Text">
    			<xsl:sort select="count(current-group())" data-type="number" order="descending"/>
    			<xsl:variable name="nb_model" select="count(current-group())"/>
    			<tr>
    			<td>
    				<xsl:value-of select="current-grouping-key()"/>
    			</td>
    			<td>
    				<xsl:value-of select="$nb_model"/>
    			</td>
    			<td>
    				<xsl:for-each select="current-group()">
    				<xsl:value-of select="../@Model"/>
    				<br/>
    				</xsl:for-each>
    			</td>
    			</tr>
    		</xsl:for-each-group>
    	</table>
    </BODY>

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

Discussions similaires

  1. supprimer les doublons dans une table
    Par mavean dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 26/06/2019, 13h26
  2. Comment supprimer les doublons
    Par djelloulc dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 17/09/2013, 14h30
  3. Comment supprimer les doublons?
    Par Dnx dans le forum Langage SQL
    Réponses: 3
    Dernier message: 24/11/2005, 16h35
  4. [vbexcel]Comment supprimer les doublons dans une combobox?
    Par Mugette dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 24/11/2005, 11h12
  5. [ListView]Supprimer les doublons
    Par mohamed dans le forum Composants VCL
    Réponses: 1
    Dernier message: 27/10/2005, 12h14

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