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 :

Recherche du noeud precedent le prochain [XSLT 1.0]


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 23
    Par défaut Recherche du noeud precedent le prochain
    Bonjour,

    Je suis débutant en xslt et je doit modifier une feuille existante.
    Voici un bout de mon xml :

    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
    <ActivityList>
     <Activity ActivityType="truc"
      <Target>
       <JointTarget>
        <Joint DOFNumber="1"/>
         <JointValue>90.00</JointValue>
        </Joint>
       </JointTarget>
      </Target>
     </Activity>
    <Activity ActivityType="truc"
      <Target>
       <JointTarget>
        <Joint DOFNumber="1"/>
         <JointValue>90.00</JointValue>
        </Joint>
       </JointTarget>
      </Target>
     </Activity>
    </ActivityList>
    <Activity ActivityType="bidul"
      <Event EventType="Machin">
     
      </Event>
     </Activity>
    <Activity ActivityType="truc"
      <Target>
       <JointTarget>
        <Joint DOFNumber="1"/>
         <JointValue>90.00</JointValue>
        </Joint>
       </JointTarget>
      </Target>
     </Activity>
    <Activity ActivityType="truc"
      <Target>
       <JointTarget>
        <Joint DOFNumber="1"/>
         <JointValue>90.00</JointValue>
        </Joint>
       </JointTarget>
      </Target>
     </Activity>
    <Activity ActivityType="bidul"
      <Event EventType="Machin">
     
      </Event>
     </Activity>
    <Activity ActivityType="truc"
      <Target>
       <JointTarget>
        <Joint DOFNumber="1"/>
         <JointValue>90.00</JointValue>
        </Joint>
       </JointTarget>
      </Target>
     </Activity>
    </ActivityList>
    Je voudrais rechercher le prochain <EventType="Machin"> et ressortir la valeur <JointValue> de <ActivityType="truc"> qui se trouve immédiatement au dessus.

    En espérant avoir été assez clair dans mes expliquations.

  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
    Citation Envoyé par aupawi Voir le message
    En espérant avoir été assez clair dans mes expliquations.
    Ben non. "Le prochain" ?

    Et puis, si tu veux faire une modification, 'faudrait parler un peu de ce que tu modifies.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 23
    Par défaut
    L'orsque je dis le prochain <EventType="Machin">, je voulais dire le noeud <EventType="Machin"> immédiatement au dessous du noeud courant.

    La modification porte sur la traduction de la feuille XML ou je dois conditionner l'écriture d'un text en fonction de ce que je trouve dans le <JointValue> de <ActivityType="truc"> recherché.

  4. #4
    Membre Expert
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    following::Event[@EventType="Machin"]/preceding::Activity[@ActivityType="truc"]/Target/JointTarget/Joint/JointValue

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 23
    Par défaut
    J'ai trouvé une solution, qui n'est certainement pas la meilleure, mais qui fonctionne dans mon cas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <xsl:variable name="toto" select="following-sibling::Activity[@ActivityType='bidul']/Event[@EventType='Machin']/preceding::Activity[@ActivityType='truc']/Target/JointTarget/Joint[@DOFNumber='1']/JointValue/>
    <xsl:variable name="toto1" select="$toto[1]"/>
    Si quelqu'un à mieux et plus simple je suis preneur et ça peux aider d'autre personnes.

    Merci d'avoir pris le temps de me répondre.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 23
    Par défaut
    Merci Loceka,

    Cependant lorsque j'utilise ta syntaxe le resultat est le retour de tous les JointValue de mon xml.

  7. #7
    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
    Citation Envoyé par aupawi Voir le message
    Cependant lorsque j'utilise ta syntaxe le resultat est le retour de tous les JointValue de mon xml.
    Ouaip. 'Faut juste ajouter des [1] pour ne garder que le premier de chaque.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 23
    Par défaut
    Ouaip. 'Faut juste ajouter des [1] pour ne garder que le premier de chaque.
    C'est ce que j'ai fait au début mais le résultat était le même. Peut être n'ai je pas placé les [1] au bons endroits?

  9. #9
    Membre Expert
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Par défaut
    Citation Envoyé par aupawi Voir le message
    C'est ce que j'ai fait au début mais le résultat était le même. Peut être n'ai je pas placé les [1] au bons endroits?
    Ben ça dépend, tu les as placés où ?

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 23
    Par défaut
    comme ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:variable name="toto" select="following-sibling::Activity[@ActivityType='bidul']/Event[@EventType='Machin'][1]/preceding::Activity[@ActivityType='truc']/Target/JointTarget/Joint[@DOFNumber='1'][1]/JointValue/>

  11. #11
    Membre Expert
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Par défaut
    Essaye comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:variable name="toto" select="following::Event[@EventType='Machin'][1]/preceding::Activity[@ActivityType='truc'][1]/Target/JointTarget/Joint[@DOFNumber='1'][1]/JointValue/>

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 23
    Par défaut
    Citation Envoyé par Loceka Voir le message
    Essaye comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:variable name="toto" select="following::Event[@EventType='Machin'][1]/preceding::Activity[@ActivityType='truc'][1]/Target/JointTarget/Joint[@DOFNumber='1'][1]/JointValue/>
    Effectivement cela fonctionne très bien comme ça et je te remercie.

    Je me pose une autre question :

    Je dois récupérer la valeur absolu de JointValue.
    Pour ce faire j'ai créé un template qui test La variable <toto> et qui renvoie <toto*-1> si <toto> est <0.

    Cependant l'opération *-1 ne fonctionne pas et le template renvoie la même valeur?

    une idée?

  13. #13
    Membre Expert
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Par défaut
    Et c'est sensé faire quoi cette "opération" ?

  14. #14
    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
    Citation Envoyé par Loceka Voir le message
    Et c'est sensé faire quoi cette "opération" ?
    Ben multiplier par -1, pour changer le signe du nombre et obtenir sa valeur absolue.

    Cependant l'opération *-1 ne fonctionne pas et le template renvoie la même valeur?
    Chez moi *-1 fonctionne sans aucun problème. 'Faut juste vérifier la syntaxe je pense.
    Typiquement, se rappeler que le signe < ne peut pas apparaître dans un attribut et que si tu le mets, la XSLT ne marchera pas, donc ne fera rien, et le fichier que tu pensais avoir généré n'a en fait pas été changé en tentant de lancer la XSLT (puisque la XSLT*n'a en fait pas été lancée.)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 23
    Par défaut
    Merci, à vous deux.
    La fonction fonctionnait bien mais eclipse (couplé à oxygen) sur lequel je travail me renvoyait la même valeur.
    Aujourd'hui, c'est réglé

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 22/10/2007, 10h31
  2. [Débutant][XPATH] recherche de noeud en XPATH
    Par Koma dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 16/10/2007, 10h20
  3. Réponses: 1
    Dernier message: 17/05/2006, 16h32
  4. accelerer une recherche de noeuds
    Par casgr1 dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 05/04/2006, 11h49
  5. [XSLT] rechercher un noeud depuis le noeud courant
    Par camboui dans le forum XSL/XSLT/XPATH
    Réponses: 12
    Dernier message: 21/12/2005, 18h47

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