Bonjour,

Voila je voulais savoir s'il était possible d'utiliser une condition if dans une bouclke for-each en XML !!?

plus précisemment, j'ai mon 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
 
<OtherInvoiceReferences>
			<core:ReferenceCoded>
				<core:ReferenceTypeCoded>[4]</core:ReferenceTypeCoded>
				<core:PrimaryReference>
					<core:RefNum>[5]</core:RefNum>
				</core:PrimaryReference>
			</core:ReferenceCoded>
			<core:ReferenceCoded>
				<core:ReferenceTypeCoded>[6]</core:ReferenceTypeCoded>
				<core:PrimaryReference>
					<core:RefNum>[7]</core:RefNum>
					<core:RefDate>[7a]</core:RefDate>
				</core:PrimaryReference>
			</core:ReferenceCoded>
			<core:ReferenceCoded>
				<core:ReferenceTypeCoded>[8]</core:ReferenceTypeCoded>
				<core:PrimaryReference>
					<core:RefNum>[9]</core:RefNum>
				</core:PrimaryReference>
			</core:ReferenceCoded>
			<core:ReferenceCoded>
				<core:ReferenceTypeCoded>[9a]</core:ReferenceTypeCoded>
				<core:ReferenceTypeCodedOther>[9b]</core:ReferenceTypeCodedOther>
				<core:PrimaryReference>
					<core:RefNum>[9c]</core:RefNum>
				</core:PrimaryReference>
			</core:ReferenceCoded>
			<core:ReferenceCoded>
				<core:ReferenceTypeCoded>[9d]</core:ReferenceTypeCoded>
				<core:ReferenceTypeCodedOther>[9e]</core:ReferenceTypeCodedOther>
				<core:PrimaryReference>
					<core:RefNum>[9f]</core:RefNum>
				</core:PrimaryReference>
			</core:ReferenceCoded>
		</OtherInvoiceReferences>
je veux recupérer les données entre crochet :
[4];[5];[6];[7];[7a];[8];[9];[9a];[9b];[9c];[9d];[9e];[9f]
J'ai choisi d'utiliser une boucle for-each pour parcourir les données :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
	<xsl:for-each select="o:Invoice/o:InvoiceHeader/o:InvoiceReferences/o:OtherInvoiceReferences/core:ReferenceCoded ">
		<xsl:value-of select="core:ReferenceTypeCoded "></xsl:value-of><xsl:text>;</xsl:text>
		<xsl:value-of select="core:PrimaryReference/core:RefNum "></xsl:value-of><xsl:text>;</xsl:text>
		<xsl:value-of select="core:PrimaryReference/core:RefDate "></xsl:value-of><xsl:text>;</xsl:text>
		<xsl:value-of select="core:ReferenceTypeCodedOther "></xsl:value-of><xsl:text>;</xsl:text>
	</xsl:for-each>
le souci c'est que quand la données n'existe pas il me met des ";" dont je n'est pas besoin. Dans ce cas, est-ce possible d'utiliser une condition if ?

Si c'est possible comment faire le test d’existence de données ?

Est ce que je fais fausse route ? existe t il une méthode plus efficace ?

Merci a tous !