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] Remise à zéro numérotation


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 20
    Par défaut [XSLT] Remise à zéro numérotation
    Bonjour,
    j'ai un fichier XML sous la forme avec des lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <Lignes>
    <ref>A</ref>
    </lignes>
    <Lignes>
    <ref>A</ref>
    </lignes>
    <Lignes>
    <ref>B</ref>
    </lignes>
    à partir de cela, j'arrive à obtenir en sortie un fichier texte qui regroupe certaines lignes en fonction de <ref>.

    Fichier texte en sortie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Entete 1
    Ligne 1 ref A 
    Ligne 2 ref A
    Entete 2
    Ligne 3 ref B
    Je souhaiterais numéroter les lignes. J'ai essayé d'utiliser number mais je n'arrive pas à remettre à zéro la numérotation. Pour la ligne 3, je voudrais en fait avoir ligne 1 au lieu de ligne 3 car je recommence une nouvelle entete.

    Je ne vois pas comment faire.
    Merci

  2. #2
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 21
    Par défaut solution avec following-sibling::LIGNE
    Une idée parmi d'autres sans doute serait d'écrire un template récursif qui serait appellé sur le noeud <LIGNE> suivant (avec following-sibling::LIGNE) en passant en paramètre le compteur.
    Ca pourrait ressembler à:
    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
     
    <xsl:template name="Compte_ligne" >
      <xsl:param name="noeud" />
      <xsl:param name="cpt" />
     
    <xsl:choose>
      <xsl:when test="empty($noeud)" >
      </xsl:when>
      <xsl:when test="not(empty($noeud))" >
         <xsl:text>LIGNE </xsl:text>
          <xsl:value-of select="$cpt" >
    ...
         <xsl:value-of select="$noeud" >
         <xsl:call-template name="Compte_ligne" />
           <xsl:with-param name= "noeud" select="$noeud/following-sibling::LIGNE" />
           <xsl:with-param name= "cpt" select="$cpt+1" />
        </xsl:call-template>
      </xsl:when>
     </xsl:choose>
      </xsl:template>
    Bon courage.

    PS : l'utilisation de la fonction 'empty' est à vérifier

  3. #3
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 20
    Par défaut
    merci pour ta réponse mais étant débutant, je n'ai pas compris le fonctionnement du template récursif.

  4. #4
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 21
    Par défaut Récursivité
    Si tu ne fais pas quelque chose de récursif, il te sera difficile, voire impossible, d'afficher une numérotation des lignes.

    Bonne suite.

  5. #5
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 21
    Par défaut
    Il y a peut-être une solution en faisant un for-each sur les balises <LIGNE> et en utilisant la fonction position. A voir...

Discussions similaires

  1. Remise à zéro numérotation auto
    Par seb1980 dans le forum IHM
    Réponses: 1
    Dernier message: 30/07/2009, 16h34
  2. [ODBC] Remise à zéro de la numérotation automatique
    Par drogba72 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 23/02/2009, 14h37
  3. Remise à zéro de la numérotation automatique des objets dessins d'Excel
    Par conconbrr dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 02/01/2008, 10h36
  4. Timer : remise à zéro
    Par hammag dans le forum Langage
    Réponses: 3
    Dernier message: 20/04/2006, 17h31
  5. Remise à zéro du fichier d'alerte <SID>ALERT.LOG
    Par pablo13 dans le forum Administration
    Réponses: 2
    Dernier message: 05/10/2004, 17h19

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