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 :

incrementer une variable en xsl


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 14
    Points : 10
    Points
    10
    Par défaut incrementer une variable en xsl
    Bonjour,

    Je souhaite incrementer une variable en xsl, mais j'ai toujours une erreur.
    Je n'arrive meme pas a en declarer une et a l'afficher.


    J'ai essayer le code suivant dans la declaration:

    <xsl:variable name="valeur" select="0"/>

    et de l'afficher en faisant:

    <xsl:value-of select="valeur"/>

    mais j'ai aucun affichage. Si quelqu'un a une idée merci.

  2. #2
    Membre éprouvé Avatar de alain.couthures
    Profil pro
    Gérant
    Inscrit en
    Avril 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Avril 2007
    Messages : 902
    Points : 1 247
    Points
    1 247
    Par défaut
    Premièrement, il faut écrire <xsl:value-of select="$valeur"/> pour lire le contenu de la variable...

    De plus, une variable XSLT ne s'incrémente pas... puisque sa valeur est fixe !
    Formulaires XForms sur tous navigateurs sans extension à installer (architecture XRX) : http://www.agencexml.com/xsltforms/

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    pourtant j'ai vu des solutions tel que :

    <xsl:variable name="valeur" select="{$valeur+1}"/>

    mais ca ne marche pas t'as pas une idée stp?

  4. #4
    Membre éprouvé
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Points : 1 063
    Points
    1 063
    Par défaut
    on peut incrmenter une variable en utilisant des fonctions mais cela est compiqué et non dans l'esprit "xsl"
    mais que souhaites tu faire avec ton incrémentale?

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    Je souhaite compter le nombre de fois que je vais dans une boucle.

    voici le code:

    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:java="http://xml.apache.org/xslt/java" xmlnssl="http://www.w3.org/1999/XSL/Transform">

    <xsl:template match="/" name="formation">
    <xsl:param name="article" select=".//system-index-block[@name = 'media']/calling-page/system-page[@current = 'true']/system-data-structure[@definition-path = 'Formation/Article']"/>

    <xsl:param name="news" select=".//system-index-block[@name = 'media']/system-folder/system-folder/system-page/system-data-structure[@definition-path = 'Formation/News']"/>

    <xsl:param name="newsAbout">/formation/about/news/</xsl:param>
    <xsl:param name="newsProject">/formation/projects/news/</xsl:param>
    <xsl:variable name="valeur" select="0"/>


    <div>
    Title :
    <xsl:value-of select="$article/title"/>
    <br/>

    Paragraph1 :
    <xsl:value-of select="$article/paragraph1"/>
    <br/>

    Paragraph2 :
    <xsl:value-of select="$article/paragraph2"/>
    <br/>
    <img>
    <xsl:attribute name="src">
    <xsl:value-of select="$article/relatedImage/path"/>
    </xsl:attribute>
    <xsl:attribute name="alt">
    <xsl:value-of select="$article/relatedImage/name"/>
    </xsl:attribute>
    </img>

    <ul>
    <xsl:for-each select="$news">
    <xsl:sort data-type="text" select="./title"/>
    <xsl:variable name="temp" select="../path"/>
    <xsl:variable name="temp1" select="../name"/>
    <xsl:variable name="temp2" select="substring-before($temp,$temp1)"/>
    <xsl:if test="($newsAbout=$temp2) or ($newsProject=$temp2)">
    <xsl:variable name="valeur" select="$valeur+1"/>
    <li>
    <a>
    <xsl:attribute name="href">
    <xsl:value-of select="../path"/>
    </xsl:attribute>
    <xsl:value-of select="./title"/>
    </a>
    <br/>
    <xsl:value-of select="./description"/>
    </li>
    </xsl:if>
    </xsl:for-each>
    <xsl:value-of select="count($news)"/> / <xsl:value-of select="$valeur"/>
    </ul>
    </div>


    </xsl:template>
    </xsl:stylesheet>

  6. #6
    Futur Membre du Club
    Inscrit en
    Mars 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2006
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    As tu essayé cette solution :

    <xsl:variable name="pm" select="count(//balise)"/>

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    oui sofresh c'est ce que j'ai fait car apparement faire +1 a une variable c'est pas possible. mais j'arrive a faire des additions donc je comprend pas trop.

  8. #8
    Membre éprouvé
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Points : 1 063
    Points
    1 063
    Par défaut
    le soucis viens du faite que tu initialises pas la variable $valeurs dans la boucle

  9. #9
    Membre éprouvé Avatar de alain.couthures
    Profil pro
    Gérant
    Inscrit en
    Avril 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Avril 2007
    Messages : 902
    Points : 1 247
    Points
    1 247
    Par défaut
    Citation Envoyé par fraoustin Voir le message
    le soucis viens du faite que tu initialises pas la variable $valeurs dans la boucle
    Non !
    La gestion des variables en XSLT est claire : une valeur fixe est associée à chaque variable et la portée d'une variable s'étend sur tous les éléments frères qui suivent sa définition et leurs descendants.

    Demander la valeur d'une variable non définie retourne une valeur vide ou une erreur selon l'implémentation.
    Formulaires XForms sur tous navigateurs sans extension à installer (architecture XRX) : http://www.agencexml.com/xsltforms/

  10. #10
    Membre éprouvé
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Points : 1 063
    Points
    1 063
    Par défaut
    si quand on initialise pas une variable on obtient une erreur ,(qu'on aurait pas eu si la variable avait été initialisé) ma remarque: il faudrait initialiser la variable n'est pas si fausse

  11. #11
    Membre éprouvé Avatar de alain.couthures
    Profil pro
    Gérant
    Inscrit en
    Avril 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Avril 2007
    Messages : 902
    Points : 1 247
    Points
    1 247
    Par défaut
    Il faut recentrer la discussion...

    Le terme "initialisation" est plutôt impropre au XSLT dès lors qu'une seule valeur peut être assignée.

    La résolution du problème posé ne passe pas par une "initialisation" mais bien par l'acceptation qu'une variable XSLT est non modifiable : il faut penser la programmation XSLT autrement que la programmation 3G !
    Formulaires XForms sur tous navigateurs sans extension à installer (architecture XRX) : http://www.agencexml.com/xsltforms/

  12. #12
    Membre éprouvé Avatar de laurentibus
    Inscrit en
    Mars 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2008
    Messages : 875
    Points : 908
    Points
    908
    Par défaut
    bonjour,
    bon vous arrêtez d'embettez alain un peu ? !!

    il a raison, une variable elle reste comme elle est en xsl ...
    on peut la modifier (voir exemple compteur du site dev.com) mais c'est quand meme assez lourd et peu pratique et applicable dans un nombre tres limité de cas ...............

    En plus comme alain a deja dit :
    tu veux compter le nombre de fois que tu vas passer dans ta boucle for-each
    ben tu fais un count de la condition de ton for each ......... je fais idem, ca coule de source.

    allez ++ les amies

    et attention je vous ai à l oeil
    ... un flash ... et ça repart

    700R ... catch me if u can

    Best regards,
    .

Discussions similaires

  1. Incrementer une variable de type record
    Par yann87 dans le forum Langage
    Réponses: 5
    Dernier message: 19/01/2009, 15h57
  2. incrementer une variable
    Par kaking dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 20/06/2008, 08h43
  3. Incrementer une variable du type mysql_fetch_array
    Par furtif1 dans le forum Langage
    Réponses: 2
    Dernier message: 10/03/2007, 15h23
  4. [C#] Comment incrémenter une variable session ?
    Par Sup@Lou dans le forum ASP.NET
    Réponses: 5
    Dernier message: 14/05/2006, 18h24
  5. [XSLT] incrementer une variable
    Par Landolsi dans le forum XSL/XSLT/XPATH
    Réponses: 9
    Dernier message: 02/11/2005, 10h44

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