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] @level-1...marche pas


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] @level-1...marche pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:for-each select="preceding-sibling::e:A[@level=current()/@level]">
    marche très bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:for-each select="preceding-sibling::e:A[@level=current()/@level-1]">
    marche pas

    comprend pas...

  2. #2
    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
    j ai trouvé...c est une question de syntaxe
    ce n est pas @level-1 mais @level - 1


    nuance....

  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
    nouveau problème:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:apply-templates select="e:A[ not(preceding-sibling::e:A[@level &gt; current()/@level])]"/>
    ma question est simple, qu est ce que cela signifie en français???
    pour moi cela signifie:
    exectute le template correspondant aux
    e:A n ayant pas de voisins précédents dont l att level est supérieur au level courant...

    si c est bien ça alors le template ne réagit pas du tout comme il faut

  4. #4
    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
    Citation Envoyé par tiscars
    nuance....
    ...qui s'explique facilement : XML autorisant l'usage du '-' dans le nom d'un élément ou d'un attribut, et que donc level-1 constitue un nom d'attribut parfaitement valide, il faut qu'il y ait un espace pour que l'analyseur XPath puisse distinguer une soustraction d'un nom.
    Citation Envoyé par tiscars
    e:A n ayant pas de voisins précédents dont l att level est supérieur au level courant...
    Attention, current() désigne le noeud courant, c'est à dire le noeud "actif" au moment où le xsl:apply-templates s'exécute. Il ne faut pas confondre avec le noeud contextuel, qui change constamment au fur et à mesure de l'évaluation de l'expression XPath.

  5. #5
    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
    Citation Envoyé par GrandFather
    Attention, current() désigne le noeud courant, c'est à dire le noeud "actif" au moment où le xsl:apply-templates s'exécute. Il ne faut pas confondre avec le noeud contextuel, qui change constamment au fur et à mesure de l'évaluation de l'expression XPath.
    Mais oui bien sûr...
    dans ce cas il faut que je joue avec generate-id() je suppose.
    Merci GrandFather

  6. #6
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    le noeud contextuel c'est " . "


  7. #7
    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
    comprend pas trop l histoire du noeud contextuel ou noeud courant...

  8. #8
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927

  9. #9
    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
    arf...
    merci 8)

  10. #10
    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
    Citation Envoyé par Erwy
    le noeud contextuel c'est " . "

    Sauf que . peut désigner le noeud courant, s'il n'apparaît pas dans un prédicat ; c'est le cas ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select="."/>
    Cela reviendra au même que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select="current()"/>
    Tandis que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select="//toto[. = 'titi']"/>
    ne reviendra pas au même que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select="//toto[current() = 'titi']"/>

    Ce sont les joies de XSL/XPath...

  11. #11
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    pas d'accord !

    . et current() sont toujours noeud contextuel et noeud courant mais il arrive que le noeud contextuel soit le noeud courant

  12. #12
    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
    Citation Envoyé par Erwy
    . et current() sont toujours noeud contextuel et noeud courant mais il arrive que le noeud contextuel soit le noeud courant
    Ben c'est bien ce que j'ai dis...

  13. #13
    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
    Le jour ou je serai "responsable XML" je vous jure que je vous ban tous les 2

  14. #14
    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
    Citation Envoyé par tiscars
    Le jour ou je serai "responsable XML" je vous jure que je vous ban tous les 2
    Travaille ton XPath en attendant...

  15. #15
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    Citation Envoyé par GrandFather
    Ben c'est bien ce que j'ai dis...


    Citation Envoyé par GrandFather
    Citation Envoyé par Erwy
    le noeud contextuel c'est " . "

    Sauf que . peut désigner le noeud courant, s'il n'apparaît pas dans un prédicat ; c'est le cas ici :
    Alors que c'est le noeud contextuel qui se confond avec le noeud courant.

    Moi, meesquin et pinailleur ?!

    Meme pas vrai

  16. #16
    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
    Citation Envoyé par Erwy
    Alors que c'est le noeud contextuel qui se confond avec le noeud courant.
    Si, d'un point de vue syntaxique, mais pas du point de vue du fonctionnement interne de l'analyseur, je te l'accorde, le point désigne le noeud contextuel dans une expression XPath, current() le noeud courant, écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select="."/>
    revient bien au même que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select="current()"/>
    Et allez hop, c'est parti pour le topic de 40 pages absconses...

  17. #17
    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
    Vous sortez!

  18. #18
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    Moi je ne me référe qu'a la norme

    Function: node-set current()

    The current function returns a node-set that has the current node as its only member. For an outermost expression (an expression not occurring within another expression), the current node is always the same as the context node. Thus,

    <xsl:value-of select="current()"/>
    means the same as

    <xsl:value-of select="."/>
    [...]
    Après comment de vils programmeurs de bas niveau on pu l'implementer ....


    Citation Envoyé par GrandFather
    Et allez hop, c'est parti pour le topic de 40 pages absconses...
    seulement ??

  19. #19
    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
    "For an outermost expression", certes, le noeud contextuel et le noeud courant se confondent. Mais durant l'évaluation de l'expression XPath, le noeud contextuel change (le point ne désignera pas toujours le même noeud), tandis que le noeud courant ne variera pas.

    (encore 38 pages, ça va être chaud à tenir...)

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/09/2007, 11h39
  2. 'SHOW TABLES' marche pas sous postgresql !?
    Par fet dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 13/05/2004, 09h28
  3. Réponses: 9
    Dernier message: 07/05/2003, 12h57
  4. [GifDecoder] marche pas dans applet avec IE
    Par formentor dans le forum Applets
    Réponses: 2
    Dernier message: 06/05/2003, 10h43
  5. Sysdate qui marche pas ??
    Par StouffR dans le forum Langage SQL
    Réponses: 4
    Dernier message: 28/08/2002, 13h23

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