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 :

[XSL] première apparition de la valeur d'un tag


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 34
    Points : 39
    Points
    39
    Par défaut [XSL] première apparition de la valeur d'un tag
    Salut tous

    j'effectue une transformation XSLT du fichier XML suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <pere>
    <fils>A</fils>
    <fils>R</fils>
    <fils>A</fils>
    <fils>A</fils>
    <fils>R</fils>
    </pere>
    je souhaite effectuer un traitement qui ne s'effectue que lors de la première apparition de la valeur A, et un autre traitement qui ne s'effectue que lors de la première apparition de la valeur R.

    Merci de votre aide
    (je ne sais pas à l'avance dans quel ordre vont apparaitre ces valeurs)


    si je me mets dans mon XSL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:template match="pere[fils='R']">
    mon traitement se déclenche à chaque apparition de R...

    si je mets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ]<xsl:template match="pere[fils='R' and position()=1]">
    mon traitement ne s'effectue que si la valeur R est contenu dans le premier tag fils (ce qui n'est pas le cas dans l'exemple donné...)[/code]

  2. #2
    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,

    c'est un problème classique de regroupement, fais une recherche sur le forum XML avec le mot 'Muench' (nom de la méthode à employer).

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 34
    Points : 39
    Points
    39
    Par défaut
    Merci Grandfather pour ces informations : j'ai appris plein de choses !

    Mais sinon dans le cas qui m'intéresse, je n'avais pas besoin d'un regroupement : je voulais juste détecter la première occurence d'une valeur de fils pour déclencher un traitement.

    Et y'a un point que je n'ai pas précisé clairement dans mon premier message et qui explique que tu m'aies proposé la méthode Muench pour résoudre mon problème : je connais toutes les valeurs qui peuvent être contenues dans mon tag <fils> à l'avance

    J'ai opté pour la solution suivante (qui finalement est toute bête...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:if test="pere[fils='R']/node()">
    		Mon traitement
    </xsl:if>
    Voilà c'est nul, j'aurais dû y penser tout de suite mais je ne connaissais pas la fonction node() ...

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

Discussions similaires

  1. [Vxi3] Sélectionner que la première date d'une valeur
    Par emma31 dans le forum Webi
    Réponses: 13
    Dernier message: 02/07/2009, 15h38
  2. Réponses: 2
    Dernier message: 16/10/2008, 12h06
  3. Réponses: 1
    Dernier message: 15/07/2008, 20h54
  4. Réponses: 1
    Dernier message: 26/06/2007, 12h26
  5. Compter le nombre d'apparitions d'une valeur
    Par dynexd dans le forum Access
    Réponses: 4
    Dernier message: 07/04/2006, 01h30

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