IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XSL/XSLT/XPATH XML Discussion :

[XSLT] for-each et variables


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 120
    Par défaut [XSLT] for-each et variables
    Bonjour,

    J ai des données stockées au format xml de type :
    CLIENT
    PRODUIT
    QUANTITE
    PRIX
    QUANTITE_BASE

    QUANTITE_BASE est identique pour toutes les données du couple CLIENT PRODUIT.

    Je dois dans un tableau créer une nouvelle donnée QUANTITE_DE_BASE et modifier QUANTITE en fonction de QUANTITE_BASE.

    En gros j ai ces données :
    CLIENT : C1
    PRODUIT : P1
    QUANTITE : 500
    PRIX : 5
    QUANTITE_BASE : 600

    CLIENT : C1
    PRODUIT : P1
    QUANTITE : 300
    PRIX : 6
    QUANTITE_BASE : 600 (idem que celui du dessus car mm couple client produit)

    CLIENT : C2
    PRODUIT : P1
    QUANTITE : 800
    PRIX : 3
    QUANTITE_BASE : 500
    -----
    Je dois obtenir un tableau avec
    CLIENT : C1
    PRODUIT : P1
    QUANTITE : 0
    PRIX : 5
    QUANTITE_DE_BASE : 500 (=QUANTITE car QUANTITE<QUANTITE_BASE, je dois garder en mémoire les 100 de la QUANTITE_BASE restant pour le prochain couple client/produit)

    CLIENT : C1
    PRODUIT : P1
    QUANTITE : 0 (car il y a des QUANTITE_BASErestant)
    PRIX : 6
    QUANTITE_DE_BASE : 100 (QUANTITE_BASErestant<QUANTITE dc on affiche 100 et on garde en mémoire les 200 que l on a pas encore affiché 300-100=QUANTITE-QUANTITE_BASErestant)

    CLIENT : C1
    PRODUIT : P1
    QUANTITE : 200 (la QUANTITE RESTANTE)
    PRIX : 6
    QUANTITE_DE_BASE : 0 (car il n y a plus de QUANTITE_BASErestant)
    --> pour ce couple on a bien une quantité totale de 500+300 mais répartie en 500 + 100 + 200
    Pour le couple suivant C2/P1:
    CLIENT : C2
    PRODUIT : P1
    QUANTITE : 0
    PRIX : 3
    QUANTITE_DE_BASE : 500

    CLIENT : C2
    PRODUIT : P1
    QUANTITE : 300
    PRIX : 3
    QUANTITE_DE_BASE : 0
    L'algo pour moi ne pose pas vraiment de pb ... Le seul hic c est les variables en xslt !!

    Il faudrait que j arrive à initialiser une variable avant mon for-each et que j arrive à la modifier dans ma boucle ... Sauf que j ai la valeur de ma quantite_base dans la boucle ...
    En plus, je crois qu il y a des souci avec les variables, des questions de noeuds en xslt.
    Je comprends pas trop comment m en sortir malgré les tuto et posts lus jusqu à maintenant !!!

    Voici ma boucle sans cette variable pour le moment :
    <x:for-each select="//NIVEAU1">
    <tr >
    <x:attribute name="class">r<x:value-of select="position() mod 2"/></x:attribute>
    <td ><x:value-of select="@CLIENT"/></td>
    <td ><x:value-of select="@PRODUIT"/></td>
    <td ><x:value-of select="@QUANTITE "/></td>
    <td ><x:value-of select="@PRIX"/></td>
    <td ><x:value-of select="@QUANTITE_DE_BASE"/></td>
    </tr>
    </x:for-each>

    En fait je vois comment déclarer une variable et l initialiser
    <x:variable nom="base">0</x:variable>
    mais comment lui affecter une valeur par la suite ?


    Merci d avance

  2. #2
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Par défaut
    En xslt les variables sont immutables, plus assimllable a des constantes
    http://xml.developpez.com/faq/?page=3#xslt_variable

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 120
    Par défaut
    C est bien ce que j avais lu dc je me demandais comment faire !!!

  4. #4
    Membre émérite
    Inscrit en
    Octobre 2005
    Messages
    847
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 847
    Par défaut
    Citation Envoyé par Mil17
    C est bien ce que j avais lu dc je me demandais comment faire !!!

    il me seble qu'il a repondu à ta question qui était :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mais comment lui affecter une valeur par la suite ?
    si tu veux une autre reponse, pose une autre question

  5. #5
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Par défaut
    En xslt on evite les algo itératifs ont fait du recursif.
    Réecrit ton algo en recursif

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 120
    Par défaut
    OKI je vais voir ce que je peux faire mais comme c est un peu complexe ...

    Bref, j ai une question encore !
    Voila, j ai écrit ce petit code ;
    <x:variable name="maValATester">a</x:variable>
    [un peu de code sans intéret]
    <x:if test="$maValATester='a'">
    <x:variable name="maValATester"><x:value-of select="@VALEUR"/></x:variable>
    </x:if>
    <x:value-of select="@VALEUR"/>
    <x:if test="$maValATester='N'">
    Je suis là
    </x:if>
    Mon souci c est que "je suis là" ne s'affiche pas alors que @VALEUR est bien égal à N.
    La preuve qd je fais <x:value-of select="@VALEUR"/> j'obtiends bien N ...
    Le souci c'est que maValATester garde 'a' comme valeur ! Et moi j ai du mal avec le récursif !!!

    Comment faire ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XSLT] PB: Boucle (for-each) et variable
    Par luchoo dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 08/11/2010, 13h58
  2. [XSLT] For-each avec variable multidimensionelle
    Par pourloineus dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 05/08/2009, 10h04
  3. [XSL] for-each et variable
    Par luta dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 12/01/2006, 11h42
  4. [xslt] For-each dans template avec format XML (row)
    Par Steff1985 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 17/11/2005, 11h14
  5. [XSLT]for-each imbiqués
    Par Capt. Flame dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 24/10/2005, 12h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo