Comment utiliser les filtres du langage XPath

fermer la fenetre

Des Applications Performantes Sans Vous Prendre La Tête !

Recevez la formation "Développement Facilte" GRATUITEMENT
Avec tous les Codes Sources Commentés
 
(Les événements, la programmation orientée objets, les modèles de conception, Les éditeurs, les outils, 
l'efficacité, CSS3, HTML5, JavaScript, jQuery, Dojo...)

Renseignez votre prénom et votre adresse email ci-dessous :

Dans ce cours on continue avec le langage XPath pour XML.

Apprenez à utiliser les filtres du langage XPath pour manipuler facilement et simplement le XML

Tout est dans la vidéo ci-dessous.

[ppmaccordion][ppmtoggle title=”Afficher le texte vidéo”]

Comment utiliser les filtres du langage XPath

Bonjour à tous et bienvenu sur Développement Facile.

On continu ensemble, le cours précédent traitait du langage Xpath, donc on continu sur le langage XPath, et dans ce cours, vous allez apprendre à utiliser les filtres avec le langage Xpath tout simplement.

Les filtres

Alors vous avez le signe étoile, ça sélectionne l’ensemble des nœuds définis par l’axe parcours,

Child :: * c’est tous les nœuds enfants du nœud courant, très pratique, justement pour sélectionner un ensemble de nœuds bien précis,

attribute :: * ça retourne la séquence de tous les nœuds attributs du nœud courant,

Le nom de l’élément, ça retourne l’ensemble des nœuds  éléments du nom correspondant dans l’axe de parcours, et l’axe de parcours ne peut pas être attribut ou nœud espèce,

Ancestor ::titre ça retourne tous les nœuds éléments du nom de titre ancêtre du nœud courant,

Le nom d’un attribut retourne l’ensemble des nœuds attributs du nom correspondant dans l’axe de parcours et l’axe de parcours est obligatoirement attribut dans ce cas-là,

Attribute :: id ou encore @id ça retourne l’attribut id du nœud élément courant, ça vous permet de récupérer un attribut,

Après node ça retourne l’ensemble des nœuds de l’axe de parcours donc ça va vous retourner un tableau qui contient tous les nœuds quand vous allez analyser votre fichier XML, tout simplement,

Ensuite élément nom ça va vous retourner le nœud élément donc l’ensemble des nœuds  éléments dont le nom est donné en argument, donc dans un fichier XML vous avez plusieurs nœuds items, tapez élément item entre parenthèse, ça va vous retourner tous les nœuds items, élément *,type ça va vous retourner l’ensemble des nœuds éléments de types ou du type dérivé du second argument,

Vous avez également élément nom type, schéma élément type, je passe un peu vite parce qu’il suffit de lire, je préfère me concentrer sur les éléments les plus importants, ceux que vous allez rencontrer le plus souvent, vous avez attribute ça retourne l’ensemble des nœuds attributs donc pour récupérer les attributs,

Attribut nom vous l’avez compris, ça retourne l’ensemble des nœuds attributs dont le nom est passé en paramètre,

Pareil attribute * type ça regroupe l’ensemble des nœuds attributs de type ou du type dérivé du second argument,

Et vous avez attribut nom type également, tout est expliqué sur votre écran pour les filtres.

Vous avez schéma – attribute texte très importants, je passe schéma attribute parce que vous allez le voir moins souvent, par contre texte vous allez le voir souvent, donc ça retourne l’ensemble des nœuds texte,

Processing-instruction c’est l’ensemble des nœuds instructions de traitement,

Processing-instruction targetname ça retourne l’ensemble des nœuds instructions de traitement dont la cible est donnée en argument,

Document-node ça retourne l’ensemble des nœuds documents,

Document-node (élément (nom)) ça retourne le nœud document, on suit dans l’ordre de priorité des parenthèses, on retourne le nœud document qui contient un nœud unique enfant de type élément qui a le nom passé en argument, donc je vous invite à essayer cela, vous vous rendrez mieux compte comment ça fonctionne.

Les prédicats ou conditions

Vous avez les conditions, on peut faire des prédicats ou des conditions, un prédicat c’est une expression logique entre crochets qui retourne vrai ou faux, et cela reste ça correspond à l’ajout, à l’utilisation des conditions que doivent vérifier les nœuds, tout simplement. Une condition peut être une comparaison de nœuds avec les opérateurs is, inférieur, supérieur, le comparateur de nœuds is est vrai si les nœuds comparés sont identiques, inférieur est vrai si le nœud de gauche est localisé avant le nœud droite dans le document XML, et supérieur est vrai, c’est l’inverse, si le nœud gauche est localisé après le nœud droit dans le document XML.

L’expression/tuto/titre </tuto/contenu, retomberait si le nœud élément titre est localisé avant le nœud élément contenu dans l’élément tuto, on part de tuto, à l’intérieur il y a un nœud titre et après il y a un nœud contenu, et en fonction de ça, votre texte inférieur retourner vrai ou faux, les comparaisons de nombre d’expressions arithmétiques avec plus, moins, div, idiv, mode, les chaîne de caractères, les fonctions, les opérateurs de comparaison, égal, inférieur, différent supérieur ou égal, inférieur ou égal, par exemple vous avez l’expression child :: *@type config, ça va retourner tous les nœuds éléments enfants du nœud courant ayant un attribut de type nom égal à config. Je conçois, ça peut vous paraître un peu compliqué tout ça, c’est pour ça qu’il faut l’utiliser, le mettre en pratique, l’expression logique d’opérateur or et and, l’opérateur logique node écrit avec la fonction note.

Vous avez par exemple l’expression child *note, donc à l’inverse, c’est que je viens de vous dire, je vous le répète, peut-être que j’ai été trop vite, j’ai tendance à parler trop vite, l’expression logique de l’opérateur or, and, vous avez or ou and, donc et, l’opérateur logique note est créé avec la fonction note et l’expression, vous faites par exemple [email protected] ça veut dire, ne contient pas l’attribut config, and et l’attribut id est différent de 69.

Cette expression child va retourner tous les nœuds éléments enfants du nœud élément courant dans l’attribut type n’est pas égal à config, l’attribut est différent de config, et dont l’attribut id n’est pas égal à 69, donc différent de 69.

Les abréviations

Vous avez les abréviations que vous pouvez utiliser, child peut être omis,

Attribute vous pouvez utiliser le signe @,

Self node vous pouvez utiliser le point,

/descendant-or-self ::node vous pouvez utiliser //

Parent ::node vous pouvez utiliser deux point successifs,

document node vous pouvez utiliser /, c’est d’ailleurs ce que l’on fait dans l’exemple précédent.

Les expressions de séquence

Une séquence est une mise d’expression séparée par des virgules, la séquence résultat peut contenir plusieurs fois le même objet, et une séquence d’entiers consécutifs est construite à partir de l’expression d’un intervalle a to b, si a est plus grand que b alors la séquence résultat est vide, l’expression 3 to 6 retourne la séquence 3456, comme ce que je viens de vous dire, a est supérieur à b, ça va vous retourner un résultat vide, donc l’expression 6 to 6, ça va vous retourner la séquence 6, et si vous avez l’expression 8 to 3, comme je vous l’ai dit, ça va vous retourner un résultat vide, il faut savoir que Xpath 2 permet la création de séquence à partir d’expressions de répétition, des conditions ou de quantification.

Expression de répétition

La syntaxe de l’expression for comment ça s’écrit, for comme vous connaissez sûrement for, si vous ne connaissez pas il y a plusieurs cours sur développement facile pour apprendre à utiliser for, les boucles donc ça existe en JavaScript, en PHP dans plusieurs langages, for $ var in expression etc, ça retourne une séquence, par exemple renvoi la séquence 345567, dans le détail ça veut dire que, vous avez for $ in 2,4 $ J in & to 3 return $ i+j, qu’est-ce que ça fait dans le détail ?

Ca fait 2+1, ça va retourner 3, après vous avez 2+2 ça va vous retourner 4, 2+3 ça va vous retourner 5, après vous passez à 3+2 ça va vous retourner 5, 3+3 et enfin, 4+4, for in, excusez-moi, for $ in 2,4, parcourez toutes les valeurs de 2 à 4, ça c’est bon, et après ,j in 1 to 3 parcourez toutes les valeurs de 1 à 3, au début on a 2+1, 2+2, 2+3, on a fait tous les 2, donc de 2 à 4, on a fait tous les 2.

On passe à 3, 3+2, 3+3, parce que ça doit être supérieur, et après on a passé à 4+3 donc ça fait 345567 qui vous est retourné.

Expression conditionnelle

If condition then condition 1 else expression 2, c’est la condition que vous connaissez, une expression de quantification sur une syntaxe a, à pour …sur… pardon, je recommence une expression de quantification sur séquence a, à pour syntaxe some, every, $var une séquence ect.

Pour some l’expression retourne vrai, si au moins un objet satisfies la condition, satisfait la condition, dans le cas de every l’expression retourne vrai si tous les objets de la séquence satisfont la condition, faites attention si vous utilisez some sur une séquence, il n’y a besoin que d’un seul objet qui soit vrai, qui respecte la condition pour retourner vrai, alors que every tous les objets doivent respecter la condition pour retourner vrai, c’est une différence très importante.

Test sur les types de données

Une séquence est de type empty-séquence, si la séquence est vide,

Type + indique la séquence contient au moins un objet de type donné,

Vous avez type ? indique que la séquence peut être vide ou contenir un objet du type donné,

type * ça indique que la séquence peut être vide ou contenir plusieurs objets du type donné,

Le type peut être un type atomique string, date, etc. Un type défini par l’utilisateur dans un schéma XSD associé, un test de type de nœuds comme node, élément, document ou un item qui indique n’importe quel type d’objet finalement.

Une expression de test de type d’un objet ou d’une séquence, la séquence instance of type, ça retourne vrai si la séquence est du type défini,

séquence instance of type est-ce qu’elle est du type défini cette séquence,

séquence castable as type ça retourne vrai si l’argument peut-être converti selon le type donné, est ce que la séquence peut-être castée dans type donné,

séquence treat as type ça revient de considérer la séquence comme étant du type donné en fait, et cet opérateur peut servir lorsqu’une fonction nécessite un type d’argument donné, ça peut permettre de faire du casting, si une fonction attend un number avec séquence treat as type, on lui dis traite cette séquence comme un type number, l’expression que vous voyez /* instance of content type, retourne la séquence de nœuds éléments qui sont de types contentType.

Combinaison de séquences

Si a et b sont deux séquences de nœuds, alors a ou b ça revient à équivalent à A union B, ça retourne la séquence des nœuds appartenant à A ou à B, dans l’ordre d’apparition dans le document XML, A intercepte B, ça retourne la séquence des nœuds appartenant à A et à B, dans l’ordre d’apparition du document XML, faites attention, A union B, A ou B, A intercepte B, c’est A et B, A excepte B, ça retourne la séquence des nœuds appartenant à A, mais pas à B, toujours dans l’ordre d’apparition du document XML, vous avez union, intercepte, union pour haut, intercepte pour et, et A expect c’est pour n’appartient pas.

Votre plan d’actions !

Dans ce cours vous avez vu énormément de choses sur les utilisations de Xpath, c’est maintenant à vous de mettre tout cela en pratique dans votre développement, si vous avez des questions posez-les directement sous ce cours, et moi je vous invite à consulter la deuxième vidéo, juste au-dessus de moi, il y a une image, lancez la vidéo deux, donc cliquez sur cette image et dans la deuxième vidéo vous allez aller plus loin dans le développement de vos applications, vous allez découvrir PHP avec XML, JavaScript avec XML, HTML 5, le CSS 3, cliquez simplement sur cette image pour lancer la deuxième vidéo pour apprendre tout ça, tous découvrir et mettre en pratique ce cours XML avec le PHP et le JavaScript et moi justement je vous dis à tout de suite dans la deuxième vidéo.

 

[/ppmtoggle] [/ppmaccordion]

Allez vous utiliser XPath dans votre développement d’application Web ?

Utilisez la zone commentaire, pour me demander quels cours vous souhaitez voir aborder dans les prochaines semaines.

Créez des Applications Performantes avec la Formation Gratuite Développement Facile !

Recevez des Cours Vidéos avec les codes sources 
(Les événements, la POO, les modèles de conception, Les éditeurs, 
efficacité, CSS3, HTML5, JavaScript, jQuery, Dojo...)