Bonjour, bonsoir

voila petit probleme de modification de mon fichier XML via ma feuille de style XSL

mon but est de partir d'un fichier xml comme ca
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
<livres>
        <BD nom="Mu" librairie="lib2" prix="20"/>
        <BD nom="La ballade de la mer salée" librairie="lib2" prix="15"/>
        <BD nom="Mu" librairie="lib1" prix="21"/>
        <roman nom="Les taupes" librairie="lib2" prix="16"/>
        <roman nom="Les gens de smiley" librairie="lib3" prix="11"/>
        <BD nom="Mu" librairie="lib3" prix="16"/>
        <roman nom="Les taupes" librairie="lib1" prix="19"/>
</livres>
et de generer le meme fichier XML mais seulement avec les libre dont le prix est le plus bas, du style :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
<livres>
        <BD nom="La ballade de la mer salée" librairie="lib2" prix="15"/>
        <roman nom="Les taupes" librairie="lib2" prix="16"/>
        <roman nom="Les gens de smiley" librairie="lib3" prix="11"/>
        <BD nom="Mu" librairie="lib3" prix="16"/>
</livres>
pour cela j'utilise la feuille de style suivante :
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
 
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" indent="yes" encoding="ISO-8859-1" />
 
        <xsl:template match="*">
                <xsl:variable name="prix" select="@prix" />
                <xsl:variable name="nom" select="@nom" />
                <xsl:variable name="minprix" select="@prix"/>
                <xsl:for-each select="*/@nom[name() = $nom]">
                         <xsl:if test="$prix &lt;= @prix"> <!-- &lt;= signifie inférieur  ou egal -->
                              <xsl:variable name="minprix" select="@prix"/>
                         </xsl:if>
                </xsl:for-each>
                <xsl:if test="$prix &lt;= $minprix">
                        <xsl:copy>
                             <xsl:apply-templates select="node()|@*"/>
                        </xsl:copy>
                </xsl:if>
        </xsl:template>
 
	<xsl:template match="text()">
		<xsl:value-of select="."/>
	</xsl:template>
 
	<xsl:template match="@*">
		<xsl:attribute name="{name()}"><xsl:value-of select="."/></xsl:attribute>
	</xsl:template>
 
</xsl:stylesheet>
donc l'idée c de parcourir toute les balises ou le nom est le meme et d'afficher la balise seulement si son prix est le plus petit

mais ca marche pas du tout, si quelqu'un a une idée ca m'aiderait pas mal (c'est meme peut etre une simple de syntaxe je suis pas tres bon en xsl :s)


merci d'avance