Faire une boucle qui affiche des liens

Eléphant du PHP | 149 Messages

01 avr. 2008, 17:34

Bonjour,

Je suis débutant en xsl et je n'arrive pas à trouver mon bonheur sur la toile par rapport à mon problème.

Le voici :

Je reçois une valeur en xml que je dois afficher en xsl avec php, tout ça fonctionne bien
Seulement Voila, dans mon document xml, je reçois ceci :

<nombre>3</nombre>

Je dois faire une boucle qui va de 1 à 4 et qui m'affiche un lien avec cette valeur sauf si elle est égale à <nombre>
exemple où <nombre> = 3, xsl doit me retourner ceci:

Code : Tout sélectionner

<a href='index.php?nombre=1'>1</a> <a href='index.php?nombre=2'>2</a> <span class='céLeNombre'>3</span> <a href='index.php?nombre=4'>4</a>
Avez-vous une idée? :)
"Si tu travailles avec un marteau-piqueur pendant un tremblement de terre, désynchronise-toi, sinon tu travailles pour rien."
JC Vandamme.

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

01 avr. 2008, 19:55

Quelque chose comme

Code : Tout sélectionner

<xsl:choose> <xsl:when test="nombre = 3"> <span class='céLeNombre'>3</span> </xsl:when> <xsl:otherwise> <a href='{concat("index.php?nombre=", nombre)}'><xsl:value-of select="nombre" /></a> </xsl:otherwise> </xsl:choose>
Je te laisse débugger à ta convenance. Si ça ne fonctionne toujours pas, merci de poster un exemple le plus court possible de ton XML et de ton XSL.

Eléphant du PHP | 149 Messages

02 avr. 2008, 09:48

Merci c super mais je me pose tout de même une question, dans ce cas précis il va falloir que je réécrive 4 fois ce code pour afficher mes 4 liens ?

Code : Tout sélectionner

<xsl:choose> <xsl:when test="nombre = 1"> <span class='céLeNombre'>1</span> </xsl:when> <xsl:otherwise> <a href='{concat("index.php?nombre=", nombre)}'><xsl:value-of select="nombre" /></a> </xsl:otherwise> <xsl:when test="nombre = 2"> <span class='céLeNombre'>2</span> </xsl:when> <xsl:otherwise> <a href='{concat("index.php?nombre=", nombre)}'><xsl:value-of select="nombre" /></a> </xsl:otherwise> <xsl:when test="nombre = 3"> <span class='céLeNombre'>3</span> </xsl:when> <xsl:otherwise> <a href='{concat("index.php?nombre=", nombre)}'><xsl:value-of select="nombre" /></a> </xsl:otherwise> <xsl:when test="nombre = 4"> <span class='céLeNombre'>4</span> </xsl:when> <xsl:otherwise> <a href='{concat("index.php?nombre=", nombre)}'><xsl:value-of select="nombre" /></a> </xsl:otherwise> </xsl:choose>
Une partie du XML:

Code : Tout sélectionner

<?xml version="1.0" encoding="ISO-8859-1"?> <liste_articles> <dimension>1557013</dimension> <nombre>4</nombre> <taxe>T.T.C</taxe> <article> <codeappel>10</codeappel> <designation>155/70 TR 13 CR322.............75T</designation> <bf>58,60</bf> <achat>58,60</achat> <remise>30,00</remise> <vente>41,02</vente> <service>st1</service> <total>82,04</total> <marge>-35,16</marge> <pourcent>-42,86</pourcent> </article> </liste_articles>
Bon en fait j'ai trouvé :

Code : Tout sélectionner

<xsl:template name="boucle"> <xsl:param name="debut" select="1" /> <xsl:param name="fin" select="4" /> <xsl:choose> <xsl:when test="nombre = $debut"> <span class='céLeNombre'><xsl:value-of select="$debut" /></span> </xsl:when> <xsl:otherwise> <a href='{concat("index.php?nombre=", $debut)}'><xsl:value-of select="$debut" /></a> </xsl:otherwise> </xsl:choose> <br /> <xsl:if test="$debut < $fin"> <xsl:call-template name="boucle"> <xsl:with-param name="debut" select="($debut)+1" /> <xsl:with-param name="fin" select="$fin" /> </xsl:call-template> </xsl:if> </xsl:template>
C plus propre que ce que j'avais mis avant!

Merki!
"Si tu travailles avec un marteau-piqueur pendant un tremblement de terre, désynchronise-toi, sinon tu travailles pour rien."
JC Vandamme.