Bonjour à tous,

Voilà 2 jours que je tourne en rond pour réussir à mettre en page mon xml via xsl

Voici un exemple de fichier xml

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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
<ROWSET>
   <ROW num="1">
      <Id>85854</Id>
      <CONT_PRENOM>SOC. &amp; DE SANTE ASBL</CONT_PRENOM>
      <CONT_NOM>ASSOC. CHRETIENNE DES INSTITUTIONS</CONT_NOM>
      <NUM_CLIENT>4784314</NUM_CLIENT>
      <COAD_ADRESSE_DIRECTE>O</COAD_ADRESSE_DIRECTE>
      <CONT_CLIENT>C</CONT_CLIENT>
      <TCON_CODE>412 - MAISONS DE REPOS</TCON_CODE>
      <TIND_CODE>2608</TIND_CODE>
      <TIND_DESC>CBC BANQUE TOURNAI SUCCURSALE</TIND_DESC>
      <Adresse>AVENUE DE LA PAIRELLE, 33 B3</Adresse>
      <Localité>5000 NAMUR</Localité>
   </ROW>
   <ROW num="2">
      <Id>85854</Id>
      <CONT_PRENOM>SOC. &amp; DE SANTE ASBL</CONT_PRENOM>
      <CONT_NOM>ASSOC. CHRETIENNE DES INSTITUTIONS</CONT_NOM>
      <NUM_CLIENT>4784314</NUM_CLIENT>
      <COAD_ADRESSE_DIRECTE>O</COAD_ADRESSE_DIRECTE>
      <CONT_CLIENT>C</CONT_CLIENT>
      <TCON_CODE>412 - MAISONS DE REPOS</TCON_CODE>
      <TIND_CODE>2608</TIND_CODE>
      <TIND_DESC>CBC BANQUE TOURNAI SUCCURSALE</TIND_DESC>
      <Adresse>AVENUE DE LA PAIRELLE, 33-34 4</Adresse>
      <Localité>5000 NAMUR</Localité>
   </ROW>
   <ROW num="3">
      <Id>85854</Id>
      <CONT_PRENOM>SOC. &amp; DE SANTE ASBL</CONT_PRENOM>
      <CONT_NOM>ASSOC. CHRETIENNE DES INSTITUTIONS</CONT_NOM>
      <NUM_CLIENT>4784314</NUM_CLIENT>
      <COAD_ADRESSE_DIRECTE>O</COAD_ADRESSE_DIRECTE>
      <CONT_CLIENT>C</CONT_CLIENT>
      <TCON_CODE>412 - MAISONS DE REPOS</TCON_CODE>
      <TIND_CODE>2640</TIND_CODE>
      <TIND_DESC>CBC BANQUE MONS SUCCURSALE</TIND_DESC>
      <Adresse>AVENUE DE LA PAIRELLE, 33 B3</Adresse>
      <Localité>5000 NAMUR</Localité>
   </ROW>
   <ROW num="4">
      <Id>85854</Id>
      <CONT_PRENOM>SOC. &amp; DE SANTE ASBL</CONT_PRENOM>
      <CONT_NOM>ASSOC. CHRETIENNE DES INSTITUTIONS</CONT_NOM>
      <NUM_CLIENT>4784314</NUM_CLIENT>
      <COAD_ADRESSE_DIRECTE>O</COAD_ADRESSE_DIRECTE>
      <CONT_CLIENT>C</CONT_CLIENT>
      <TCON_CODE>412 - MAISONS DE REPOS</TCON_CODE>
      <TIND_CODE>2640</TIND_CODE>
      <TIND_DESC>CBC BANQUE MONS SUCCURSALE</TIND_DESC>
      <Adresse>AVENUE DE LA PAIRELLE, 33-34 4</Adresse>
      <Localité>5000 NAMUR</Localité>
   </ROW>
   <ROW num="5">
      <Id>85854</Id>
      <CONT_PRENOM>SOC. &amp; DE SANTE ASBL</CONT_PRENOM>
      <CONT_NOM>ASSOC. CHRETIENNE DES INSTITUTIONS</CONT_NOM>
      <NUM_CLIENT>4784314</NUM_CLIENT>
      <COAD_ADRESSE_DIRECTE>O</COAD_ADRESSE_DIRECTE>
      <CONT_CLIENT>C</CONT_CLIENT>
      <TCON_CODE>412 - MAISONS DE REPOS</TCON_CODE>
      <TIND_CODE>2853</TIND_CODE>
      <TIND_DESC>CBC GESTION PRIVEE</TIND_DESC>
      <Adresse>AVENUE DE LA PAIRELLE, 33-34 4</Adresse>
      <Localité>5000 NAMUR</Localité>
   </ROW>
   <ROW num="6">
      <Id>85854</Id>
      <CONT_PRENOM>SOC. &amp; DE SANTE ASBL</CONT_PRENOM>
      <CONT_NOM>ASSOC. CHRETIENNE DES INSTITUTIONS</CONT_NOM>
      <NUM_CLIENT>4784314</NUM_CLIENT>
      <COAD_ADRESSE_DIRECTE>O</COAD_ADRESSE_DIRECTE>
      <CONT_CLIENT>C</CONT_CLIENT>
      <TCON_CODE>412 - MAISONS DE REPOS</TCON_CODE>
      <TIND_CODE>2664</TIND_CODE>
      <TIND_DESC>CBC BANQUE NAMUR SUCCURSALE</TIND_DESC>
      <Adresse>AVENUE DE LA PAIRELLE, 33-34 4</Adresse>
      <Localité>5000 NAMUR</Localité>
   </ROW>
   <ROW num="7">
      <Id>85854</Id>
      <CONT_PRENOM>SOC. &amp; DE SANTE ASBL</CONT_PRENOM>
      <CONT_NOM>ASSOC. CHRETIENNE DES INSTITUTIONS</CONT_NOM>
      <NUM_CLIENT>4784314</NUM_CLIENT>
      <COAD_ADRESSE_DIRECTE>O</COAD_ADRESSE_DIRECTE>
      <CONT_CLIENT>C</CONT_CLIENT>
      <TCON_CODE>412 - MAISONS DE REPOS</TCON_CODE>
      <TIND_CODE>2757</TIND_CODE>
      <TIND_DESC>CBC BANQUE NAMUR SUCCURSALE-GE</TIND_DESC>
      <Adresse>AVENUE DE LA PAIRELLE, 33 B3</Adresse>
      <Localité>5000 NAMUR</Localité>
   </ROW>
   <ROW num="8">
      <Id>85854</Id>
      <CONT_PRENOM>SOC. &amp; DE SANTE ASBL</CONT_PRENOM>
      <CONT_NOM>ASSOC. CHRETIENNE DES INSTITUTIONS</CONT_NOM>
      <NUM_CLIENT>4784314</NUM_CLIENT>
      <COAD_ADRESSE_DIRECTE>O</COAD_ADRESSE_DIRECTE>
      <CONT_CLIENT>C</CONT_CLIENT>
      <TCON_CODE>412 - MAISONS DE REPOS</TCON_CODE>
      <TIND_CODE>2757</TIND_CODE>
      <TIND_DESC>CBC BANQUE NAMUR SUCCURSALE-GE</TIND_DESC>
      <Adresse>AVENUE DE LA PAIRELLE, 33-34 4</Adresse>
      <Localité>5000 NAMUR</Localité>
   </ROW>
   <ROW num="9">
      <Id>85854</Id>
      <CONT_PRENOM>SOC. &amp; DE SANTE ASBL</CONT_PRENOM>
      <CONT_NOM>ASSOC. CHRETIENNE DES INSTITUTIONS</CONT_NOM>
      <NUM_CLIENT>4784314</NUM_CLIENT>
      <COAD_ADRESSE_DIRECTE>O</COAD_ADRESSE_DIRECTE>
      <CONT_CLIENT>C</CONT_CLIENT>
      <TCON_CODE>412 - MAISONS DE REPOS</TCON_CODE>
      <TIND_CODE>2853</TIND_CODE>
      <TIND_DESC>CBC GESTION PRIVEE</TIND_DESC>
      <Adresse>AVENUE DE LA PAIRELLE, 33 B3</Adresse>
      <Localité>5000 NAMUR</Localité>
   </ROW>
   <ROW num="10">
      <Id>85854</Id>
      <CONT_PRENOM>SOC. &amp; DE SANTE ASBL</CONT_PRENOM>
      <CONT_NOM>ASSOC. CHRETIENNE DES INSTITUTIONS</CONT_NOM>
      <NUM_CLIENT>4784314</NUM_CLIENT>
      <COAD_ADRESSE_DIRECTE>O</COAD_ADRESSE_DIRECTE>
      <CONT_CLIENT>C</CONT_CLIENT>
      <TCON_CODE>412 - MAISONS DE REPOS</TCON_CODE>
      <TIND_CODE>2664</TIND_CODE>
      <TIND_DESC>CBC BANQUE NAMUR SUCCURSALE</TIND_DESC>
      <Adresse>AVENUE DE LA PAIRELLE, 33 B3</Adresse>
      <Localité>5000 NAMUR</Localité>
   </ROW>
</ROWSET>
Donc voici un exemple de recherche pour 1 client
Attention, un client peux posséder maximum 2 adresses mais être reliés à plusieurs TIND_CODE dans le cas ci-dessus il y a 5 TIND_CODE.
Donc mon code actuel affiche le client suivi de 10 adresses.

Je voudrais qu'il affiche que les adresses qui sont différentes, donc par exemple pour le cas ci-dessus, je voudrais qu'il affiche une fois le client et ensuite les 2 adresses.

Ci-joint mon code actuel

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
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 
	<xsl:template match="/">
	<HTML>
		<HEAD>
			<LINK rel="stylesheet" href='html/mcic/style/CBCinet.css'/>
			<LINK rel="stylesheet" href='html/mcic/style/mcic.css'/>
		</HEAD>
		<BODY onload="parent.frDown.location.href='html/mcic/blank.html';">
			<TABLE width="100%" border="0" cellspacing='0'>
				<TR>
				<TD>
				<xsl:apply-templates select="ROWSET/ROW"/>
 
				</TD>
				</TR>
			</TABLE>
			<!-- Message si aucun ROW n'est détecté-->
			<xsl:if test= "not(/ROWSET/ROW)">
				<BR/>
				<TABLE border='0' width='100%'>
					<TR align='center'><TD>
						<LABEL>Aucun résultat !</LABEL>
					</TD></TR>
				</TABLE>
			</xsl:if>
		</BODY>
	</HTML>
	</xsl:template>
 
	<xsl:template match="ROW">
 
	<xsl:variable name="currid">
		<xsl:value-of select="Id"/>
	</xsl:variable>
	<xsl:variable name="nextid">
		<xsl:value-of select="following-sibling::*[1]/Id"/>
	</xsl:variable>
	<xsl:variable name="previd">
		<xsl:value-of select="preceding-sibling::*[1]/Id"/>
	</xsl:variable>
	<xsl:variable name="adr_suppr">
		<xsl:value-of select="ADR_SUPPRIMEE"/>
	</xsl:variable>
 
	<xsl:variable name="currad">
		<xsl:value-of select="Adresse"/>
	</xsl:variable>
	<xsl:variable name="nextad">
		<xsl:value-of select="following-sibling::*[1]/Adresse"/>
	</xsl:variable>
	<xsl:variable name="prevad">
		<xsl:value-of select="preceding-sibling::*[1]/Adresse"/>
	</xsl:variable>
 
 
	<TABLE  border='1'  width='100%' bordercolor ='blue' >
	<xsl:if test="@num = '1' or $previd != $currid or $previd=$currid">
		<!-- dans ce cas, on est en début de fiche => on utilise la classe fiche-recherche-top -->
		<xsl:attribute name="class">fiche-recherche-top</xsl:attribute>
	</xsl:if>
	<xsl:if test="$previd=$currid and $nextid = $currid ">
		<!-- dans ce cas, on est  en milieu de fiche => on utilise la classe fiche-recherche-middle -->
		<xsl:attribute name="class">fiche-recherche-middle</xsl:attribute>
	</xsl:if>
	<xsl:if test="$nextid != $currid">
		<!-- dans ce cas, on est en fin de fiche => on utilise la classe fiche-recherche-bottom -->
		<xsl:attribute name="class">fiche-recherche-bottom</xsl:attribute>
	</xsl:if>
	<!--test si le précédent est le meme ou non-->
	<xsl:if test="@num = '1' or $previd != $currid">
		<THEAD>
			<TH align='left'>
				<A target='frCenter' title='Aller à la fiche contact' class='header'>    
				<xsl:attribute name="href">/MCIC/Contact?contid=<xsl:value-of select="Id"/></xsl:attribute>
				<xsl:value-of select="CONT_PRENOM"/>*<xsl:value-of select="CONT_NOM"/>
				( <xsl:value-of select="NUM_CLIENT"/> )<BR/>
				</A>
			</TH>
		</THEAD>
 
	</xsl:if>
 
		<TBODY>
 
			<TR>
				<TD>
					<xsl:value-of select="Adresse"/><BR/>
				</TD>
			</TR>
			<TR>
				<TD>
					<xsl:value-of select="Localité"/><BR/>
				</TD>
			</TR>
 
 
		</TBODY>
 
	</TABLE>
		<xsl:if test="$nextid != $currid">
		<BR/>
		</xsl:if>
	</xsl:template>
 
 
 
</xsl:stylesheet>
Et voici un exemple de ce que je voudrais avoir en retour

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
SOC. & DE SANTE ASBL ASSOC. CHRETIENNE DES INSTITUTIONS ( 4784314 )
AVENUE DE LA PAIRELLE, 33 B3
5000 NAMUR
Code indice : 2608
Code indice : 2640
Code indice : 2757
Code indice : 2853
Code indice : 2664
 
AVENUE DE LA PAIRELLE, 33-34 4
5000 NAMUR 
Code indice : 2608
Code indice : 2640
Code indice : 2853
Code indice : 2664
Code indice : 2757
Je voudrais donc qu'il affiche une seul fois le nom, là, il n'y a pas de problème, je voudrais qu'il affiche les 2 adresses si elles sont différentes et je voudrais qu'il affiche tout les codes indices en relation avec l'adresse.

Si vous avez une piste, je suis preneur

D'avance merci à tous pour votre aide