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 :
Le nombre d'imbrication de balise <Load> n'est pas limité.
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>
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 :
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.
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>
Merci d'avance pour toute l'aide que vous pourrez m'apporter
Partager