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 2.0] Problème de variable...


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 3
    Points : 2
    Points
    2
    Par défaut [XSLT 2.0] Problème de variable...
    Bonjour,

    A l'intérieur d'un template XSLT 2.0, j'ai défini une variable $children qui englobe un CALL TEMPLATE avec PARAMETRE à savoir :
    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
     
      <xsl:variable name="children">
             <xsl:call-template name="subMrow">
               <xsl:with-param name="size" select="$size" />
               <xsl:with-param name="aSize" select="$aSize"  />
               <xsl:with-param name="variant" select="$variant" /> 
               <xsl:with-param name="color" select="$color" /> 
               <xsl:with-param name="sizeMult" select="$sizeMult" />
               <xsl:with-param name="minSize" select="$minSize" />
               <xsl:with-param name="scriptLevel" select="$scriptLevel" />
               <xsl:with-param name="displayStyle" select="$displayStyle" />
               <xsl:with-param name="x" select="$x" />
               <xsl:with-param name="y" select="$y"/> 
               <xsl:with-param name="noeuds" select="*" />
             </xsl:call-template> 
           </xsl:variable>
    ============================

    Ensuite, je tente de récupérer des informations depuis la variable $children mais rien n'y fait.

    Par exemple,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <!-- Create a variable named $maxHeight -->
    <xsl:variable name="maxHeight">
      <xsl:for-each select="$children/*">
        <xsl:sort select="@tree:HEIGHT" data-type="number" order="descending" />
        <xsl:if test="position() = 1">
          <xsl:value-of select="@tree:HEIGHT" />
        </xsl:if>
      </xsl:for-each>
    </xsl:variable>
        <xsl:message>maxHeight : <xsl:value-of select="$maxHeight" /></xsl:message>
    ---> maxHeight n'a pas de valeur dans ce cas.
    UNE IDEE ? Je suis bloqué depuis deux jours et je n'en dors plus ;-)

    =====

    Pour mieux comprendre le contenu de la variable $children, voici le code du template subMrow qui a pour rôle de traiter le premier noeud et de s'appeller récursivement avec le reste des noeuds à traiter...
    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
     
        <!-- ###########################################################################
        subMrow 
        ################################################################################ -->
     
        <xsl:template name="subMrow">
          <xsl:param name="size" />
          <xsl:param name="aSize" />
          <xsl:param name="variant" /> 
          <xsl:param name="color" /> 
          <xsl:param name="sizeMult" />
          <xsl:param name="minSize" />
          <xsl:param name="scriptLevel" />
          <xsl:param name="displayStyle" />
          <xsl:param name="x" />
          <xsl:param name="y" /> 
          <xsl:param name="noeuds"/>
     
          <xsl:if test="$noeuds">
        <xsl:variable name="noeud" select="$noeuds[1]" />
            <xsl:message>Subtree Visit : <xsl:value-of select="$noeud"/></xsl:message>
            <xsl:message>x : <xsl:value-of select="$x"/></xsl:message>
     
          <xsl:variable name="subTree">
           <xsl:apply-templates select="$noeud" mode="formatting">
              <xsl:with-param name="size" select="$size" />
              <xsl:with-param name="aSize" select="$aSize"  />
              <xsl:with-param name="variant" select="$variant" /> 
              <xsl:with-param name="color" select="$color" /> 
              <xsl:with-param name="sizeMult" select="$sizeMult" />
              <xsl:with-param name="minSize" select="$minSize" />
              <xsl:with-param name="scriptLevel" select="$scriptLevel" />
              <xsl:with-param name="displayStyle" select="$displayStyle" />
              <xsl:with-param name="x" select="$x" />
              <xsl:with-param name="y" select="$y"/> 
            </xsl:apply-templates>
          </xsl:variable>
     
            <xsl:variable name="currentWidth">
            <xsl:value-of select="$subTree/*/@tree:WIDTH"/>
            </xsl:variable>
     
            <xsl:message>subtree width : <xsl:value-of select="$currentWidth" /></xsl:message>
     
            <xsl:call-template name="subMrow">
              <xsl:with-param name="size" select="$size" />
              <xsl:with-param name="aSize" select="$aSize"  />
              <xsl:with-param name="variant" select="$variant" /> 
              <xsl:with-param name="color" select="$color" /> 
              <xsl:with-param name="sizeMult" select="$sizeMult" />
              <xsl:with-param name="minSize" select="$minSize" />
              <xsl:with-param name="scriptLevel" select="$scriptLevel" />
              <xsl:with-param name="displayStyle" select="$displayStyle" />
              <xsl:with-param name="x" select="$x + $currentWidth" />
              <xsl:with-param name="y" select="$y"/> 
              <xsl:with-param name="noeuds" select="$noeuds[position() > 1]"/> 
            </xsl:call-template>
     
          </xsl:if>
        </xsl:template>
    ----


    Merci pour votre aide !!!

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 3
    Points : 2
    Points
    2
    Par défaut précisions
    J'utilise Saxon 8.1B

    Les tentatives de récupérer des données dans $children se fait après la déclaration de la variable (dans le même template donc).

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    J'ai trouvé mon erreur. Je devais faire un <xsl:copy... à la fin de mon subMrow sinon le CALL-TEMPLATE ne retourne rien... merci quand même. En espérant que celui puisse servir à quelqu'un....

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

Discussions similaires

  1. [XSLT] : problème de variable
    Par wwave dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 16/12/2008, 16h08
  2. [XSLT] Problème de variable dans un test
    Par san julio dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 30/01/2007, 16h56
  3. Problème de variable
    Par vp dans le forum Windows
    Réponses: 2
    Dernier message: 14/05/2004, 16h27
  4. [Débutant] Problème de variables
    Par bonnefr dans le forum SWT/JFace
    Réponses: 9
    Dernier message: 12/05/2004, 17h41
  5. [servlet]problème de variable jamais nulle
    Par omega dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 18/03/2004, 09h31

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