>Sans rentrer dans les détails, quand vous écrivez
>following-sibling::*[][],
>> * "following-sibling" est le nom de l'axe de >recherche.
>> * "*" est un raccourci qui signifie "n'importe quel élément".
On n'en a deja debattu mais comme rappel, * est un raccourci pour les type element pas les text() et autres nodes() par exemple
>> * "[]" dont des prédicats (c'est à dire des conditions) évalués
>> les uns à la suite des autres (de gauche à droite) et se
>> restreignant les uns les autres. Dans la plupart des cas,
> > l'effet est le même que si on écrivait un seul prédicat avec des
> > "and" entre les critères.
>>Dans ces prédicats, les parenthèses ont la signification qu'elles ont
>>dans tous les langages de programmation : elles permettent de grouper
>>des termes.
>>Tout cela est expliqué dans la spécification :
>>http://xmlfr.org/w3c/TR/xpath#location-paths
Je pense qu'il faudrait quand même spécifié les () peu evidente et dont l'explication syntaxique ce trouve uniquement dans la grammaire de la norme(pas la partie la plus abordable)
Fonctionnement:
les parenthese gauches se pacent TOUJOURS au debut de l'expression ainsi
((/A/B[1])[1])/C est valide
(/A(/B[1])[1])/C ou (/A/(B[1])[1])/C ou (/A/B([1])[1])/C etc... sont faux
difference entre
/A/B[1][1] et(/A/B[1])[1]
/A/B[1][1] il n'y a pas de priorité entre les [] comme deja fait remarqué equivalent a /A/B[position()=1 and position()=1]
(/A/B[1])[1] on evalue d'abord (/A/B[1]):Pour chaque A on prend son premier fils B ensuite , sur ce nouveau node-set on applqiue l'autre condition.
Ici ce la nous donnera le premier B cette selection.
Attention , les preceding et ancestor par exemple inverse normalement le sens des noeuds
ainsi pour
<?xml version="1.0" encoding="UTF-8"?>
<R>
<a>
<b>1</b>
</a>
</R>
//b/ancestor::*[1] c'est a le premier element, mais les () range automatiquement dans le sens des child::*
(//b/ancestor::*)[1] c'est donc R le premier element
En esperant avoir été assez clair
--
Devenez redacteur <XML>fr et contribuez au developpement du
xml francophone (http://xmlfr.org/infos/redacteurs/) !
Liste de diffusion "xml-tech@xmlfr.org" (http://xmlfr.org).
Cette liste est a votre disposition pour discuter en francais de
tout sujet technique lie a XML.
Pour resilier votre abonnement, envoyez un message contenant
la commande "unsubscribe" a xml-tech-request@xmlfr.org
(mailto:xml-tech-request@xmlfr.org?Subject=unsubscribe)
Received on Thu Dec 1 14:37:07 2005