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 :

[débutant][xsl]incrémenter une variable


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2003
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 32
    Par défaut [débutant][xsl]incrémenter une variable
    Salut,

    Je suis en train d'ecrire un fichier xsl avec des fonctions svg et j'ai besoin de décrémenter une variable.
    Voici mon code:
    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
     
    <xsl:template match="Boitierdepart">
    		<svg xmlns="http://www.w3.org/2000/svg">
    			<xsl:variable name="xcon">415 </xsl:variable> 
    			<xsl:variable name="ycon">250 </xsl:variable>
    			<xsl:for-each select="//Connecteurout">
    				<rect x="{$xcon}"  y="{$ycon}" height="5" width="5" style="stroke: black; fill: white"/>
    				<text x="{$xcon+20}"  y="{$ycon+6}" style=" fill:black; stroke:none;font-size:8pt"  text-anchor="middle">
    					<xsl:value-of select="@nom"/>
    				</text>
    			<xsl:variable name="ycon" select="{$ycon-10}"/>
    			</xsl:for-each>
     
    		</svg>
    </xsl:template>
    mais ça marche pas.

    Quelqu'un pourrait il m'aider?

    Merci.

    PS: c koi la différence entre un <xsl:param et <xsl:variable??

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 33
    Par défaut
    Ce n'est pas possible de redéfinir une variable XSL, par contre dans ton for-each, tu peux utiliser la fonction position() qui te retourne la position du noeud courant, en la multipliant à ton incrément, tu dois pouvoir t'y retrouver

    xsl:param définit un paramètre global à la feuille de style qui peut être définie lors de la transformation. xsl:variable est une variable permettant la mémorisation d'une valeur et est inacessible en dehors de la feuille de style.

  3. #3
    Membre chevronné
    Avatar de grishka
    Inscrit en
    Janvier 2003
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 285
    Par défaut
    en XSL une variable est initialisé une fois pour toute, de plus sa portée est à l'intérieur d'un noeud, donc à chaque tour de for-each, tu recrés une variable ycon...

    dans le cas général, on doit transformer le processus itératif en processus récursif, ce qui donnerait:

    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
     
    <xsl:call-template name="traitement">
       <xsl:with-param name="ycon" select="250"/>
       <xsl:with-param name="pos" select="0"/>
    </xsl:call-template>
     
    ...
     
    <xsl:template name="traitement">
       <xsl:param name="ycon"/>
       <xsl:param name="pos"/>
     
       ...traitement de noeud
     
       <xsl:if test="pos != count(//Connecteurout)">
          <xsl:call-template name="traitement">
             <xsl:with-param name="ycon" select="$ycon-10"/>
             <xsl:with-param name="pos" select="$pos+1"/>
          </xsl:call-template>
       </xsl:if>
    </xsl:template>

  4. #4
    Membre averti
    Inscrit en
    Mars 2003
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 32
    Par défaut
    ok merci beaucoup.

    A+

  5. #5
    Membre averti
    Inscrit en
    Mars 2003
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 32
    Par défaut
    Désolé g un problème, j'ai fait ce que tu m'as dit mais ca donne:

    Impossible de trouver la variable nommée ycon-10
    comprends pas.

  6. #6
    Membre chevronné
    Avatar de grishka
    Inscrit en
    Janvier 2003
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 285
    Par défaut
    à oui le trait est considéré comme valide dans un nom, il faut donc faire {$ycon}-10 ou mettre un espace autour du trait...

    Sinon une solution plus simple à ton problème est la solution de buchholz Moi je t'ai donné la solution qui marche dans tous les cas.

    solution de buchholz tu utilse la valeur de {$ycon} - 10*position()

    bon dev...

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 33
    Par défaut
    Citation Envoyé par Grégory Picavet
    Sinon une solution plus simple à ton problème est la solution de buchholz Moi je t'ai donné la solution qui marche dans tous les cas.

    solution de buchholz tu utilse la valeur de {$ycon} - 10*position()
    Vu que c'est affreux de dire la solution de buchholz, j'ai choisi un pseudo ;-)

    Voila un post inutile

Discussions similaires

  1. [Débutant] - Incrémenter une variable et copier un fichier
    Par Adz23 dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 15/09/2010, 18h55
  2. Incrémenter une variable en CR9
    Par nanouille56 dans le forum SAP Crystal Reports
    Réponses: 9
    Dernier message: 13/02/2007, 15h59
  3. [XSLT] incrémenter une variable
    Par nemya dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 26/09/2005, 17h12
  4. Réponses: 5
    Dernier message: 25/06/2005, 11h35
  5. [XSL] utiliser une variable pour nom d'élément
    Par luta dans le forum XSL/XSLT/XPATH
    Réponses: 13
    Dernier message: 07/09/2004, 13h58

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