IV. Localisation des composants avec XPath

Documents pareils
Module BDWEB. Maîtrise d informatique Cours 9 - Xquery. Anne Doucet. anne.doucet@lip6.fr

Document Object Model (DOM)

STAGE IREM 0- Premiers pas en Python

Initiation à la Programmation en Logique avec SISCtus Prolog

XML par la pratique Bases indispensables, concepts et cas pratiques (3ième édition)

XML et Bases de données. Les bases de données XML natives.

Nom : Date : Je connais par cœur toutes les opérations jusque 10.

Générer du code à partir d une description de haut niveau

Thierry BOULANGER. par la pratique. Bases indispensables Concepts et cas pratiques XML. 3 ième édition. Nouvelle édition

Evolution et architecture des systèmes d'information, de l'internet. Impact sur les IDS. IDS2014, Nailloux 26-28/05/2014

BASE DE DONNÉES XML NATIVE

Ingénierie Dirigée par les Modèles. Editeurs de modèles. (Eclipse Modeling Tools) Jean-Philippe Babau

Langage HTML (2 partie) <HyperText Markup Language> <tv>lt La Salle Avignon BTS IRIS</tv>

BASE DE DONNÉES XML NATIVE

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

OCL - Object Constraint Language

1. Installation du Module

CRÉER, ROUTER ET GÉRER UNE NEWSLETTER, UN ING

EXCEL TUTORIEL 2012/2013

Annexe C Spécification pour les fichiers importés en format XML

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Formation Administrateur de Données Localisées (Prodige V3.2) Recherche et consultation des métadonnées

TP 1. Prise en main du langage Python

Programmation des Applications Réparties. Parsers XML DOM et SAX

ECLIPSE ET PDT (Php development tools)

Plate-forme de tests des fichiers XML virements SEPA et prélèvements SEPA. Guide d'utilisation

COMMUNICATION TECHNIQUE N TCV060 Ed. 01. OmniVista 4760 Nb de pages : 18 Date : URGENTE NON URGENTE TEMPORAIRE DEFINITIVE

PRODIGE V3. Manuel utilisateurs. Consultation des métadonnées

Excel avancé. Frédéric Gava (MCF)

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

Note de cours. Introduction à Excel 2007

MAÎTRISE DE L ENVIRONNEMENT WINDOWS VISTA

Outils logiciels pour l'ingénierie documentaire

10 mn pour se connecter à un fichier Excel. Pas à Pas.

Système de Gestion Informatisée des. Exploitations Agricoles Irriguées avec Contrôle de l Eau

Logiciel de Base. I. Représentation des nombres

Partie publique / Partie privée. Site statique site dynamique. Base de données.

BD et XML : Exercices

Formation. Module WEB 4.1. Support de cours

Créer et partager des fichiers

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Sécurisation de Windows NT 4.0. et Windows 2000

Solutions en ligne Guide de l utilisateur

CREATION D UNE EVALUATION AVEC JADE par Patrick RUER (

Utiliser un tableau de données

Instructions et spécifications pour la transmission en format XML de déclarations par lots. 30 mai 2015 MODULE 1

INTRODUCTION AU CMS MODX

ContactForm et ContactFormLight - Gestionnaires de formulaire pour Prestashop Edité par ARETMIC S.A.

Sage 100 CRM - Guide de la Fusion Avancée Version 8. Mise à jour : 2015 version 8

LES TYPES DE DONNÉES DU LANGAGE PASCAL

GUIDE Excel (version débutante) Version 2013

SQL Parser XML Xquery : Approche de détection des injections SQL

chapitre 4 Nombres de Catalan

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Parcours FOAD Formation EXCEL 2010

Faculté Polytechnique de Mons. Le processus d Extraction, Transformation et Load (ETL) dans des entrepôts de données XML

TP 1 Prise en main de l environnement Unix

La base de données XML exist. A. Belaïd

Les structures de données. Rajae El Ouazzani

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

RAPPORT AUDIT SEO. Élaboré à l'attention de : Monsieur Greber Élaboré par : Cédric Peinado

SRAL Saint Raphaël. Maison des associations 213, rue de la Soleillette Saint Raphaël. : : dromain.jean-pierre@neuf.

Systèmes d information et bases de données (niveau 1)

FORMATION PcVue. Mise en œuvre de WEBVUE. Journées de formation au logiciel de supervision PcVue 8.1. Lieu : Lycée Pablo Neruda Saint Martin d hères

Plateforme PAYZEN. Définition de Web-services

EXCEL PERFECTIONNEMENT CALCULS AVANCES

URECA Initiation Matlab 2 Laurent Ott. Initiation Matlab 2

Introduction aux concepts d ez Publish

Manuel d utilisation

Design et implémentation d un logiciel de validation et de génération de configurations réseaux

CREER ET ANIMER SON ESPACE DE TRAVAIL COLLABORATIF

PrestaShop 1.6. Créer un site de e-commerce. Prestashop Créer un site de e-commerce. PrestaShop 1.6 Créer un site de e-commerce 26,50

TP3 : Manipulation et implantation de systèmes de fichiers 1

Excel 2007 Niveau 3 Page 1

Introduction : L accès à Estra et à votre propre espace Connexion Votre espace personnel... 5

2 S I M 1 P H O N E G U I D E U T I L I S A T E U R. Guide d utilisation E-commerce / Prestashop

Licence Sciences et Technologies Examen janvier 2010

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

SOMMAIRE. Comment se connecter?

Groupe Eyrolles, 2004 ISBN :

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Manuel fournisseur : procédure pour prendre connaissance d une consultation en ligne et soumettre une offre. Version de février 2014 SNCF

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Manuel d utilisation du web mail Zimbra 7.1

Programmation Internet Cours 4

Correction des Travaux Pratiques Organiser son espace de travail

Chapitre 2. Classes et objets

TP1 - Prise en main de l environnement Unix.

PRODIGE V3. Manuel utilisateurs. Consultation des métadonnées

Sélection du contrôleur

L ARBORESCENCE. Qu est-ce qu un dossier? L arborescence?

Cours d initiation à la programmation en C++ Johann Cuenin

AGASC / BUREAU INFORMATION JEUNESSE Saint Laurent du Var - E mail : bij@agasc.fr / Tel : CONSIGNE N 1 :

Généralités. javadoc. Format des commentaires. Format des commentaires. Caractères spéciaux. Insérer du code

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

I. Introduction aux fonctions : les fonctions standards

KWISATZ_TUTO_module_magento novembre 2012 KWISATZ MODULE MAGENTO

[Projet S9] Rédacteurs & Contributeurs Entité Rédacteurs Contributeurs Imededdine HOSNI Olivier MARTY. Validation du document Nom Date Visa

Chapitre 3 : outil «Documents»

NFE204 Bases de données avancées

Transcription:

IV. Localisation des composants avec XPath 90

Langage XPath Est un langage d expression (non XML) Standard du W3C: XPath1.0 (1999), XPath2.0 (2010), XPath3.0 (2014) Objectif: exprimer des requêtes pour localiser des parties d un document XML. Il est intégré dans o XSLT pour localiser un nœud précis ou un ensemble de nœuds afin de leur associer par exemple une présentation o Xquery: pour localiser un nœud précis ou un ensemble de nœuds afin de le (les) post-traiter o Xlink: pour pointer une cible précise dans un document (Xpointer) o XPointer : pointer des éléments de documents avec des expressions XPath dans les URL 91

Langage XPath Exemple Exemple d expression Xpath: /child::adresses /child::personne /child::nom /child::text() Résultat de d expression Xpath: Durand 92

Outils pour explorer XPath oxygen XML editor (https://www.oxygenxml.com/) XPath Visualiser Altova XMLSpy CookTop (http://www.toocharger.com/fiches/windows/cooktop/46333.htm) XML Copy Editor Zorba (http://www.zorba-xquery.com/). Il s agit d un interprète du langage XQuery dont XPath est un sous ensemble. http://eclipsexslt.sourceforge.net propose XPath Navigator qui permet de visualiser le résultat d une expression XPath dans eclipse. 93

Plan de cette partie 1. Arbre XML: (XML Data Model) 2. Le langage XPath a) Expressions de chemin b) Les axes c) filtres d) Les prédicats 94

Nœuds Ordre du document Contraintes sur les noeuds Un modèle de représentation arborescente d un document XML: le modèle XDM (XML Data Model) Le modèle XDM est commun à plusieurs langages de manipulation de données XML : o XPath 2.0 o XQuery 1.0 o XSLT 2.0 95

Nœuds Ordre du document Contraintes sur les noeuds Document XML: structure hiérarchique en arbre Avec quelques modifications: o Ajout d un nœud «document» au dessus de l élément de plus haut niveau o Les attributs et les textes sont des nœuds o Les commentaires et instructions de traitement sont des nœuds 96

Nœuds Ordre du document Contraintes sur les noeuds Exemple / (nœud document) <adresses> (nœud élément) <!--Carnet d adresses--> (nœud commentaire) id= " personnel" (nœud attribut) <type> <personne> (nœud élément) anniversaire: le 6 août <nom> <prenom> <adresse> classe="famille" Durand Martine (nœud texte) adr (nœud espace de noms) 6, rue des Ma

Nœuds Ordre du document Contraintes sur les noeuds Nœuds Un document XML est une arborescence composée de Nœuds Il existe 7 sortes de nœuds o Nœud document o Nœud élément o Nœud texte o Nœud attribut o Nœud espace de noms o Nœud commentaire o Nœud instruction de traitement 98

Nœuds Ordre du document Contraintes sur les noeuds Nœuds Le nœud document constitue la racine de l arbre d un document o à ne pas confondre avec l élément racine o Est l ancêtre de tous les nœuds de l arborescence XPath associée à un document XML. o Représente un document dans son ensemble o Ne possède pas d élément parent o Les enfants d un nœud document sont ses nœuds fils de type commentaire ou instruction de traitement et le nœud associé à l élément racine Un nœud élément o est étiqueté par le nom de l élément qu il représente o Ses fils, les nœuds éléments, texte, commentaire ou instruction de traitement sont appelés ses enfants Impossible d avoir deux nœuds enfants consécutifs qui sont des nœuds texte o Ses enfants sont ordonnés selon l ordre de lecture du document 99

Nœuds Ordre du document Contraintes sur les noeuds Nœuds Un noeud attribut o est étiqueté par le nom et la valeur de l attribut qu il représente o n a pas de noeud fils Un noeud texte o est étiqueté par le fragment de texte qu il représente o a pour père un noeud élément et n a pas de noeud fils Un nœud namespace o Qualifier les noms d attributs ou d éléments intervenant dans certaines parties d un document XML. Un nœud commentaire o Type d un nœud commentaire XML <!--. --> 100

Nœuds Ordre du document Contraintes sur les noeuds Ordre du document Ordre du document= ordre de lecture de ses constituants représentés par des nœuds (0) / (nœud document) (1) <adresses> (nœud élément) (2) <!--Carnet d adresses--> <personne> (3) (nœud commentaire) (nœud élément) id= " personnel" (4) (nœud attribut) (5) <type> anniversaire: le 6 août (14) (7) (9) <nom> <prenom> <adresse> (11) classe="famille" (6) (10) Durand Martine (nœud texte) (12) (8) adr (nœud espace 6, rue des (13) Ma

Nœuds Ordre du document Contraintes sur les noeuds ontraintes sur les noeuds Le noeud document peut avoir des noeuds fils qui peuvent être des noeuds commentaire, un nœud élément et instruction de traitement. Les enfants d un nœud élément: nœuds éléments, texte, commentaire, instruction de traitement. Les attributs et espaces de noms n ont pas de lien d affiliation avec les éléments auxquels ils sont associés dans le document XML. Ils sont simplement liés à eux. Un noeud ne doit pas avoir deux enfants consécutifs qui sont des noeuds texte. Un noeud ne doit pas avoir des enfants qui sont des noeuds texte dont le contenu est vide. Les descendants du noeud racine ou d un noeud élément sont ses enfants ou les enfants de ses enfants. Les enfants et les descendants d un noeud ne sont donc pas des noeuds de type attribut ou espace de noms. 102

Nœuds Ordre du document Contraintes sur les noeuds (0) (nœud document) (2) <!--Carnet d adresses--> (nœud commentaire) id= " personnel" (4) (nœud attribut) (5) (1) <adresses> (nœud élément) <type> classe="famille" (6) <personne> (3) (nœud élément) anniversaire: le 6 août (7) (9) <nom> <prenom> <adresse> (10) Durand Martine adr (nœud texte) (nœud espace (8) de noms) (12) Valeur textuelle du nœud (4) est " personnel " Valeur textuelle du nœud (8) est (14) " Durand" Valeur textuelle du nœud (0) est (11) " Durand Martine 6, rue des Magnolias anniversaire 6, rue le 6 août " des Ma (13) 103

Pourquoi XPath? Localiser des fragments d un document XML: des nœuds dans un arbre XML: Expressions de chemin : abrégée ou basée sur des axes Une expression de chemins XPath permet de sélectionner des chemins à parcourir dans l arbre du document en partant d un noeud origine jusqu à un ou plusieurs noeuds destination. 104

105 Introduction / livre sections section section Section1 chapitre Section2 chapitre élément (ovale) attribut (rectangle) texte (rectangle à coins arrondis) Chapitre1 paragraphe Mon paragraphe Chapitre2 texte Mon texte

/ livre sections (0) (1) (2) Trouver la liste des nœuds sections: Le chemin (0,1,2) est conforme à ce modèle /livre/sections (3) section (9) section (4) (5) Section1 chapitre (10) (11) Section2 chapitre (6) Chapitre1 (7) paragraphe (12) (13) Chapitre2 texte (8) Mon paragraphe (14) Mon texte 106

xpression de chemin Une expression de chemin XPath : o s'évalue en fonction d'un noeud contexte (qui est le nœud de départ), o désigne un ou plusieurs chemins dans l'arbre à partir du nœud contexte a pour résultat une instance du modèle XDM o un ensemble de noeuds (0 à plusieurs nœuds) ou o une valeur (numérique, booléenne ou alphanumérique) o une séquence (pour XPath 2.0) Consiste en une séquence d étapes séparées par / ou // L opérateur // désigne les descendants 107

Expressions relatives vs absolues Une expression (ou chemin) XPath peut être relative ou absolue (comme une URL) o Expression relative: Comme A/B//C (A, B et C sont appelés des sélecteurs) Relative au nœud courant (nœud quelconque du document). o Expression absolue: Si elle commence par «/». Exemple /A/B/C ou //A/B//C Point de départ: le nœud contexte est le nœud document Une expression absolue peut être considérée comme étant relative par rapport au nœud document. Chaque sélecteur sélectionne un ensemble de noeuds en fonction du résultat du sélecteur précédent. 108

Exemple d évaluation: /livre/sections/section/@titre 1 ère étape: /livre/sections/section/@titre A partir de la racine, on cherche les noeuds de type élément de balise livre 2 ème étape: sections/section/@titre À partir d un noeud contexte livre, on cherche les noeuds de type élément de balise sections 3 ème étape: section/@titre À partir d un noeud contexte sections, on cherche les noeuds de type élément de balise section 4 ème étape: @titre À partir d un noeud contexte section on cherche les noeuds de type attribut titre. 109

(3) (4) (5) Section1 section Introduction Expression de chemin chapitre / livre sections (9) (0) (1) (2) section (10) (11) Section2 chapitre 1 ère étape: /livre/sections/section/@ titre 2 ème étape: sections/section/@titre 3 ème étape: section/@titre 4 ème étape: @titre (6) Chapitre1 (7) paragraphe (12) (13) Chapitre2 texte (8) Mon paragraphe (14) Mon texte 110

Expression de chemin / livre sections (0) (1) (2) Trouver la liste des chapitres: /livre/sections//chapitre Les chemins (0,1,2,3,5) et (0,1,2,9,11)sont conformes à ce modèle (3) section (9) section (4) (5) Section1 chapitre (10) (11) Section2 chapitre (6) Chapitre1 (7) paragraphe (12) (13) Chapitre2 texte (8) Mon paragraphe (14) Mon texte 111

À quoi correspondent les expressions suivantes: 1) auteur/nom Tous les fils nom des éléments fils auteur (selon le nœud de départ) 2) //auteur Représente tous les éléments auteur. 3) /auteurs/personne/@nom Retourne tous les attributs nom de tous les éléments auteur fils de auteurs. 4) /auteurs/auteur/adresse/text() Retourne toutes les adresses sous forme de contenu texte des éléments fils auteur de auteurs. 112

xpression de chemin / livre (0) (1) //section[@"section1"]// paragraphe/text() sections (2) L attribut est préfixé par l opérateur @ Le texte est désigné par la fonction text(). (3) section (9) section (4) (5) Section1 chapitre (10) (11) Section2 chapitre (6) Chapitre1 (7) paragraphe (12) (13) Chapitre2 texte (8) Mon paragraphe (14) Mon texte 113

Les sélecteurs de noeuds Les sélecteurs de nœuds sont de la forme: un axe, un filtre et une liste de prédicats en suivant la syntaxe: axe:: filtre [predicat 1 ] [predicat n ] o Un axe: sens de navigation dans l arbre par rapport au nœud contexte o Filtre: type de nœud à localiser o Une suite de prédicats ou conditions(peut-être vide): propriétés que doivent satisfaire les noeuds parmi les nœuds retenus Sa valeur est la séquence de nœuds atteints à partir du nœud contexte en suivant l axe, vérifiant le filtre et les prédicats successifs 114

Les Axes Introduction Un axe sélectionne, dans un arbre et à partir du noeud courant, l ensemble des noeuds qui peuvent être atteints en suivant une certaine direction. Un axe a un sens : avant ou arrière. o Sens avant: Child, Descendant, descendant-or-self, Following, followingsibling o Sens arrière: Sans oublier Parent, ancestor, ancestor-or-self, Preceding-sibling, preceding. o l axe attribute pour les attributs de l élément courant ; o self pour le nœud courant o namespace qui sélectionne les nœuds de type espace de nommage attachés au nœud courant. 115

es Axes Introduction 116

Axe : Self Introduction Self: sélectionne le nœud contexte (ou courant) et seulement le nœud contexte a2 e3 / e1 e5 Expression: self::* Sens = avant ou arrière Sorte de nœud principal: élément Noeud contexte = e1 Noeuds sélectionnés (dans l ordre) = e1 t4 a6 e7 e8 t9 e: élément (ovale) a: attribut (rectangle) t: texte (rectangle à coins arrondis) 117

Axe : Child Introduction Child: sélectionne les fils directs du noeud courant (ne contient jamais de nœud de type attribut) dans l ordre d apparition dans le document a2 e3 / e1 e5 Expression: child::* Sens = avant Sorte de nœud principal: élément Noeud contexte = e1 Noeuds sélectionnés (dans l ordre) = e3, e5 t4 a6 e7 e8 t9 118

Axe : Descendant Descendant: sélectionne les descendants du noeud courant (ne contient jamais de nœud de type attribut) dans l ordre d apparition dans le document / Expression: descendant::text() e1 Sens = avant Sorte de nœud principal: élément a2 t4 e3 a6 e5 e7 e8 Noeud contexte = / Noeuds sélectionnés (dans l ordre) = t4,t9 t9 119

Axe : descendant-or-self descendant-or-self: sélectionne le nœud contexte et tous ses descendants dans l ordre d apparition dans le document Expression: descendant-or-self::* a2 e3 / e1 e5 Sens = avant Sorte de nœud principal: élément Noeud contexte = e5 Noeuds sélectionnés (dans l ordre) = e5, e7,e8,t9 t4 a6 e7 e8 t9 120

Axe : parent parent : sélectionne le noeud père du noeud courant, s il en existe un / Expression: parent::* Sens = arrière e1 Sorte de nœud principal: élément Noeud contexte = e5 a2 e3 e5 Noeuds sélectionnés (dans l ordre) = e1 t4 a6 e7 e8 t9 121

Axe : ancestor Introduction a2 ancestor : sélectionne les ancêtres (parents, grand-parent,.)du nœud contexte dans l ordre inverse d apparition dans le document. Cet axe contient toujours le noeud racine, sauf si le noeud contextuel est lui-même la racine. t4 e3 a6 / e1 e5 e7 e8 Expression: ancestor::* Sens = arrière Sorte de nœud principal: élément Noeud contexte = e7 Noeuds sélectionnés (dans l ordre) = e5, e1, / t9 122

Axe : ancestor-or-self ancestor-or-self: sélectionne le nœud contexte et tous ses ancêtres dans l ordre inverse d apparition dans le document / Expression: ancestor-or-self::* Sens = arrière e1 Sorte de nœud principal: élément Noeud contexte = t9 a2 e3 e5 Noeuds sélectionnés (dans l ordre) = t9, e8, e5, e1, / t4 a6 e7 e8 t9 123

Axe : following-sibling following-sibling: sélectionne les éléments frères droits (suivants) du nœud courant dans l ordre d apparition dans le document / Expression: following-sibling::* Sens = avant e1 Sorte de nœud principal: élément Noeud contexte = e3 a2 e3 e5 Noeuds sélectionnés (dans l ordre) = e5 t4 a6 e7 e8 t9 124

Axe : preceding-sibling preceding-sibling: sélectionne les éléments frères gauches du nœud courant dans l ordre inverse d apparition dans le document / Expression: Preceding-sibling::* Sens = arrière e1 Sorte de nœud principal: élément Noeud contexte = e5 a2 e3 e5 Noeuds sélectionnés (dans l ordre) = e3 t4 a6 e7 e8 t9 125

Axe : following Following: sélectionne les nœuds suivants le nœud courant dans l ordre d apparition dans le document excepté les descendants du nœud courant ainsi que tous les nœuds attributs et espace de noms qui lui sont associés / Expression: Following::* Sens = avant e1 Sorte de nœud principal: élément Noeud contexte = e7 a2 e3 e5 Noeuds sélectionnés (dans l ordre) = e8, t9 t4 a6 e7 e8 t9 126

Axe : Preceding Preceding: sélectionne les nœuds précédant le nœud courant dans l ordre inverse du document excepté les ancêtres du nœud courant ainsi que les nœuds attributs et espace de noms qui lui sont associés / Expression: Preceding::* Sens = arrière e1 Sorte de nœud principal: élément Noeud contexte = e8 a2 e3 e5 Noeuds sélectionnés (dans l ordre) = e7,t4,e3 t4 a6 e7 e8 t9 127

Axe : attribute attribute: sélectionne les nœuds de type attribut liés au nœud courant / Expression: Attribute::* Sens = avant e1 Sorte de nœud principal: attribut Noeud contexte = e5 a2 e3 e5 Noeuds sélectionnés (dans l ordre) = a6 t4 a6 e7 e8 t9 128

Filtre( ou test de nœud) Un filtre permet de sélectionner parmi les nœuds de l axe ceux qui sont d un certain type. Un filtre peut être: o un nom d'élément ou d'attribut /livre/auteurs/auteur/attribute::nom o le caractère * qui sélectionne tous les nœuds qui ont un nom child::* sélectionne tous les éléments fils du noeud courant, attribute::* sélectionne tous les attributs du noeud courant. 129

Filtre( ou test de nœud) o text() qui sélectionne les noeuds de type texte //section/paragraphe/text() o comment() qui sélectionne les noeuds de type commentaire o node() qui sélectionne les noeuds de n'importe quel type sauf la racine. /livre/sections/section/chapitre/node() o processing-instruction() qui sélectionne tous les noeuds de type instruction de traitement de l axe 130

Prédicat ou condition Un prédicat est une expression booléenne (placée entre crochets ) qui peut être évaluée à vrai ou faux, construite à partir : o d expressions de chemin et/ou o de fonctions prédéfinies: Fonctions sur les nombres Fonctions sur les booléens Fonctions sur les nœuds Fonctions sur les chaînes o Ainsi que des opérations et des conditions logiques 131

ondition d existence //child::element[n] o Sélectionne le nième élément element dans le nœud courant. //child::element[elt] o Sélectionne dans le nœud courant, l élément element qui a comme élément fils elt. //child::element[elt="valeur"] o Sélectionne dans le nœud courant, l élément ayant pour fils un nœud elt qui a une valeur égale à valeur; //child::element[@attribut] o Sélectionne dans le nœud courant, l élément element qui possède un attribut attribut // child::element[@attribut="valeur"] o Sélectionne dans le nœud courant, l élément dont l attribut attribut a une valeur égale à valeur 132

Fonctions Fonctions sur les nombres Fonction Définition sum(noeuds) count(noeuds) floor(nb) round(nb) renvoie la somme des noeuds après les avoir transformés en nombre. renvoie le nombre de nœuds. retourne le plus grand nombre entier plus petit ou égal à nb arrondi par le plus proche Fonctions sur les booléens Fonction true() false() not(booléen) Définition Toujours vraie Toujours fausse Vraie ssi le paramètre est faux 133

Fonctions sur les nœuds Fonction last() position () Définition vraie ssi le noeud est le dernier du contexte courant retourne le numéro d ordre du nœud dans le nœud contexte courant. La première position vaut 1, la dernière vaut last (). name(nœuds) id(nom) Renvoie l étiquette d un nœud Renvoie le nœud identifié par l étiquette nom Fonctions sur les chaînes Fonction string(object) contains (ch1,ch2) Concat(ch1,..,chn) Définition Convertit l objet donné en argument en chaine de caractères teste si chaîne1 contient chaîne2 Concaténation de chaînes Et bien d autres. 134

Opérations et conditions logiques Pour affiner des requêtes XPath, il est possible d utiliser des opérateurs dans un prédicat: Opérateur XPath Définition = Égalité!= Différence >, <, >=, <= Supérieur, inférieur, supérieur ou égal, inférieur ou égal and or Not() «ET» logique «ou» logique Négation logique +, - Addition, soustraction Div Mod Division Reste de la division entière (modulo) Chapitre[@id>3]: sélectionne tous les nœuds chapitre du nœud courant ayant leur id supérieur à 3 135

child::paragraphe[ child::figure ] sélectionne les <paragraphe>, enfants du noeud contexte, qui possèdent un (au moins un) enfant <figure>. child::paragraphe[ child::* ] sélectionne les <paragraphe>, enfants du noeud contexte, qui possèdent un (au moins un) enfant. child::*[ self::chapitre or self::annexe ] sélectionne les éléments enfants du noeud contexte qui sont des <chapitre> ou des <annexe>. child::paragraphe[ child::figure[position() = 2] ] sélectionne les <paragraphe>, enfants du noeud contexte, qui possèdent au moins deux <figure>. 136

xercice Trouver la liste des éléments ayant un seul attribut /descendant::*[count(attribute::*)=1] //*[count(@*)=1] Trouver la liste des chapitres contenant deux paragraphes /descendant::chapitre[count(child::paragraphe)=2] //chapitre[count(paragraphe)=2] 137

/ Déterminer le résultat de ces expressions: livre /descendant::section[2]/child::chapitre/desc endant::text() sections child::paragraphe[contains(text(), Mon') and position()=2] section section child::paragraphe[contains(text(), Mon')][p osition()=2] Section1 chapitre Section2 chapitre Chapitre1 paragraphe Chapitre2 paragraphe Mon paragraphe Mon texte 138

//child::chapitre[2] / livre sections section section Section2 Section1 chapitre chapitre chapitre chapitre Chapitre4 Chapitre1 paragraphe Chapitre2 paragraphe Chapitre3 paragraphe paragraphe Mon paragraphe Autre paragraphe Paragraphe ch3 para 139

//child::chapitre [2] [paragraphe] Sélectionne tous les nœuds chapitre en deuxième position s il possède un élément fils paragraphe / livre sections section section Section2 Section1 chapitre chapitre chapitre chapitre Chapitre4 Chapitre1 paragraphe Chapitre2 paragraphe Chapitre3 paragraphe paragraphe Mon paragraphe Autre paragraphe Paragraphe ch3 para 140

Évaluation d une expression de chemin axe::filtre [exp1]...[expn] A partir de S, une séquence de noeuds Pour chaque noeud de S (noeud contexte) o On calcule la séquence de noeuds N sélectionnés par l axe puis le filtre o On calcule la sous séquence N1 de N vérifiant exp1 o calcule la sous séquence N2 de N1 vérifiant exp2 o o On calcule la sous séquence Nn de Nn-1 vérifiant expn Résultat l union des séquences Nn des noeuds atteints à partir de chaque noeud de S 141

Syntaxe abrégée Syntaxe originale Syntaxe abrégée child::filtre filtre attribute::filtre @filtre Descendant-or-self:: filtre //filtre self::node(). parent::node().. [position()=x] [x] 142

xercice Utiliser les axes pour exprimer les requêtes suivantes: 1).//para self::node()/descendant-or-self::node()/child::para Sélectionne tous les éléments para descendants du noeud contextuel. 2)../title parent::node()/child::title qui sélectionne les enfants title de l'élément parent du noeud contextuel. 3) */*/@* child::*/child::*/attribute::* 143

xercice En utilisant les axes, et forme abrégée (pour les deux premières), déterminer: La liste des attributs titre /descendant::*/attribute::titre //@titre La liste des chapitres de la première section /child::livre/child::sections/child::secti on[1]/child::chapitre Et en forme abrégée /livre/sections/section[1]/chapitre La liste des éléments ayant un ancêtre sections 1./child::livre/child::sections/ descendant::* 2. /descendant::*[ancestor::sections] 144

Liens utiles Modélisation XDM http://www.w3.org/tr/xpath-datamodel/ XPath recommandation W3C: http://www.w3.org/tr/xpath20/ http://xmlfr.org/w3c/tr/xpath/ http://msdn.microsoft.com/fr-fr/library/ms256115.aspx Support de Cours en ligne Elisabeth Murisasco Jacques Le Maitre, Description et manipulation de documents XML, supports de cours en ligne http://lemaitre.univ-tln.fr/cours.htm 145