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 :

[XPath]problème for each


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Points : 786
    Points
    786
    Par défaut [XPath]problème for each
    pour l expression suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:for-each select="document($FileName)//*[name()='Changed' or name()='Withdrawn' or name()='New']//*[contains(name(),'id')][1]">
    		<xsl:copy-of select="."/>
    </xsl:for-each>
    executee sur un doc contenant des éléments comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <New>
      <trucid>
      <machin>
        <machinid/>
      </machin>
    </New>
    je récupererai truid mais aussi machinid ce que je ne veux pas...
    voyez vous le soucis ds mon expression

  2. #2
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    essaie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (document($FileName)//*[name()='Changed' or name()='Withdrawn' or name()='New']//*[contains(name(),'id')])[1]
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document($FileName)//*[name()='Changed' or name()='Withdrawn' or name()='New']/*[contains(name(),'id')][1]

  3. #3
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Points : 786
    Points
    786
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (document($FileName)//*[name()='Changed' or name()='Withdrawn' or name()='New']//*[contains(name(),'id')])[1]
    faux car je ne récupère que le premier du premier New(ou autre) qui vient

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document($FileName)//*[name()='Changed' or name()='Withdrawn' or name()='New']/*[contains(name(),'id')][1]
    est obligatoirement faux car il peux ne pas y avoir un id en premiere couche

  4. #4
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Points : 786
    Points
    786
    Par défaut
    bon voila la solution que j ai écrit...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:for-each select="document($FileName)//*[name()='Changed' or name()='Withdrawn' or name()='New']">
    	<xsl:copy-of select="descendant::*[contains(name(),'id') ] [1]"/>
    ...
    et là ça passe mais bon

    bizarrement il semble que l expression
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:copy-of select=".//*[contains(name(),'id') ] [1]"/>
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:copy-of select="descendant::*[contains(name(),'id') ] [1]"/>
    ne soient pas équivalentes...
    qq un saurait il pourquoi?
    merci!

  5. #5
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    en théorie, il ne devrait pas y en avoir... : http://www.w3.org/TR/xpath#path-abbrev

Discussions similaires

  1. [XSL - XPATH?] Deux for-each, une variable et un noeud
    Par Jidewe dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 04/03/2008, 09h47
  2. [XPATH] Récupèrer la "row" précédente dans le for each
    Par tommey dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 05/06/2007, 15h59
  3. [XSLT / XPATH] for-each-group: comment ça marche?
    Par be_tnt dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 24/11/2006, 09h40
  4. [XML-XPATH] Problème dans un for each
    Par stailer dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 26/12/2005, 12h11
  5. [VB6] For Each ... In ...
    Par Troopers dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 03/02/2003, 12h56

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