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 :

[xsl-fo] Recuperation de valeurs dans une boucle


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 103
    Points : 53
    Points
    53
    Par défaut [xsl-fo] Recuperation de valeurs dans une boucle
    Bonjour à tous,

    voila mon probleme, j'ai une boucle for-each a partir de laquelle je crée un tableau.

    Le probleme vient du fait que dans cette boucle je voudrais recuperer des valeurs pour m'en resservir hors de la boucle et je ne vois pas du tout comment faire vu que si je mets les valeurs dans des variables je ne peux pas les recuperer hors de la boucle.

    Si quelqu'un peut m'aider parce que je ne vois pas du tout comment faire.

    Merci d'avance.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 103
    Points : 53
    Points
    53
    Par défaut
    au vu des reponses j'ai l'impression que c'est pas faisable ce que je demande

  3. #3
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Points : 786
    Points
    786
    Par défaut
    bah ca depend si ta boucle est dans un template ou pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <RESULTAT>
      <xsl:for-each select="element"/>
        <xsl:copy/>
      </xsl:for-each>
    </RESULTAT>
    si c ds un template je crois que tu peux recuperer le resultat en encapsulant l appel de ton template ds ton résultat mais g entendu parler d une histoire de result tree fragment mais la ce seront les cadors du forum qui pourront te repondre mieu que moi...

  4. #4
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Points : 786
    Points
    786
    Par défaut
    Citation Envoyé par tiscars
    bah ca depend si ta boucle est dans un template ou pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <xsl: variable name="RESULTAT">
      <xsl:for-each select="element"/>
        <xsl:copy/>
      </xsl:for-each>
    </xsl:variable>
    si c ds un template je crois que tu peux recuperer le resultat en encapsulant l appel de ton template ds ton résultat mais g entendu parler d une histoire de result tree fragment mais la ce seront les cadors du forum qui pourront te repondre mieu que moi...

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 103
    Points : 53
    Points
    53
    Par défaut
    Citation Envoyé par tiscars
    bah ca depend si ta boucle est dans un template ou pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <RESULTAT>
      <xsl:for-each select="element"/>
        <xsl:copy/>
      </xsl:for-each>
    </RESULTAT>
    si c ds un template je crois que tu peux recuperer le resultat en encapsulant l appel de ton template ds ton résultat mais g entendu parler d une histoire de result tree fragment mais la ce seront les cadors du forum qui pourront te repondre mieu que moi...
    j'ai un doute sur le fait que je puisse ecrire ça et que fop ne genere pas d'erreur.
    Je vais tester quand meme

  6. #6
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Points : 786
    Points
    786
    Par défaut
    arf..j avais pas vu que ct du fo...j y connais vraiment rien dessus

  7. #7
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Bonjour,

    comme il est indiqué dans cet article d'Erwy, les variables ont une portée limitée à l'élément qui les contient, et à ses descendants.

    Si dans une partie de ton programme sont calculées des valeurs qui sont nécessaires à une autre partie, il peut être intéressant de regrouper le calcul de ces valeurs dans une fonction (template nommé) qui sera appelée par les deux parties. A priori, il faut que tu changes radicalement la structure de ton programme. On peut t'y aider à partir du moment où tu nous décris l'algorithme.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 103
    Points : 53
    Points
    53
    Par défaut
    bon je vous mets un peu de code pour vous expliquer un peu mieux ce que je veux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    31
    32
    33
    34
    35
    36
     
     
    <xsl:for-each select="noeud">
    <xsl:choose>
      <xsl:when test=".='une valeur' or .='une autre valeur'>
    	<xsl:if test=".='une valeur'">
    	  <xsl:variable name="$valeur1" select="."/>
    	</xsl:if>
            <xsl:if test=".='une autre valeur'">
    	  <xsl:variable name="$valeur2" select="."/>
    	</xsl:if>
      </xsl:when>
     
      <xsl:otherwise>
      <fo:table-row>
        <fo:table-cell>
           <xsl:value-of select="enfant1"/>
       </fo:table-cell>
       <fo:table-cell>
           <xsl:value-of select="enfant2"/>
       </fo:table-cell>
      </fo:table-row>
    </xsl:choose>
    </xsl:for-each>
     
    <fo:table-row>
        <fo:table-cell>
           <xsl:value-of select="$valeur1"/>
        </fo:table-cell>
    </fo:table-row>
     
    <fo:table-row>
        <fo:table-cell>
           <xsl:value-of select="$valeur2"/>
        </fo:table-cell>
    </fo:table-row>
    voila en gros le principe du truc, donc si vous avez des idées elles sont les bienvenues

  9. #9
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Points : 786
    Points
    786
    Par défaut
    1/ il n y pas la fermeture </xsl:otherwise>
    2/ on ne sait pas ou tu as déclaré tes $valeur1
    3/ je pense que je ne vois pas ou est le probleme...
    du vrai code peut etre pourrait expliquer tout cela

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 103
    Points : 53
    Points
    53
    Par défaut
    Citation Envoyé par tiscars
    1/ il n y pas la fermeture </xsl:otherwise>
    2/ on ne sait pas ou tu as déclaré tes $valeur1
    3/ je pense que je ne vois pas ou est le probleme...
    du vrai code peut etre pourrait expliquer tout cela
    1/ pas grave pour la fermeture car ce n'est pas le code que j'utilise mais juste un exemple

    2/ mes $valeur1 et $valeur2 sont declarées dans le when du for-each mais par contre je me suis trompé car j'ai ecrit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:variable name="$valeur1" select="."/>
    au lieu de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:variable name="valeur1" select="."/>
    3/ le probleme est que cette ligne la n'affiche rien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <fo:table-row>
        <fo:table-cell>
           <xsl:value-of select="$valeur1"/>
        </fo:table-cell>
    </fo:table-row>

  11. #11
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Points : 786
    Points
    786

Discussions similaires

  1. Concaténer les valeurs dans une boucle
    Par philippef dans le forum Langage
    Réponses: 4
    Dernier message: 28/08/2007, 20h08
  2. [RegEx] Récupération de valeurs dans une chaine de caractères
    Par Seth77 dans le forum Langage
    Réponses: 1
    Dernier message: 09/08/2007, 09h39
  3. alterner 2 valeurs dans une boucle while
    Par harlock59 dans le forum Langage
    Réponses: 6
    Dernier message: 10/04/2007, 11h58
  4. Réponses: 2
    Dernier message: 14/07/2006, 18h37
  5. [C#] Recuperation de valeur dans une autre page
    Par kenzo080 dans le forum ASP.NET
    Réponses: 8
    Dernier message: 02/06/2004, 10h32

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