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]Problème valeur dans le bas de page


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre régulier
    Inscrit en
    Juillet 2004
    Messages
    218
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 218
    Points : 91
    Points
    91
    Par défaut [xsl-fo]Problème valeur dans le bas de page
    Bonjour à tous,

    J'ai un soucis de valeur dans le bas de page de mon pdf, je reçois un flux xml dans lequel une parie des données sont pour le body de la page et une partie pour le bas de page. Les valeurs du body sont correctement affichées mais pour le bas de page j'ai toujours les memes valeurs.

    Si je fais une for-each dans mon code pour le bas de page j'ai bien la possibilité de récupérer la position courante mais lorsque je souhaite afficher la valeur du tag et bien rien, je fais comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <xsl:for-each select="xmlSteam/REFEXEC"/>
    <xsl:variable name="pos" select="position()"/>
    <xsl:value-of select="concat('xmlSteam'[,$pos,']/REFEXEC')"/>
    </xsl:for-each>
    Et bien dans le code ci-dessus j'obtiens toujours le string :
    xmlSteam[ValeurDePos]/REFEXEC et jamais le contenu.

    Que faire, je ne sais plus, pourriez-vous m'aider ?
    Stujava

  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
    Points : 10 927
    Points
    10 927
    Par défaut
    On ne peut pas transformer une string en xpath

    Et même si c'était le cas ton XPath me parait completement faux, tu oublis qu'il sera évalué en fonction du noeud courant

  3. #3
    Membre régulier
    Inscrit en
    Juillet 2004
    Messages
    218
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 218
    Points : 91
    Points
    91
    Par défaut
    Ok j'ai bien compris le message.

    J'ai modifier le code pour ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <xsl:for-each select="xmlSteam/REFEXEC"/>
    <xsl:variable name="value"><xsl:value-of select="."/></xsl:variable>
    <!-- Si j'imprime ici la valeur de value pas de souci , mais alors toutes
    les valeurs de chaque noeud xmlSteam/REFEXEC se concatènent et j'ai 
    toutes les valeurs au lieu de celle correspondant au noeud courant-->
    </xsl:for-each>
    <!-- Si j'imprime ici la valeur de value elle est vide -->
    J'aimerai juste avoir une solution je cherche depuis plusieurs jours et je ne trouve pas.

  4. #4
    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
    Points : 10 927
    Points
    10 927
    Par défaut
    ce que tu me dis n'est pas possible ou alors ton xsl:value est en dehors de ton for-each.

    Ton noeud REFEXEC peut avoir de nombreux fils et c'est bien leur concaténation que tu obtiendrais en résultat mais en aucun cas tu ne peux obtenir la concaténation de ce que tu parcours dans ton for-each dans un ton xsl:value.
    En passant la bonne écriture est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:variable name="value" select="."/>

    Le noeud courant c'est le noeud "actif".
    voir
    http://erwy.developpez.com/cours/lan...t/boucle/#L1.4

  5. #5
    Membre régulier
    Inscrit en
    Juillet 2004
    Messages
    218
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 218
    Points : 91
    Points
    91
    Par défaut
    je veux bien admettre cette réponse, mais alors il faut m'expliquer pourquoi j'obtiens le résultat ci-dessous, je rapelle que je suis dans un xsl:fo et dans la partie region-footer du document:

    Pour un xml comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <xsmlStream>
    <REFEXEC>123456/aaaaaa</REFEXEC>
    </xsmlStream>
    <xsmlStream>
    <REFEXEC>123456/bbbbbb</REFEXEC>
    </xsmlStream>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <xsl:for-each select="xmlSteam/REFEXEC"/>
    <xsl:value-of select="current()"/>
    </xsl:for-each>
    Sur mon document en sortie j'obtiens les 2 valeurs concaténées,
    c'est-a-dire : 123456/aaaaaa123456/bbbbbb
    hors j'espérai obtenir les 2 séparés distinctement.

    Merci pour votre aide et conseils
    stujava

  6. #6
    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
    Points : 10 927
    Points
    10 927
    Par défaut
    Ok, je vois le problème.
    Vous effectuer la totalité de la boucle pour chaque page, je croyais que c'était ce code qui effectuait le code de la page.
    Votre problème est plus global, soit vous avez placé la boucle au mauvais endroit, soit vous ne devez pas utilisé de boucle mais uniquement un xpath avec le numéro qui vous intéresse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ....
    <xsl:variable name="pos" select="la_position_qui_vous_intéresse"/>
    ....
    <xsl:value-of select="xmlSteam[$pos]/REFEXEC')"/>
    ...
    Par contre sans le code global je n'ai aucune idée d'ou vous récupérerez l'info

  7. #7
    Membre régulier
    Inscrit en
    Juillet 2004
    Messages
    218
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 218
    Points : 91
    Points
    91
    Par défaut
    Merci pour l'info, mais j'ai déja testé, le problème est que pour la valeur "la_position_qui_vous_intéresse" j'aimerai que ce soit incrémenté automatiquement en fonction de la rupture de séquence.

    Je vais essayer a nouveau par acquis de conscience.

    merci beaucoup pour l'aide
    Stujava

  8. #8
    Membre régulier
    Inscrit en
    Juillet 2004
    Messages
    218
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 218
    Points : 91
    Points
    91
    Par défaut
    Et bien voila j'ai essayé mais rien de bon.

    Si je demande la valeur de positin() elle est toujours à 1

    stujava

  9. #9
    Membre régulier
    Inscrit en
    Juillet 2004
    Messages
    218
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 218
    Points : 91
    Points
    91
    Par défaut
    Et bien voila j'ai, je pense, tout essayé et rien ne me donne de manière unique les informations.

    Ce qui semble très étrange c'est que quand je demande l'affichage de la valeur via un xsl:message et bien j'ai autant de ligne qu'il y a d'occurence par contre avec un xsl:value-of il concatène le tous.

    Pour infos le code utilisé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <xsl:for-each select="xmlSteam/REFEXEC"/>
    <xsl:call-template="REFEXEC">
    <xsl:with-param name="pos" select="position()"/>
    </xsl:call-template>
    </xsl:for-each>
     
    <xsl:template name="REFEXEC">
    <xsl:param name="pos"/>
    <xsl:message>//xmlSteam[$pos]/REFEXEC</xsl:message> --> valeur correctement affichée
    <xsl:value-of select="//xmlSteam[$pos]/REFEXEC"/> --> valeur correctement affichée mais concaténée
    </xsl:template>

Discussions similaires

  1. Problème de citation en bas de page
    Par j_lachap dans le forum Mise en forme
    Réponses: 0
    Dernier message: 08/04/2010, 23h39
  2. [AC-2002] compte enregistrement dans etat bas de page
    Par babette63 dans le forum Access
    Réponses: 6
    Dernier message: 09/06/2009, 17h28
  3. problème bordure jusqu'en bas de page
    Par zell_w dans le forum iReport
    Réponses: 0
    Dernier message: 14/11/2007, 09h35
  4. [XSL/JavaScript]problème d'intégration code JS dans le XSL
    Par Devil666 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 27/04/2005, 16h36
  5. [html][xsl]Problème valeur attribut html
    Par beho dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 16/04/2005, 13h37

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