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] Compteur et retro compteur


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Inscrit en
    Novembre 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 2
    Par défaut [XSLT] Compteur et retro compteur
    Bonjour,

    Je débute en xsl.
    Je voudrais compteur des boucles en entrée et quand j'ai un code qui me dit que c'est une sous-boucle, je prends le numéro de la boucle "père" et le mets dans un champs des sous-boucle.

    Par exemple :
    Entrée

    boucle A
    boucle B
    boucle C
    boucle D
    boucle E
    boucle F

    Il y a donc 6 boucles et mon compteur va de 1 à 6.
    Si j'identifie comme sous-boucles la boucle C, la boucle D qui sont les fils de la boucle B, je voudrais obtenir le numéro de la boucle B, boucle père des boucles C et D.

    Sortie

    ligne 1
    ligne 2
    ligne 3:2
    ligne 4:2
    ligne 5
    ligne 6

    Merci de votre aide.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Il faudrait préciser avec du concret, parce que là c'est très flou.

    On parle de boucles, là. Une boucle ce n'est pas dynamique. Ça n'arrive pas n'importe où n'importe comment, il n'y a des boucles que là où on met des boucles.

    Par conséquent, quand tu es dans la boucle C, tu sais déjà parfaitement que tu es une sous-boucle de B, et que B était la 2e sous-boucle. Donc tu mets 2 et c'est tout, pas besoin de compteur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <xsl:for-each select="A">
     <xsl:for-each select="B">
      <xsl:for-each select="C">
        <!-- Comme on peut le voir avec le code au-dessus,
               je suis une sous-boucle de B. Il s'agit d'une certitude.
               Et B est la 2e sous-boucle, c'est aussi une certitude.
               Donc, quand je veux parler du niveau de B, je mets 2.
       -->
      </xsl:for-each>
     </xsl:for-each>
    </xsl:for-each>
    Si ça ne marche pas, exlique qu'est-ce qui ne marche pas.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Nouveau candidat au Club
    Inscrit en
    Novembre 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 2
    Par défaut Merci thelvin
    Mais c'est pas tout à fait ça.
    En fait j'ai créé une feuille de style pour transformer un fichier entrée et en sortie j'aurai le résultat de deux compteurs.
    Je m'explique;en entrée, j'ai les enreg AAA qui répéte avec aléatoirement des zones renseignées ou null :
    entrée :
    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
    <AAA>
            <qt>12</qt>
            <condition/>
            <pere/>
    </AAA>
    <AAA>
            <qt>0</qt>
            <condition/>
            <pere/>
    </AAA>        
    <AAA>
            <qt>15</qt>
            <condition>ZZ</condition
            <pere/>
    </AAA>
    <AAA>
            <qt>1</qt>
            <condition>pp</condition
            <pere>10</pere>
    </AAA>
    <AAA>
            <qt>2</qt>
            <condition>pp</condition
            <pere>10</pere>
    </AAA>
    <AAA>
            <qt>3</qt>
            <condition>pp</condition
            <pere>10</pere>
    </AAA>
    <AAA>
            <qt>12</qt>
            <condition/>
            <pere/>
    </AAA>
    <AAA>
            <qt>12</qt>
            <condition/>
            <pere/>
    </AAA>
    Voici ma fonction xsl :
    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
    <xsl:param name = "qt" />
    <xsl:param name = "condition" />
    <xsl:param name = "pere" />
     
    <xsl:variable name ="compt1">
         <xsl:choose>
    	<xsl:when test="(string-length($qt) > 0) and $condition='ZZ'">
         		 <xsl:value-of select="number(position())" />
       	 </xsl:when>
         </xsl:choose>
    </xsl:variable >
     
    <xsl:variable name ="compt2" select="0"/>
    <xsl:variable name ="compt2">
    	<xsl:choose>
    	<xsl:when test="(string-length($qt) > 0) and $condition='pp' and (string-length($pere) > 0)">
         		 <xsl:value-of select="number(position())" />
       	 </xsl:when>
         	</xsl:choose>
    </xsl:variable>
     
    <xsl:if test="((($pere)!=0) and $condition='pp')">
    			<xsl:value-of select="$compt2-$compt1"/>
    </xsl:if>
    J'obtiens donc :
    compt1 = 1 2 3 4 5 6 7
    compt2 = 1 2 3 4 5 6 7

    Je veux en fait que le compt2 vaut 1 2 3.

    Merci de votre aide.

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Je comprends rien du tout.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    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
    Par défaut
    Ce n'est vraiment pas clair ton histoire

    Pourquoi compt2 n'est pas égal à 1 2 3 7 vu que le 7 n'a pas de père non plus

    En passant je pense que ton principe d'algo est mauvais dès le départ.

    Il vaut mieux privilégier le récursif (avec call_template) ou l'utilisation de template pour ce type de chose en général en XSLT

Discussions similaires

  1. Mettre un compteur dans un compteur VBA
    Par awa123 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 02/12/2012, 21h46
  2. [XSLT] création d'un compteur
    Par Katachana dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 20/06/2007, 11h03
  3. [XSLT] Création d'un compteur
    Par cheeba dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 06/12/2006, 15h07
  4. [XSLT] comment incrementer un compteur
    Par sidi.elmoctar dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 08/05/2006, 10h49
  5. [XSLT][Compteur]qui ne s'incremente pas
    Par fraoustin dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 10/01/2005, 18h11

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