07/12/2021 Technologies XML UNIVERSITÉ GASTON BERGER DE SAINT-LOUIS Awa DIATTAR
07/12/2021 Technologies XML UNIVERSITÉ GASTON BERGER DE SAINT-LOUIS Awa DIATTARA awa.diattara@ugb.edu.sn Technologies XML XPATH 2 DIATTARA Awa Qu’est ce que XPath ? XPath est une technologie qui permet d’extraire des informations (éléments, attributs, commentaires, …) d’un document XML via l’écriture de d’expressions. XPath est un standard du W3C (depuis sa première version en 1999). La syntaxe de XPath n'est pas XML, mais il est intensément utilisé dans d'autres langages comme le XSL. XPath fournit un vocabulaire pour écrire des expressions permettant d’accéder directement aux informations souhaitées sans avoir à parcourir tout l’arbre XML. Technologies XML DIATTARA Awa Qu’est ce que XPath ? Une expression XPath peut s'exprimer : o Relativement vis-à-vis d'un nœud contextuel o D'une manière absolue Le résultat dune expression XPath peut être : o Un ensemble de nœuds (ou un nœud seul) o Une chaîne de caractères o Un nombre o Un booléen Technologies XML Technologies XML XPATH : un peu de vocabulaire 5 DIATTARA Awa Un peu de vocabulaire Exemple de document XML Technologies XML DIATTARA Awa Un peu de vocabulaire Les éléments d'un document XML sont reliés par des liens de parenté. Un élément est le parent d'un autre élément s'il le contient. Le parent est le nœud qui est directement au dessus de lui d'un point de vue hiérarchique. Chaque nœud (à part la racine) a un parent. o Exemples : le nœud répertoire est le parent du nœud personne qui lui- même est le parent des nœuds nom, prénom, emails. Technologies XML DIATTARA Awa Un peu de vocabulaire Un nœud a pour enfants tous les nœuds situés un niveau en dessous dans la hiérarchie. Un nœud peut donc avoir une infinité d'enfants. o Exemples : le nœud répertoire a pour enfant le nœud personne qui lui- même a pour enfants nom, prénom, emails. Technologies XML DIATTARA Awa Un peu de vocabulaire Un nœud a pour descendants tous les nœuds situés en dessous dans la hiérarchie. Un nœud peut donc avoir une infinité de descendants. o Exemples : le nœud répertoire a pour descendants les nœuds personne, nom, prénom, emails. Technologies XML DIATTARA Awa Un peu de vocabulaire Un nœud a pour ancêtres tous les nœuds situés en dessus dans la hiérarchie. Un nœud peut donc avoir plusieurs ancêtres. o Exemples : le nœud emails a pour ancêtres les nœuds personne et répertoire. Un nœud a pour frères tous les nœuds situés au même niveau dans la hiérarchie. Un nœud peut donc avoir une infinité de frères. o Exemples : le nœud nom a pour frères les nœuds prenom et emails. Technologies XML Technologies XML XPATH : chemin relatif / absolu 11 DIATTARA Awa Chemin relatif et chemin absolu XPath permet d’extraire des informations via l’écriture d’expressions. Ces expressions consistent à décrire le chemin emprunté dans l’arbre XML pour atteindre les données qui vous intéresse. Vous pouvez exprimer vos chemins de deux manières : o Chemin absolu : Le nœud de départ est toujours la racine de l’arbre Commence par le caractère "/". o Chemin relatif : accepte n’importe quel nœud de l’arbre XML comme point de départ. Technologies XML DIATTARA Awa Chemin relatif et chemin absolu Exemple de chemin absolu : récupérer le prénom de la personne décrite dans notre arbre XML o Etape1 : nœud répertoire o Etape2 : descendre au nœud enfant personne o Etape3 : descendre au nœud enfant prenom o L’expression XPath correspondante : /Etape1/Etape2/Etape3 Technologies XML DIATTARA Awa Chemin relatif et chemin absolu Exemple de chemin relatif : récupérer le prénom de la personne décrite dans notre arbre XML à partir du nœud email personnel. o Etape1 : nœud email dont l’attribut est personnel o Etape2 : remonter au nœud parent emails o Etape3 : aller au nœud frère prenom o L’expression XPath correspondante : Etape1/Etape2/Etape3 Technologies XML Technologies XML XPATH : syntaxe générale 15 DIATTARA Awa XPath : syntaxe générale Le concept de nœud courant : est l’endroit d’où l’on part. Il ne s’agit pas toujours de la racine du document, mais peut être n’importe quel nœud. A partir de là, on considère 3 éléments : o Un axe : direction dans laquelle on se dirige à partir du nœud courant (exemples : vers le père, les fils, les frères de gauches, etc.). o Un filtre : le type de nœuds qui nous intéresse dans l’axe choisi (exemples : des nœuds quelconques, des éléments quelconques ou un élément précis, des commentaires, etc.) o Un prédicat optionnel : des conditions supplémentaires pour sélectionner des nœuds parmi ceux retenus par le filtre dans l’axe. Ils constituent à eux trois une étape et on les note axe::filtre[prédicat]. Technologies XML DIATTARA Awa XPath : syntaxe générale L’enchaînement de plusieurs étapes, séparées par des '/ ' constitue un chemin XPath. Syntaxe : axe1::filtre1[prédicat1]/axe2::filtre2[prédicat2] o Exemple : parent::*/child::node() [position () = 2] Il est possible de faire une disjonction de requêtes XPath avec le signe | ; on obtient alors l’union des deux ensembles de nœuds correspondants. Exemple : axe1::filtre1[predicat1]/axe2::filtre2[prdicat2] | axe3::filtre3 [predicat3] Technologies XML DIATTARA Awa XPath : syntaxe générale Les axes : o L'axe définit le sens du parcours des nœuds. o Types d'axes possibles self : nœud courant lui-même child : axe par défaut - Enfants directs du nœud courant. parent : père du nœud courant descendant (descendant-or-self) : descendants du nœud courant (descendants ou le nœud lui-même). ancestor (ancestor-or-self) : ancêtres du nœud courant attribute : attributs du nœud courant preceding, following : nœuds situés à gauche ou à droite dans l’ordre de lecture du document preceding-sibling, following-sibling : frères gauches ou droits du même parent Technologies XML DIATTARA Awa XPath : syntaxe générale Les axes : exemples Technologies XML DIATTARA Awa XPath : syntaxe générale Les filtres : o Une fois un axe donné, le filtre permet de restreindre l'ensemble des nœuds sélectionnés à un nœud d'une certaine forme. o Le filtre permet donc d'indiquer le type des nœuds qui seront retenus dans l'évaluation de l'expression. Technologies XML DIATTARA Awa XPath : syntaxe générale Les filtres : o Les types possibles node(): tous les nœuds text() : les nœuds textuels * : tous les éléments ou attributs suivant l'axe utilisé nom : les éléments portant ce nom comment() : les nœuds commentaires processing-instruction() ou precessing-instruction('name') : toutes les instructions de traitement ou les instructions de traitement de nom name … Technologies XML DIATTARA Awa XPath : syntaxe générale Les filtres : o Exemples child::*: tous les éléments enfants du nœud courant attribute::* : tous les attributs du nœud courant child::node() : tous les enfants du nœud courant child::text : tous les éléments de nom text qui sont enfants du nœud courant child::text() : tous les nœuds textuels qui sont enfants du nœud courant child::precessing-instruction('xml-stylesheet') : toutes les instructions de traitement de nom xml-stylesheet qui sont enfants du nœud courant descendant::comment() : tous les commentaires descendants du nœud courant Technologies XML DIATTARA Awa XPath : syntaxe générale Les prédicats o Ils prennent la forme de tests que les nœuds sélectionnés devront vérifier. Ces tests peuvent impliquer des fonctions ou de nouveaux chemins XPath. o Exemples Les 5 premiers éléments enfants du nœud courant child::* [position()< 6]). Le dernier des fils de type chapitre child::chapitre [position()=last()]). Le titre du parent de type section : parent::section/titre Tous les attributs autres que id : attribute::*[name() != 'id'] Élément chapitre ayant au moins deux éléments section comme enfants chapitre[count(child::section) > 1] Technologies XML DIATTARA Awa XPath : syntaxe générale Il est possible de combiner ces tests à l’aide des opérateurs logiques classiques (AND, OR, NOT) ou de les enchaîner. Exemples : o Renvoyer le deuxième fils email si celui-ci contient le texte ugb child::email[contains(text(),'ugb') and position ()=2] o Sélectionner tous les fils email qui contiennent le texte ugb et parmi ceux-ci renvoyer le deuxième child::email[contains(text(),'ugb'][position()=2] Technologies XML DIATTARA Awa XPath : syntaxe générale Fonction prédéfinies o position() : numéro du nœud courant dans la liste de nœuds o contains (elem1, elem2) : test d’appartenance o concat(elm1, elm2) : concaténation de chaînes de caractères o starts-with(elem1,elem2) o substring(elem1,elem2) o count(elem) : compter le nombre de noeuds o name(elem) : nom de l’élément courant o last() : indicateur de dernière position o … Technologies XML DIATTARA Awa XPath : syntaxe générale Composition de chemin o L'opérateur '/ ' permet de composer des expressions de cheminement pour créer de véritables chemins dans un arbre XML. C'est un des opérateurs clés de XPath. o Une expression de la forme expr1/expr2 est évaluée de la façon suivante. o L'expression expr1 est d'abord évaluée pour donner une liste d'objets. o Pour chacun des objets de cette liste, l'expression expr2 est évaluée Technologies XML DIATTARA Awa XPath : syntaxe générale Composition de chemin o Exemples : self::node()/child::* tous les éléments qui sont enfants du nœud courant child::p/child::em tous les éléments em enfants d'un élément p enfant du nœud courant descendant::p/child::em tous les éléments em qui sont enfants d'un élément p descendant du nœud courant Technologies XML Technologies XML XPATH : syntaxe abrégée 28 DIATTARA Awa XPath : syntaxe abrégée uploads/Science et Technologie/ 5-manipulations-de-documents-xml-avec-xpath.pdf
Documents similaires
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/wKoXdBI53ngKGMavN9wUdz63VTIiO60hOEBFNXdrvGkAt9NdsAnfRdDMzfBi6EqjRbavnY0sZ9qo7DpuDseTvEBp.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/yeXzx1FTamvnIJJsjgva2rrasd7sWOwx98htZ2BE4dInVnXgbjMsPdDBdaVMybDaUgMbq0Glax6ddxMqSNMLtpRv.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/8FwKGgQtxg4YylXTTlhEvuX9BzzFrAvJYbZzuQqZEAJMJlHHJ4nNmpfF2CpnpQFdBxSpRw9vzozX5IcUKe9SJNLl.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/wEXXPnlk8mZlsHBjBBAZbsDHlI0COibIXpZNeXEEVGeE7FclEiAyJuNTniyv98imE6RzOQjkJM1UGvkvhO8OgtGD.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/98G9gD97kns9wakdWar2uEZ6637XaudYx8nbm7kf6PkDkQPRVzhnbI2McBvP7ISjM90upOn3AHrmxS0Hqs7YUDHM.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/zhrhmxqosi2HKRVu7i2m3PXKgdz1uqg8waZX9gPKfob5eSx3yOWZ9Xem4ZFebA3JPtDz02agyp4YlroaVkj6GfjV.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/2U2xX3RR4Bw5QDQsjI8c3Jr9W7XClxOatwjQBgS6Ol6Gk6jDgyDEA04LR1UYuHMzM3xDiBKUZdJ7sqMHxNq4fe2K.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/sw4ZznSwBFHChpJRCnSWkIA51w4l7MoznrtvhR0mr35Rw7X9cR4F1SaRZipo5D5MINILSP98mN0VjVSVFx9swCby.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/HbHB2qJK9l4ckUjde98K3Qpoa7x8QNBtdnsAXz6lSLAYYaDnCxUcFN1uuIn8czXJHmRIwZcUzlZuGL4jWOkVL3gi.png)
![](https://b3c3.c12.e2-4.dev/disserty/uploads/preview/9YNbbiXlnqD4VBk2D8dSh6VIvF0el73PQKnXkidSCOQm4DxH6KfL3ibvuhEyYDAlEWMRGpOEiHrHJJPetfyI9Z6e.png)
-
21
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Jul 09, 2021
- Catégorie Science & technolo...
- Langue French
- Taille du fichier 1.1515MB