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] Un comptage de noeud assez compliqué [Débutant(e)]


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 10
    Points : 6
    Points
    6
    Par défaut [XSLT] Un comptage de noeud assez compliqué
    Bonjour,

    J'ai une branche XML de la structure suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <C>
        <A/>
        <B/>
        <B/>
        <A/>
        <A/>
        <B/>
        <A/>    
    </C>
    (les balises A et B étant dans un ordre et une quantité indéterminé)

    Je parcours tous les enfants de C avec un xsl:for-each et je souhaiterai au final obtenir un truc du genre :
    A, B1, B2, A, A, B3, A
    C'est à dire la liste de tous les enfants de C, mais en connaissant la position des balises B par rapport aux seules balises B (sans tenir compte des A)

    Pour l'instant, je n'arrive à obtenir que :
    A, B2, B3, A, A, B6, A
    (j'ai ici la position des B, mais en tenant aussi compte des A, ce que je ne veux pas)

    Je pense qu'à chaque fois que j'affiche un B, il faut que je fasse une requète du genre :
    "compter le nombre de frère de type B de position inférieure à ma position courante".
    Je ne vois pas du tout comme faire celà :-(

    Avez-vous une idée ?

    Merci

  2. #2
    Membre du Club
    Inscrit en
    Janvier 2007
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 50
    Points : 56
    Points
    56
    Par défaut
    <xsl:number> serait plus simple qu'un position()

  3. #3
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Bonjour,

    Ceci, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <xsl:template match="C">
      <xsl:copy>
        <xsl:apply-templates select="A|B"/>
      </xsl:copy>
    </xsl:template>
    <xsl:template match="A">
      <xsl:copy-of select="."/>
    </xsl:template>
    <xsl:template match="B">
      <xsl:element name="{concat('B',count(preceding-sibling::B)+1)}">
      </xsl:element>
    </xsl:template>

Discussions similaires

  1. [XSLT 2.0] Comptage de noeuds
    Par sebiboy2 dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 18/11/2010, 14h13
  2. [XSLT]verifier si un noeud existe deja
    Par davelo dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 22/03/2006, 16h47
  3. [xslt]Comportement d'un noeud crée dynamiquement
    Par Capt. Flame dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 21/11/2005, 16h10
  4. Réponses: 4
    Dernier message: 15/09/2005, 14h21
  5. [XSLT][VARIABLE] comment un noeud est-il stocké?
    Par Devotion dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 02/11/2004, 14h19

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