marche très bienCode:<xsl:for-each select="preceding-sibling::e:A[@level=current()/@level]">
marche pas :cry:Code:<xsl:for-each select="preceding-sibling::e:A[@level=current()/@level-1]">
comprend pas...
Version imprimable
marche très bienCode:<xsl:for-each select="preceding-sibling::e:A[@level=current()/@level]">
marche pas :cry:Code:<xsl:for-each select="preceding-sibling::e:A[@level=current()/@level-1]">
comprend pas...
j ai trouvé...c est une question de syntaxe
ce n est pas @level-1 mais @level - 1
nuance.... :roll:
nouveau problème:
ma question est simple, qu est ce que cela signifie en français???Citation:
Code:<xsl:apply-templates select="e:A[ not(preceding-sibling::e:A[@level > current()/@level])]"/>
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
...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
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.Citation:
Envoyé par tiscars
Mais oui bien sûr... :sm:Citation:
Envoyé par GrandFather
dans ce cas il faut que je joue avec generate-id() je suppose.
Merci GrandFather
le noeud contextuel c'est " . "
:sm:
comprend pas trop l histoire du noeud contextuel ou noeud courant...
arf...
merci 8) :oops:
Sauf que . peut désigner le noeud courant, s'il n'apparaît pas dans un prédicat ; c'est le cas ici :Citation:
Envoyé par Erwy
Cela reviendra au même que :Code:<xsl:value-of select="."/>
Tandis que :Code:<xsl:value-of select="current()"/>
ne reviendra pas au même que :Code:<xsl:value-of select="//toto[. = 'titi']"/>
Code:<xsl:value-of select="//toto[current() = 'titi']"/>
Ce sont les joies de XSL/XPath... :lol:
pas d'accord !
. et current() sont toujours noeud contextuel et noeud courant mais il arrive que le noeud contextuel soit le noeud courant :wink:
Ben c'est bien ce que j'ai dis... :koi:Citation:
Envoyé par Erwy
Le jour ou je serai "responsable XML" je vous jure que je vous ban tous les 2 :sm:
Travaille ton XPath en attendant... :mrgreen:Citation:
Envoyé par tiscars
:nono:Citation:
Envoyé par GrandFather
Alors que c'est le noeud contextuel qui se confond avec le noeud courant.Citation:
Envoyé par GrandFather
Moi, meesquin et pinailleur ?! :ange:
Meme pas vrai :lol:
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 :Citation:
Envoyé par Erwy
revient bien au même que :Code:<xsl:value-of select="."/>
Et allez hop, c'est parti pour le topic de 40 pages absconses... :lol:Code:<xsl:value-of select="current()"/>
Vous sortez!
Moi je ne me référe qu'a la norme :ange:
Après comment de vils programmeurs de bas niveau on pu l'implementer .... :aie:Citation:
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="."/>
[...]
seulement ?? :lol:Citation:
Envoyé par GrandFather
"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...)