Help: Comment faire la somme des Produits en XSLT - XML/XSL - Programmation
Marsh Posté le 16-01-2006 à 14:43:18
Salut,
En fait, je voudrais afficher la valeur du résultat de la variable $result qui est la moyenne d'un etudiant.
Marsh Posté le 16-01-2006 à 21:35:53
Jarod511 a écrit : Salut, |
Donc pour l'étudiant 1, tu veux voir ( 15 + 12) / 2 = 13,5 et le lien entre ETUDIANT et NOTE se fait avec resp. @ident et @etudiant?
Si je demande un exemple de ce que tu veux en sortie c'est parce que je vais pas me taper ton code qui marche pas, je préfère partir sur des bases simples et claires...
Marsh Posté le 17-01-2006 à 11:48:19
Salut,
oui c'est exactment ça. En fait, j'essai de le faire pour le moment que pour un seul étudiant pour après le généraliser pour tous les étudiants.
Je pense qu'il faut que je crée une fonction récursive.
Marsh Posté le 17-01-2006 à 12:52:03
Le xml
Code :
|
Le stylesheet
Code :
|
et le resultat ( en html)
Code :
|
Marsh Posté le 18-01-2006 à 19:48:23
Salut,
Merci beaucoup avander pour ton aide. J'etais plutôt parti sur une fonction récursive du style:
Code :
|
Marsh Posté le 19-01-2006 à 10:42:57
Pourquoi tant de haine
En XSLT la récursivité permet de résoudre certaines carences de la version 1.0 mais c'est une solution à utiliser avec parcimonie ( c'est valable dans tous les langages d'ailleurs).
Par contre comme tu vois le vieil adage ' il faut diviser pour règner' s'y adapte à merveille... tu laisse faire le moteur XSLT et tu écris de petits templates pour les balises qui t'intéressent...
Marsh Posté le 13-01-2006 à 19:06:02
Bonjour,
Ca fait un moment que je sèche littéralement sur un problème que je n'arrive pas à résoudre en XSLT. J'aurais besoin que quelqu'un m'aide, en plus je suis débutant en XML. Ce que je voudrais faire c'est calculer la moyenne d'un étudiant sachant que chaque note à un coefficient. Le problème, c'est que lorsque je veux faire la somme des produits ça ne marche pas j'ai : The Value is not a node-set. Je ne sais vraiment plus comment m'y prendre pour ce calcul qui est pourtant simple. J'espère que quelqu'un pourra m'aider sur ce forum. Je mets mon code XML et mon code XSLT ci-dessous:
MON CODE XML:
<TEACHING>
<ETUDIANT ident="1" >
<NOM>toto</NOM>
</ETUDIANT>
<ETUDIANT ident="2" >
<NOM>bill</NOM>
</ETUDIANT>
...
<NOTE ident="1" etudiant="1">
<SCORE>15</SCORE>
</NOTE>
<NOTE ident="2" etudiant="1">
<SCORE>12</SCORE>
</NOTE>
...
<COEFFICIENT ident="1" note="1"><VALEUR>2</VALEUR></COEFFICIENT>
...
</TEACHING>
MON CODE XSLT:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:for-each select="TEACHING/ETUDIANT">
<xsl:variable name="student3" select="@ident"/>
<xsl:variable name="course3" select="@note"/>
<xsl:if test="$student3=1 >
<xsl:variable name="sumnote" select="../NOTE[@etudiant=$student3]/SCORE"/>
<xsl:variable name="sumcoef" select="../COEFFICIENT[@note]/VALEUR"/>
<xsl:variable name="result" select="sum($sumnote*sumcoef) div
sum($sumcoef)"/>
<xsl:value-of select="$result" />
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>