XSLT somme par type de produit - XML/XSL - Programmation
Marsh Posté le 06-01-2011 à 16:49:14
Je suis arrivé à faire un template qui fait presque ce que je veux à part pour le calcul quand plusieurs emplacement de stockage sont définits.
En gros marche très bien pour categorie1 mais pas pour 2
Code :
|
Je bloque vraiment si quelqu'un peut m'aider
Marsh Posté le 06-01-2011 à 23:43:16
En gros pour me débloquer, je voudrais savoir s'il est possible de recupérer la categorie correspondante pour .//following::quantite[position()=$Compteur]
J'ai vraiment tout essayé et impossible. J'aurai vraiment besoin d'aide rapidement car j'en ai marre d'être bloqué
Marsh Posté le 07-01-2011 à 21:13:50
Bon, si tu as un processeur XSLT qui supporte le standard 2.0 comme Saxon, pas de problème, tu peux utiliser l'élément xsl:for-each-group
Ceci répond à ton problème (pour un nombre quelconques de catégories):
On groupe les éléments quantité par la valeur de l'élément catégorie du produit, et pour chaque groupe, on somme les éléments du groupe avec la fonction standard sum().
Code :
|
Le résultat après processing par saxon sur ton document initial est:
categorie1: 3400 |
Bon par contre, si tu n'as pas de processeur XSLT qui supporte la version 2 du standard (comme hélas, une bonne partie des browser internet), c'est en général assez difficile, tu peux peut être t'inspirer de ce document: http://www.xml.com/lpt/a/951 (section Grouping Simplified) qui a une version xsl:for-each-group et une (complexe) sans, pour un même résultat.
A+,
Marsh Posté le 06-01-2011 à 15:26:30
Bonjour,
Ça fait maintenant 2 jours que je me triture le cerveau pour faire la somme du nombre de produit regrouper par categorie. Etant débutant en XSLT j'ai vraiment besoin de votre aide.
Un exemple pour vous expliquer
Je souhaite donc ici afficher :
categorie1 : quantite
categorie2 : quantite
Mais je n'y arrive vraiment pas afficher la somme total des quantités par appel récursif pas de soucis mais la par catégorie je bloque. Donc si on pouvait m'aider ca serait génial.
Merci d'avance
Message édité par titi6913 le 06-01-2011 à 15:40:00