Le langage de requête XPATH

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

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

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

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

Chapitre 10 Arithmétique réelle

OCL - Object Constraint Language

Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques

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

Master d Informatique Corrigé du partiel novembre 2010

Cours No 3 : Identificateurs, Fonctions, Premières Structures de contrôle.

BD et XML : Exercices

URECA Initiation Matlab 2 Laurent Ott. Initiation Matlab 2

Logiciel de Base. I. Représentation des nombres

Langage SQL : créer et interroger une base

Note de cours. Introduction à Excel 2007

Présentation du langage et premières fonctions

INF 321 : mémento de la syntaxe de Java

Initiation à la Programmation en Logique avec SISCtus Prolog

Livre Blanc WebSphere Transcoding Publisher

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

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

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

4. SERVICES WEB REST 46

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

STAGE IREM 0- Premiers pas en Python

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

4 Exemples de problèmes MapReduce incrémentaux

DevTest Solutions. Référence. Version 8.0

Découverte de Python

BIRT (Business Intelligence and Reporting Tools)

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

SOCLE COMMUN - La Compétence 3 Les principaux éléments de mathématiques et la culture scientifique et technologique

Exercice 6 Associer chaque expression de gauche à sa forme réduite (à droite) :

Skype (v2.5) Protocol Data Structures (French) Author : Ouanilo MEDEGAN

BASE DE DONNÉES XML NATIVE

Document Object Model (DOM)

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

BASE DE DONNÉES XML NATIVE

EXCEL TUTORIEL 2012/2013

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

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

Déroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009

Algorithmique et programmation : les bases (VBA) Corrigé

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

Systèmes de Gestion de Bases de Données

Compléments de documentation Scilab : affichage de texte et formatage de nombres

INTRODUCTION : Données structurées et accès simplifié

Object Constraint Language (OCL)

Maple: premiers calculs et premières applications

Gestion des données avec R

FctsAffines.nb 1. Mathématiques, 1-ère année Edition Fonctions affines

Compétences Business Objects

Sommaire. 2 LINQ to Objects

Plateforme PAYZEN. Définition de Web-services

Introduction à ElasticSearch

Paris Airports - Web API Airports Path finding

Introduction à MATLAB R

Soon_AdvancedCache. Module Magento SOON. Rédacteur. Relecture & validation technique. Historique des révisions

IFT2880 Organisation des ordinateurs et systèmes

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

Notions fondamentales du langage C# Version 1.0

Initiation à LabView : Les exemples d applications :

Voici les objectifs de la séance d'aujourd'hui :

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

Ecole Technique «Transformation de données documentaires» Poitiers, mars Atelier 1: Sphinx. import, conversion, export de données

VOS PREMIERS PAS AVEC TRACENPOCHE

Approche Contract First

Gestion documentaire (Extraits du CCI version 1.2)

Gestion Électronique de Documents et XML. Master 2 TSM

CREATION D UNE EVALUATION AVEC JADE par Patrick RUER (

Informatique Générale

Algorithmique et Programmation, IMA

Les chaînes de caractères

< Atelier 1 /> Démarrer une application web

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Master I Génie Logiciel

Alfstore workflow framework Spécification technique

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

GUIDE Excel (version débutante) Version 2013

Génie Logiciel I. Cours VI - Typage statique / dynamique, fonctions virtuelles et classes abstraites, flots d entrées / sorties, et string

LES TYPES DE DONNÉES DU LANGAGE PASCAL

TD3: tableaux avancées, première classe et chaînes

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Codage d information. Codage d information : -Définition-

Catalogue des formations Edition 2015

Adobe Technical Communication Suite 5

Utiliser Améliorer Prêcher. Introduction à LDAP

Exprimer ce coefficient de proportionnalité sous forme de pourcentage : 3,5 %

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

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

length : A N add : Z Z Z (n 1, n 2 ) n 1 + n 2

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

Une introduction à Java

A quoi sert une banque?

Sage 100 CRM Guide de l Import Plus avec Talend Version 8. Mise à jour : 2015 version 8

Résoudre les problèmes PHP, les meilleures (et les pires) techniques

Transcription:

Le langage de requête XPATH Table des matières 1 Introduction 2 1.1 Présentation.............................................. 2 1.2 Structure d arbre d un document XML................................ 2 1.3 Les expressions XPATH........................................ 2 1.4 Les chemins.............................................. 3 1.5 Les sélecteurs de noeuds....................................... 3 2 Les axes de recherche 3 2.1 Les axes en avant........................................... 3 2.2 Les axes en arrière........................................... 4 2.3 Les axes à droite et à gauche..................................... 4 2.4 Les axes avant et après........................................ 5 2.5 Les axes pour les attributs...................................... 5 3 Les filtres 6 3.1 Filtrer les noeuds nommés....................................... 6 3.2 Filtrer les noeuds textuels....................................... 6 3.3 Filtrer les commentaires........................................ 7 3.4 Filtrer les instructions de traitement................................. 7 3.5 Filtrer les noeuds........................................... 7 4 Simplifications 7 5 Les types de base de XPATH 7 6 Les conditions 8 6.1 Condition d existence......................................... 8 6.2 Condition de position......................................... 9 6.3 Les conditions logiques........................................ 9 7 Fonctions & opérations 10 7.1 Opérations et fonctions sur les nombres............................... 10 7.2 Fonctions sur les booléens....................................... 10 7.3 Fonctions sur les noeuds....................................... 11 7.4 Fonctions sur les chaînes....................................... 11 1

1 Introduction 1.1 Présentation Le langage XPATH offre un moyen d identifier un ensemble de noeuds dans un document XML. Toutes les applications ayant besoin de repérer un fragment de document XML peuvent utiliser ce langage. Les feuilles de style XSL, les pointers XPOINTER et les liens XLINK utilisent de manière intensive les expressions XPATH. XPATH est un premier pas vers un langage d interrogation d une base de données XML (XQuery). 1.2 Structure d arbre d un document XML / <! > stock Texte <! > nom prix comment nom prix Texte Livre 50 Un commentaire monnaie= Francs CD 23 monnaie= Euros <!-- Texte --> <stock> <> <nom> Livre </nom><prix monnaie="francs"> 50 </prix> <comment> Un commentaire </comment> </> <> <nom> CD </nom><prix monnaie="euros"> 23 </prix> </> <!-- Texte --> </stock> 1.3 Les expressions XPATH La forme générale d une expression XPATH est 10 ou 10.12 un nombre réel (codé en virgule flottant) Hello ou "Hello" une chaîne de caractères nom de fonction() l appel à une fonction expr1 + expr2 une opération ( +, -, mod, div ) (nombre) expr1 = expr2 un test d égalité ( =,!= ) (booléen) expr1 > expr2 une comparaison ( <, <=, >, >= ) (booléen) expr1 or expr2 ou expr1 and expr2 (booléen) 2

(expression) une parenthèse chemin un chemin (ensemble de noeuds) 1.4 Les chemins Un chemin a la forme suivante : /sélecteur1/sélecteur2/... un chemin absolu sélecteur1/sélecteur2/... un chemin relatif Chaque sélecteur sélectionne un ensemble de noeuds en fonction du résultat du sélecteur précédent. L ensemble initial est soit le noeud courant (forme relative) soit la racine (forme absolue). Exemple : /stock//comment { / } --> stock --> { /stock } --> --> { /stock/[1], /stock/[2] } --> comment --> { /stock/[1]/comment } 1.5 Les sélecteurs de noeuds Les sélecteurs de noeuds sont de la forme : axe::filtre[ condition1 ][ condition2 ]... l axe indique un sens de recherche, le filtre sélectionne un type de noeud, les conditions sélectionnent sur le contenu. Les parties axe:: et [condition] sont optionnelles. 2 Les axes de recherche 2.1 Les axes en avant Les axes qui permettent de descendre dans l arbre : child les fils du noeud courant (c est l axe par défaut). Ces deux expressions sont identiques : /child::nom /nom self le noeud courant, 3

/stock/[ prix > 10 ]/self::[ prix < 99 ] /stock//self::prix résultat vide descendant les descendants du noeud courant /stock/descendant::prix descendant-or-self les descendants du noeud courant plus lui-même. 2.2 Les axes en arrière Les axes qui permettent de remonter dans l arbre : parent le noeud parent du noeud courant (si il existe), /stock//comment/parent::/prix ancestor les ascendants du noeud courant /stock//comment/ancestor::stock/ ancestor-or-self que dire? 2.3 Les axes à droite et à gauche following-sibling les noeuds frères placés après le noeud courant, stock preceding-sibling les noeuds frères placés avant le noeud courant, 4

2.4 Les axes avant et après following les noeuds placés après dans le document, stock nom prix comment nom prix preceding les noeuds placés avant dans le document, 2.5 Les axes pour les attributs attribute les noeuds de type attribut du noeud courant, /stock//prix/attribute::monnaie namespace les noeuds de type espace de nom du noeud courant, 5

3 Les filtres 3.1 Filtrer les noeuds nommés identificateur les noeuds de l axe qui portent ce nom. /stock//prix/attribute::monnaie * les noeuds de l axe qui ont un nom (attribut ou élément) /stock/*/prix/attribute::* 3.2 Filtrer les noeuds textuels text() tous les noeuds de type texte de l axe. /stock//*/text() 6

3.3 Filtrer les commentaires comment() tous les noeuds de type commentaire de l axe. 3.4 Filtrer les instructions de traitement processing-instruction() tous les noeuds de type instruction de traitement de l axe, 3.5 Filtrer les noeuds node() tous les noeuds de l axe sauf la racine, /stock//prix/node() 4 Simplifications Afin d éviter une trop grande lourdeur, les simplifications suivantes sont autorisées : originale simplifiée exemple child:: /stock/ attribute:: @ /prix/@monnaie /descendant-or-self::node()/ // //prix self::node(). prix[. = 10] parent::node().. prix/../nom [position() = x] [x] s[4] 5 Les types de base de XPATH Il existe quatre types de base : booléen, chaîne de caractères, nombre réel et ensemble de noeuds. Chaîne de caractères : chaine de caractères ou "chaine de caractères" string(expression) string(10) = 10 string(20.300) = 20.3 string(/stock/*/nom) = Livre (le premier noeud) string(/stock/) = Livre 50... (concaténation des noeuds text()) string(/stockx) = Booléen : 7

true() ou false() boolean(expression) renvoie vrai ssi l argument est le booléen vrai un nombre différent de zéro la chaîne de longueur supérieure à zéro un ensemble de noeuds non vide boolean(10) boolean(0) boolean( hello ) boolean( ) boolean(true()) boolean(false()) boolean(/stock/) boolean(/stock/comment) = true = false = true = false = true = false = true = false Nombre réel : 100 ou 234.56 number( expression ) number(10) = 10 number( 10.12 ) = 10.12 number( 10.120 ) = 10.12 number( 10x ) = NaN (not a number) number(true()) = 1 number(false()) = 0 number(/stock/*/prix) = 50 (le premier) number(/stock/prix) = NaN 6 Les conditions Rappel : les sélecteurs de noeuds sont de la forme : Définition : Un sélecteur calcule axe::filtre[ condition1 ][ condition2 ]... les noeuds de l axe qui respectent le filtre et pour lesquels les conditions (traduites en booléen) sont vraies. 6.1 Condition d existence Sélectionner un noeud en fonction de son contenu : /stock/[ prix/attribute::monnaie ] 8

/stock/[ prix[ attribute::monnaie ] ] Ces expressions sélectionnent les noeuds à condition qu un prix existe avec l attribut monnaie précisé. Remarque : les sous-expressions sont souvent relatives. Un exemple étrange : /stock/[ /stock/*/prix ] 6.2 Condition de position numéro vraie ssi le noeud courant a cette position dans le contexte courant. [ 2 ][ comment ] [ comment ][ 2 ] La première expression sélectionne les noeuds en deuxième position si il possède un élément fils comment, la seconde sélectionne le deuxième noeud qui possède un élément fil comment. 6.3 Les conditions logiques Les relations portent sur deux sous-expressions XPATH : exp1 relation exp2 vraie ssi il existe n1 (dans le résultat de exp1) et n2 (dans le résultat de exp2) qui respectent la relation. Les relations possibles sont [ prix = 100 ] les s qui ont un prix à 100. [ prix!= 100 ] les s qui ont un prix différent de 100. [ prix < //prix ] tous les s sauf les plus onéreux. =!= < <= > >= Conversion : Pour l égalité, la conversation est automatique pour les nombres et les booléens. Pour les relations d ordre, la conversion en nombre est automatique. Quelques expressions vraies : (10 = 10.0 ) (10 < 12.0 ) ( 10.3 < 12.0 ) (true() = "faux") 9

condition1 and condition2 vraie ssi les deux conditions le sont également. [prix > 10 and comment] condition1 or condition2 vraie ssi au moins une des deux conditions est vraie. 7 Fonctions & opérations Les fonctions et opérations sont utilisables dans les expressions logiques, les clauses <xsl:value-of.../> des feuilles de style XSL. 7.1 Opérations et fonctions sur les nombres +, -, mod, div, opérations utilisables sur les nombres (conversion automatique). [(prix div 10) = (prix mod 10)] sum( noeuds ) renvoie la somme des noeuds après les avoir transformés en nombre. count( noeuds ) renvoie le nombre de noeuds. floor( nombre ) arrondi par le bas. ceiling( nombre ) arrondi par le haut. round( nombre ) arrondi par le plus proche. 7.2 Fonctions sur les booléens true() et false() constantes not( boolean ) vraie ssi le paramètre est faux. [not(prix!= 100)] tous les prix sont égaux à 100. 10

7.3 Fonctions sur les noeuds last() renvoie le nombre de noeuds dans le contexte du noeud courant. //[last()] le dernier //[last()-1] l avant dernier position() renvoie la position du noeud courant dans son contexte. //[position() = 1] le premier //[position()<last()] les s sauf le dernier local-name( noeud ) renvoie la partie locale de l étiquette d un noeud. namespace-uri( noeud ) renvoie la partie espace de nom de l étiquette d un noeud. name( noeud ) renvoie l étiquette d un noeud. id( chaines ) renvoie les noeuds identifiés par au moins une des étiquettes, id( CD )/prix id( CD Voiture SX2500 CD )/prix id( /reference/attribute::ref )/prix 7.4 Fonctions sur les chaînes string( objet ) renvoie une version chaîne du paramètre. concat( chaîne1,..., chaînen ) concaténation de chaînes. string-length( chaîne ) renvoie la longueur d une chaîne. normalize-space( chaîne ) renvoie une version normalisée (suppression des blancs au début et à la fin et remplacement de toute suite de blancs par un seul). 11

normalize-space( AB CD E ) = AB CD E les blancs comprennent l espace, le retour à la ligne (codes 10 et 13) et la tabulation (code 9). translate( ch1, ch2, ch3 ) renvoie une copie de ch1 dans laquelle les caractères présents dans ch2 sont remplacés par les caractères de même position dans ch3. translate( ABCD, AC, ac ) = abcd substring-before( ch1, ch2 ) renvoie la chaîne res définie par ch1 = res + ch2 + reste. substring-after( ch1, ch2 ) renvoie la chaîne res définie par ch1 = reste + ch2 + res. substring( chaîne, début ) et substring( chaîne, début, len ) extraction de sous-chaîne. starts-with( ch1, ch2 ) vraie ssi ch1 débute par ch2. contains( ch1, ch2 ) vraie ssi ch1 contient ch2. 12