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