Bonjour à tous,
je tiens à remercie le site développez.com qui m'a souvent aidé, mais là j'ai besoin de votre aide car je n'ai rien trouvé.
Je débute en XML/XSL et j'ai un problème ou je n'ai pour l'instant pas trouvé de solution.
J'ai un fichier XML ci-dessous qui contient des personnes, et dans les personne il y a un champ numéro.
Ce que je voudrai c'est avec la mise en forme d'un fichier XSL, lorsque pour la première fois je trouve une balise <Numero> qui est supérieur à zéro, mettre dans une liste tous les numéros. Je voudrai donc un résultat comme ci-dessous.
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 <?xml version="1.0"?> <?xml-stylesheet href="test.xsl" type="text/xsl"?> <test> <Personne> <Numero></Numero> <Nom>Blanc</Nom> <Prenom>Michel</Prenom> <Adresse>Lille</Adresse> </Personne> <Personne> <Numero>6</Numero> <Nom>Martin</Nom> <Prenom>Jean</Prenom> <Adresse>Paris</Adresse> </Personne> <Personne> <Numero>20</Numero> <Nom>Michu</Nom> <Prenom>Maurice</Prenom> <Adresse>Lyon</Adresse> </Personne> </test>
Le problème c'est que je voulais utiliser une variable (appelé ici boolean) et la modifier une fois que j'ai fais la liste (mettre la valeur à 1), mais on ne peut pas modifier une variable en XSL.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Nom : Blanc Prénom : Michel Adresse : Lille Nom : Martin Prénom : Jean Adresse : Paris Liste : 6 , 20 Nom : Michu Prenom : Maurice Adresse : Paris
Voila et merci pour votre aide
Mon code 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 <?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" xmlns:fo="http://www.w3.org/1999/XSL/Format"> <xsl:output method="text" version="1.0" encoding="UTF-8" indent="yes"/> <xsl:variable name="boolean"><xsl:value-of select="0"/></xsl:variable> <xsl:template match="/"> <xsl:for-each select="//Personne"> <xsl:variable name="numero" select="Numero"/> <xsl:value-of select="Nom"/> <xsl:value-of select="Prenom"/> <xsl:value-of select="Adresse"/> <xsl:if test="($numero > 0)"> <xsl:if test="($boolean='0')"> <xsl:for-each select="//Personne">> <xsl:variable name="temp_numero" select="Numero"/> <xsl:if test="($temp_numero> 0)"> <xsl:value-of select="$temp_numero"/> </xsl:if> </xsl:for-each> </xsl:if> </xsl:if> </xsl:for-each> </xsl:template> </xsl:stylesheet>
Partager