D'après mes quelques connaissances de XSLT, on est obligé de faire la
somme à l'aide de la récursivité. Je peux me tromper mais voici une
éventuelle solution :
<xsl:template match="produit">
<xsl:element name="produit">
<xsl:attribute name="total"><xsl:apply-template
select="commande[position()=1]" ><xsl:with-param name="soustotal"
select="0"/></xsl:applytemplate></xsl:attribute>
</xsl:element>
</xsl:template>
<xsl:template match="commande">
<xsl:param name="soustotal"/>
<xsl:choose>
<xsl:when test="position()=last()">
<xsl:value-of select="$soustotal + @quantite * @prix_unitaire"/>
</xsl:when>
<xsl:otherwise>
<xsl:apply-template
select="following-sibling::commande[position()=1]"><xsl:with-param
name="soustotal" select="$soustotal + @quantite *
@prix_unitaire"/></xsl:applytemplate>
</xsl:otherwise>
</xsl:template>
Bon, je suis pas vraiment sur de tout (surtout le following-sibling pour
la commande suivante). L'idée est d'appliquer le template sur les
"commande" successives avec un paramètre "soustotal" qu'on incrémente de
"@quantite * @prix_unitaire" à chaque fois.
J'espère que cela répondra à votre problème et qu'il n'y a pas trop
d'erreur dans le code ...
Cordialement,
Jérôme
COUTHURES Alain wrote:
>Bonjour,
>
>Je sèche lamentablement sur la possibilité de faire en une seule passe XSLT 1.0 la somme des produits pour un document initial du style :
>
><produit>
> <commande quantite="2" prix_unitaire="25.6"/>
> <commande quantite="1" prix_unitaire="24.8"/>
></produit>
>
>Afin d'obtenir quelque chose comme :
>
><produit total="76"/>
>
>Merci de vos réponses.
>
>Cordialement,
>
>Alain COUTHURES
>Ecole Nationale de la Magistrature
>Bordeaux - Paris
>
>--
>Devenez redacteur <XML>fr et contribuez au developpement du
>xml francophone (http://xmlfr.org/infos/redacteurs/) !
>
>Liste de diffusion "xml-tech@xmlfr.org" (http://xmlfr.org).
>
>Cette liste est a votre disposition pour discuter en francais de
>tout sujet technique lie a XML.
>
>Pour resilier votre abonnement, envoyez un message contenant
>la commande "unsubscribe" a xml-tech-request@xmlfr.org
>(mailto:xml-tech-request@xmlfr.org?Subject=unsubscribe)
>
>
>
>
--
Devenez redacteur <XML>fr et contribuez au developpement du
xml francophone (http://xmlfr.org/infos/redacteurs/) !
Liste de diffusion "xml-tech@xmlfr.org" (http://xmlfr.org).
Cette liste est a votre disposition pour discuter en francais de
tout sujet technique lie a XML.
Pour resilier votre abonnement, envoyez un message contenant
la commande "unsubscribe" a xml-tech-request@xmlfr.org
(mailto:xml-tech-request@xmlfr.org?Subject=unsubscribe)
Received on Wed Oct 6 18:21:21 2004