Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Outils > XMLRAD
XMLRAD Environnement de développement Web XML/XSL. Avant de poster -> F.A.Q XMLRAD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/06/2004, 11h03   #1
EJ
Nouveau Membre du Club
 
Inscription : mai 2004
Messages : 84
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 84
Points : 34
Points : 34
Envoyer un message via ICQ à EJ Envoyer un message via AIM à EJ Envoyer un message via MSN à EJ
Par défaut affichage de tableau dynamique

Alors voilà, je voudrais afficher un tableau.
Déjà le contenu n'est pas entièrement dans le xml: j'ai 1 fois le texte dans mon xml et je veux l'afficher plusieurs fois.
Jusque là il suffirait de créer un template et de l'afficher le nombre de fois necessaires.
Mais là où ça devient vraiment coton, c'est que ce nombre de fois où je veux afficher le texte n'est pas fixe: en fonction d'un paramètre, je vais afficher 2 lignes de 3 colonnes, 3 lignes de 3 colonnes etc.
Premier réflexe, boucle for. Heu bon ça va, je sais xml c'est pas de la programmation machin... Donc maintenant j'en suis là:
Code :
1
2
<xsl:variable name="nb_lignes">15</xsl:variable>
<xsl:variable name="i">0</xsl:variable>
En haut de mon doc, je déclare mes variables en global parce que je ne veux pas avoir de problème avec les noeuds et tout ça (j'ai lu quelque chose à ce sujet ici )
Code :
<xsl:call-template name="boucle_etq"><xsl:with-param name="i" select="10"/></xsl:call-template>
est l'appel de la "boucle"
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
<xsl:template name="boucle_etq"> 
	<xsl:param name="i" select="0"/>
		<xsl:if test="$i &lt; $nb_lignes"> 	
		 <tr>
		    <td>
		       <xsl:value-of select="ETIQUETTE/ANO_NUM"/>
		    </td>
		    <td>
		       <xsl:value-of select="ETIQUETTE/ANO_NUM"/>
		    </td>
			<td>
				<xsl:value-of select="ETIQUETTE/ANO_NUM"/>
			</td>
		</tr>
		<tr>
			<td class="clBarreCode">
				<xsl:value-of select="ETIQUETTE/ANO_NUM_TRANS"/>
			</td>
			<td class="clBarreCode">
				<xsl:value-of select="ETIQUETTE/ANO_NUM_TRANS"/>
			</td>
			<td class="clBarreCode">
				<xsl:value-of select="ETIQUETTE/ANO_NUM_TRANS"/>
			</td>
		</tr>
			<xsl:call-template name="boucle_etq"> 
				<xsl:with-param name="i" select="number($i)+1"/> 
			</xsl:call-template> 
			</xsl:if>
</xsl:template>
est le code qui me permet d'afficher à chaque fois le numéro et le numéro dans la police de code barre.
Ok c'est bon.
Sauf que nb_lignes je l'avais mis à 15 pour l'instant, histoire que ça fonctionne déjà ça, mais j'arrive pas à lui expliquer maintenant que nb_lignes va venir de mon xml, je lui colle un value-of ben rien du tout...
En plsu actuellement ln_lignes vaut 15 et il fait 5 lignes... En même temps c'est ce que je voulais, puisque mon but à l'origine c'est d'avoir le nombre de texte div 3 pour savoir les lignes, mais là je ne lui ai pas demandé et ça m'étonnerait qu'il l'ait pigé tout seul, que c'est ce que je voulais... En plus si je mets 30 il me fait 20 lignes et si ce n'est pas un multiple de 3, il n'affiche rien... Comprends pas...
__________________
Il existe 10 catégories de gens.
Ceux qui comprennent le binaire et ceux qui ne le comprennent pas...
EJ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2004, 11h27   #2
RDM
Membre Expert
 
Inscription : mars 2002
Messages : 1 426
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 1 426
Points : 1 546
Points : 1 546
Envoyer un message via ICQ à RDM
eh oui, le XSL ce n'est pas de la programmation impérative, mais fonctionnelle.

donc tu fais fausse route en faisant ca.
il faut que tu génère autant de fois ta donnée XML sur laquelle la template va matcher autant de fois que l'element est présent donc faire le nombre de ligne que tu désires.
__________________
RDM
Tout Est Relatif
Rubrique XMLRAD: http://xmlrad.developpez.com
FAQ XMLRAD: http://xmlrad.developpez.com/faq/
RDM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2004, 11h33   #3
EJ
Nouveau Membre du Club
 
Inscription : mai 2004
Messages : 84
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 84
Points : 34
Points : 34
Envoyer un message via ICQ à EJ Envoyer un message via AIM à EJ Envoyer un message via MSN à EJ
Non ça c'est pas possible, j'ai essayé mais c'est trop monstreux comme fichier xml. En plus au niveau de la requête, vu que le nombre de lignes que je veux vient d'une autre requête, j'imagine même pas comment je devrais les imbriquer...
Mon code fonctionne, sauf que j'en ai pas le nombre que je demande: je vois bien qu'il boucle sur lui même mais j'arrive pas à trouver la formule: il ne m'en affiche pas le double, il ne m'en affiche pas le nombre +1...

Edit: Apparemment qd je donne nb_lignes=15, il fait 5, pour 16, 6, pour 20, 10 etc... Pourquoi fait-il nb_ligne -10?
Je me doute bien que c'est moi qui le lui ait demandé, mais là je vois pas où c'est...
__________________
Il existe 10 catégories de gens.
Ceux qui comprennent le binaire et ceux qui ne le comprennent pas...
EJ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2004, 12h45   #4
RDM
Membre Expert
 
Inscription : mars 2002
Messages : 1 426
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 1 426
Points : 1 546
Points : 1 546
Envoyer un message via ICQ à RDM
Citation:
Envoyé par EJ
Non ça c'est pas possible, j'ai essayé mais c'est trop monstreux comme fichier xml. En plus au niveau de la requête, vu que le nombre de lignes que je veux vient d'une autre requête, j'imagine même pas comment je devrais les imbriquer...
C'est monstrueux comment le fichier XML ainsi généré ?
peux-tu me décrire ce que tu fais et ce que tu veux obtenir peut etre que l'on peut trouver une solution alternative pour obtenir le meme résultat.
ca fait des années que je fais du XSL et je n'ai jamais eu besoinde faire une boucle for !
__________________
RDM
Tout Est Relatif
Rubrique XMLRAD: http://xmlrad.developpez.com
FAQ XMLRAD: http://xmlrad.developpez.com/faq/
RDM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2004, 13h38   #5
EJ
Nouveau Membre du Club
 
Inscription : mai 2004
Messages : 84
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 84
Points : 34
Points : 34
Envoyer un message via ICQ à EJ Envoyer un message via AIM à EJ Envoyer un message via MSN à EJ
Ben en fait, dans une première table, je récupère le nom et le prénom de l'étudiant et dans une autre, son numéro d'Anonymat en clair et en transcodé (avec une police de code barres) = ma première requête
Dans une autre table encore, la session, l'étape et l'épreuve = ma 2ème requête requête
Enfin dans une denrière, le nombre d'épreuves auxquelles l'étudiant doit participer = ma dernière requête

Donc pour lier, il faudrait lier le nombre d'épreuves auxquelles le candidat doit participer avec son numéro d'anonymat, puisque c'est ce numéro que je veux afficher nombre d'épreuve +1 pour imprimer la planche d'étiquettes

Or si la requête pour récupérer l'étudiant est assez simple, celle pour compter les épreuves est déjà assez complexe (2 select imbriqués, environ 20 lignes de condition en WHERE ), ça c'est mon premier problème, je ne suis à mon avis pas capable de les bidouiller, parce que je ne sais pas comment lui dire qu'il sélectionne autant de fois le numéro que j'ai d'épreuves (et en plus quasiment à chaque fois que j'ai bidouillé une requête, il a fallu repasser derrière moi parce que je m'étais plantée).
D'autre part, à l'origine on m'a demandé de faire une boucle parce que le but est que le fichier xml soit le plus léger possible vu que plusieurs personnes font plusieurs requêtes sur le même serveur en même temps et qu'on veut minimiser le temps d'attente. On a fait des tests ce matin, c'est peut-être pas si significatif que ça, mais j'en reviens toujours au même problème que je ne sais pas modifier ces requêtes correctement...
__________________
Il existe 10 catégories de gens.
Ceux qui comprennent le binaire et ceux qui ne le comprennent pas...
EJ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2004, 14h19   #6
EJ
Nouveau Membre du Club
 
Inscription : mai 2004
Messages : 84
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 84
Points : 34
Points : 34
Envoyer un message via ICQ à EJ Envoyer un message via AIM à EJ Envoyer un message via MSN à EJ
Argh!
Je sors, je dis plus rien... l'andouille que je suis avait collé "10" comme valeur à "i" dans l'appel, tu m'étonnes que j'en avais 10 de moins, quelle cruche!
Bon ok ben maintenant j'ai collé un div 3 pour avoir ma variable comme nombre de ligne et voilà, c'est super ça fonctionne!
Oui RDM, la boucle for n'est sans doute pas la solution la plus logique dans la philosophie xml, mais c'est ce qu'on m'a demandé...
__________________
Il existe 10 catégories de gens.
Ceux qui comprennent le binaire et ceux qui ne le comprennent pas...
EJ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2004, 16h28   #7
RDM
Membre Expert
 
Inscription : mars 2002
Messages : 1 426
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 1 426
Points : 1 546
Points : 1 546
Envoyer un message via ICQ à RDM
au passage le temps passé sera surtout à executer la requête SQL que de générer le document XML...
__________________
RDM
Tout Est Relatif
Rubrique XMLRAD: http://xmlrad.developpez.com
FAQ XMLRAD: http://xmlrad.developpez.com/faq/
RDM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2004, 16h48   #8
EJ
Nouveau Membre du Club
 
Inscription : mai 2004
Messages : 84
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 84
Points : 34
Points : 34
Envoyer un message via ICQ à EJ Envoyer un message via AIM à EJ Envoyer un message via MSN à EJ
Oui c'est vrai mais bon en fait j'associe les deux au sens où lorsque ma requête est trop mal faite, il ne me génère même pas le xml (oui je t'assure, ça m'est déjà arrivé, au bout de 15 secondes il a abandonné et j'avais oublié où ça se réglait, alors j'ai optimisé, heu pardon j'ai fait optimiser ma requête... )
Disons qu'en fait à terme il peut y avoir 6000 étudiants alors ça fait un peu monstrueux...
__________________
Il existe 10 catégories de gens.
Ceux qui comprennent le binaire et ceux qui ne le comprennent pas...
EJ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2004, 09h38   #9
EJ
Nouveau Membre du Club
 
Inscription : mai 2004
Messages : 84
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 84
Points : 34
Points : 34
Envoyer un message via ICQ à EJ Envoyer un message via AIM à EJ Envoyer un message via MSN à EJ
Et sinon, RDM, merci pour ta magnifique phrase que je vais coller dans mon rapport de stage, parce que franchement ça en jette:
Citation:
G) Récursivité
XSL n'est pas de la programmation impérative, mais fonctionnelle : les boucles for, while et repeat n’ont plus de raison d’être puisqu’il faut générer la donnée XML autant de fois que l’on souhaite afficher l’élément.
Terrible! Merci! ;-)
__________________
Il existe 10 catégories de gens.
Ceux qui comprennent le binaire et ceux qui ne le comprennent pas...
EJ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2004, 09h53   #10
RDM
Membre Expert
 
Inscription : mars 2002
Messages : 1 426
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 1 426
Points : 1 546
Points : 1 546
Envoyer un message via ICQ à RDM
tu peux rajouter que c'est de type fonctionnelle pure se rapprochant d'Haskell
__________________
RDM
Tout Est Relatif
Rubrique XMLRAD: http://xmlrad.developpez.com
FAQ XMLRAD: http://xmlrad.developpez.com/faq/
RDM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2004, 11h55   #11
EJ
Nouveau Membre du Club
 
Inscription : mai 2004
Messages : 84
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 84
Points : 34
Points : 34
Envoyer un message via ICQ à EJ Envoyer un message via AIM à EJ Envoyer un message via MSN à EJ
Heu... Attends je vais chercher qui est ce Haskell d'abord
Citation:
Haskell est un langage de programmation fonctionnelle
pure basé sur la réduction de graphes
R.Bird, Introduction to Functional Programming using Haskell,
Prentice Hall
Ok déjà c'est pas un mec mais un langage... J'ai l'air maligne
C'est quoi les graphes...?
Nan je veux bien mettre des mots pour faire classe, mais si je les comprends pas niet... ;-)
__________________
Il existe 10 catégories de gens.
Ceux qui comprennent le binaire et ceux qui ne le comprennent pas...
EJ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2004, 12h49   #12
RDM
Membre Expert
 
Inscription : mars 2002
Messages : 1 426
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 1 426
Points : 1 546
Points : 1 546
Envoyer un message via ICQ à RDM
hmmm, là ca se complique, tu entres dans le monde du fonctionnel et du lambda calcul. mais pour résumé, l'evaluation des expressions dans un langages fonctionnel pout se représenter par un arbre. L'exemple le plus parlant est l'evaluation de la suite de Fibonacci. en evaluation fonctionnelle classique on remarque que l'on calcul plsuieurs fois les memes branches. Les langages comme Haskell, construise en fait un graphe (au passage un arbre est un graphe particulier) pour eviter de recalculer des termes qui sont présents a différents niveaux dans l'arbre.

sinon pour les graphes en eux meme: http://fr.wikipedia.org/wiki/Th%C3%A9orie_des_graphes

ca fait parti des cours classiques d'algorithmie.
__________________
RDM
Tout Est Relatif
Rubrique XMLRAD: http://xmlrad.developpez.com
FAQ XMLRAD: http://xmlrad.developpez.com/faq/
RDM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2004, 10h58   #13
EJ
Nouveau Membre du Club
 
Inscription : mai 2004
Messages : 84
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 84
Points : 34
Points : 34
Envoyer un message via ICQ à EJ Envoyer un message via AIM à EJ Envoyer un message via MSN à EJ
Heu... Je vais me contenter de ce que j'avais déjà mis, si tu veux bien...
__________________
Il existe 10 catégories de gens.
Ceux qui comprennent le binaire et ceux qui ne le comprennent pas...
EJ est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h04.


 
 
 
 
Partenaires

Hébergement Web