Faire une liste une seule fois
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.
Code:
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> |
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:
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 |
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.
Voila et merci pour votre aide
Mon code XSL :
Code:
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> |