SlideShare une entreprise Scribd logo
XML
XPATH & XSLT
INTRODUCTION
XPath pour XML Path Langage
 XPath est un standard XML qui définit des règles
grammaticales pour identifier des noeuds ou des ensembles de
noeuds dans des documents XML.
 XPath est un standard W3C
XPATH TERMINOLOGIES
• XPath se représente le document
XML en tant qu’arbre
– dont la racine est l’élément racine
du document XML
– les noeuds sont les différents
éléments et attributs du XML
root
element
element
attribute
text
namespace
comment
processing-
instruction
• Les relations entre nœuds :
– Parent (parent) : l’élément contenant
– Fils (childrens) : les éléments contenues
– Fréres (siblings) : les éléments ayant le même parent
– Ancetres (ancestors) : l’élément parent, le parent du
prent, …
– Descendants (descendants) : les éléments fils, les fils
des fils, …
XPATH TERMINOLOGIES
XPATH- SYNTAXE
• Une expression XPath est composée de segments séparés par « / ».
– Exemple : l’expression /annuaire/entree/nom permet de
sélectionner le nœud nom du fragment XML ci-dessus.
La même expression retourne des résultats différents selon son
contexte d’évaluation
• Exemple : /nom
– Si le contxet est le root : retourne 2 éléments
– Si le contexte est un élément entree : retourne l’élément
fils ‘nom’
XPATH- SYNTAXE
Expression Description Exemple
Nom du nœud Sélectionner Tous les
nœuds fils du même nom
à partir du nœud courant
telephone
/ (début de
l’expression)
Sélectionner à partir de la
racine du document
/annuaire/entree/nom
//node Sélectionner tous les
nœuds descendants à
partir du nœud courant du
même nom
//nom
. Sélectionner le nœud
courant
./telephone
.. Sélectionner le nœud
parent
../entree
@attribut Sélectionner l’attribut du
même nom
//entree/@attribut
XPATH- SYNTAXE
Symbole Description Exemple
* Sélectionner n’importe quel
élément quel que soit le nom
//*
@* Sélectionner n’importe quel
attribut quel que soit le nom
/annuaire//*/@*
Dans une expression XPath on peut utiliser le caractère générique *,
pour sélectionner des noeuds dont le nom est inconnu.
XPATH- SYNTAXE
 Dans une expression XPath on peut
utiliser le caractère | , pour sélectionner
sur plusieurs chemins.
 Exemple : /annuaire/entree/nom | //entree
 Sélectionner les éléments fils nom de la racine et tous les
descendants entree de la racine
XPATH- SYNTAXE
• Pour affiner la sélection, XPath propose la notion de
prédicat pour pouvoir filtrer les nœuds à récupérer
– La syntaxe : /elt1/elt2/eltAVerifier[predicat]
– Le prédicat est une expression que doit vérifier le ou les nœuds
à sélectionner.
• L’expression prédicat accepte :
– les opérateurs de comparaison : <, >, <=, >=, =, !=
– les opérateurs logiques : not(..), and, or
– les opérateurs arithmétiques : +, -, *, div, mod
– les opérateurs de regroupement : (..)
XPATH- SYNTAXE
Exemple Description
/annuaire/entree[1] Sélectionner le 1er fils ‘entree’ de l’élément
annuaire
/annuaire/entree[last()] Sélectionner le dernier fils ‘entree’ de
l’élément annuaire
/annuaire/entree[last()-1] Sélectionner l’avant dernier fils ‘entree’ de
l’élément annuaire
/annuaire/entree[position()<3] Sélectionner le deux 1er fils ‘entree’ de
l’élément annuaire
/annuaire/entree[position()=3] Sélectionner le 3éme fils ‘entree’ de
l’élément annuaire
/annuaire/entree[nom=‘paul’ ]/telephone Sélectionner les fils ‘telephone’ des
éléments ‘entree’ dont le contenu du fils
‘nom’ est paul
/annuaire/entree[@attribut=‘value’] Sélectionner les fils ‘entree’ dont la valeur
de l’attribut ‘attribut’ est ‘value’
/annuaire//entree[nom|telephone] Sélectionner les descendants ‘entree’ qui
au moins un fils ‘nom’ ou ‘telephone’
XPATH- SYNTAXE
XPATH-FONCTIONS
Les fonctions XPath permettent d’affiner les expressions prédicat
conversion : string(object?), number(object?), boolean(object?)
ensemble de nœud : position(), last(), count(), name(node-set?), local-
name(node-set?), Namespace_uri(node-set?)
traitement de string : concat( string , string , string *), starts-with( string,string ),
contains( string , string ), substring-before( string , string ), substring-after( string ,
string ) …
numériques : sum( node-set ), floor( number ), ceiling( number ), round( number )
booléennes : not( boolean ), true(), false()
Expression Description
//*[starts-with(name(),'B')] Recherche de balise
dont le nom commence
par B
/ROOT/*[contains(translate(.,'0123456789',''),‘abs')]
<ROOT><A>ab128s</A><A>ab9877V</A></ROOT>
Recherche de contenu
de chaîne dont on exclut
certains caractères
/ROOT/A[concat( substring(., 7, 4),substring(., 4,
2),substring(., 1, 2))<20071201]
Comparaison de dates
sum(/ROOT/A[number(.)!='NaN'])
<ROOT><A>abs</A><A>10</A><A>15</A></ROOT>
Éliminer les noeuds non
numériques lors d'une
somme
XPATH-FONCTIONS
XPATH- Chemin de localisation
• Une expression XPath utilisée pour sélectionner une collection de
nœuds s’appelle un chemin de localisation.
• Un chemin de localisation se compose d'une ou de plusieurs étapes
de localisation, séparées par /.
– Chaque étape sélectionne à son tour des nœuds par rapport à l’étape
précedente
– Un chemain de localisation qui commence par / est un chemain absolu
– La syntaxe /elt1/elt2/elt3 est dite abrégé
• La syntaxe non abrégé écrit chaque étape sous la forme :
axe::test[prédicat]
– Elle permet plus de possibilité de sélection (voisins, commentaire, processing-
instruction, …)
• axe : spécifie la relation d'arborescence entre le nœud de contexte et
les nœuds que l'étape de localisation doit sélectionner : parents, fils,
ancêtres, voisin...
– exemple :Child, parent, ancestor, self....
• test : indique parmi tous les nœuds de l'axe spécifié, celui ou ceux à
considérer comme des candidats, Il suit l'axe et doit être précédé de
:: .
– exemple : parent::*, child::comment(), child::A ...
• Prédicat (optionnel) : il consiste en des conditions sur les noeuds
parcourus. Il est encadré par [ ] .
XPATH- Chemin de localisation
Axe Description
ancestor:: Les ancêtres du nœud courant
ancestor-or-self:: Nœud courant et ses ancêtres
attribute:: Attributs du nœud courant
child:: Les fils du nœud courant, n'inclut pas de nœud
d'attribut ou d'espace de noms
descendant:: Les descendants du nœud courant , n'inclut pas de
nœud d'attribut ou d'espace de noms
descendant-or-self:: Nœud courant et ses descendants
following:: Tous les nœuds qui suivent le nœud courant dans
l'arborescence, sauf ses nœuds descendants, d'attribut et
d'espace de noms.
XPATH- Chemin de localisation
Axe Description
following-sibling:: Tous les frères suivants du nœud courant, il ne
comprend pas les autres enfants qui apparaissent
avant le nœud courant.
namespace:: Nœuds d'espace de noms du nœud courant.
parent:: Le parent du nœud de contexte
preceding:: Tous les nœuds qui précèdent le nœud de contexte
dans l'arborescence, sauf les nœuds ancêtres,
d'attribut et d'espace de noms.
preceding-sibling:: Tous les frères suivants du nœud courant, il ne
comprend pas les autres enfants qui apparaissent
avant le nœud courant.
self:: Nœud courant
XPATH- Chemin de localisation
Exemple Résultat
A/B[1]/following::*
A/B[2]/preceding::*
A/B[1]/following::D
A/descendant::*
XPATH- Chemin de localisation
XML TRANSFORMATION
Utiliser un CSS pour formater un contenu XML
 À l'aide de feuilles de style CSS, il est possible de formater des
éléments HTML (h1, div, href, span, …)
 Il est aussi possible de réaliser le même formatage pour des
éléments d’un document XML, peut importe le nom de ces
éléments.
 L’incorporation d’un CSS dans un XML se fait de la même façon
que dans un HTML
Démo
XSLT
 XSLT pour Extensible Stylesheet Language Transformation.
 Langage de programmation qui sert à transformer le contenu
d'un document XML source en un autre document dont le format
et la structure diffère.
 XML
 HTML
 XHTML
 Texte (C++, php, java, csv, …)
 XSLT est un standard de la W3C
 Un document XSLT est exprimée comme un document XML ,
pouvant aussi bien contenir des éléments définis par XSLT que
d'autres éléments non définis par XSLT.
Démo
XSLT
XSLT- Structure
XSLT- Structure
• La racine d’un document XLST est la balise
<stylsheet>
– Indique la version à utiliser et le namespace XSLT
http://www.w3.org/1999/XSL/Transform
• La balise <transform> peut aussi être utilisé comme
racine
XSLT-Templates
Le processeur XSLT fait subir au document XML des
transformations selon des modèles de transformation (template)
décrits dans la feuille XSL pour produire un nouveau document
selon le type de sortie souhaité.
Chaque modèle de transformation définit des traitements à
effectuer sur un élément ou un ensemble d’éléments du document
XML source.
Un modèle est représenté par la balise <template> dans la feuille
XSL
Une feuille XSL peut contenir plusieurs modèles
 La balise template définit un modèle de transformation.
 match : expression XPath qui permet de sélectionner des éléments du document XML sur
lesquels sera appliqué la transformation
 name : nom du modèle, il permet de faire appel au modèle directement sans passer par
l’évaluation des nœuds du document <xsl:call-template>
 priority : priorité du modèle, utilisé si le processeur XSLT identifie plusieurs modèles de
transformation pour le même noeud
XSLT-Templates
 Le contenu de la balise template représente les règles de transformation à
appliquer sur les éléments sélectionnés par l’expression du match
 texte, balises XSLT, balises d’autres namespace (XSLFO, XHTML, …)
XSLT-Templates
XSLT-Templates
• La balise <apply-templates> permet de demander au processeur
XSLT d’appliquer un modèle définie et qui correspond à
l’expression XPath fournit par son attribut select
– select : expression XPath, sert à identifier les modèles qui vont
être appliqués, la correspondance est effectué sur la base de
l’attribut match du modèle
– Si select n’est pas fourni, le modèle est appliqué sur tous les fils
du nœud courant.
• Au cas ou plusieurs modèles correspondent à l’expression select
– Utilisation de l’attribut priority du modèle
– Utilisation du modèle dont l’expression match est la plus
spécifique
XSLT-Templates
XSLT- Logique : boucle
<for-each> permet d’effectuer une boucle sur les éléments qui
correspondent au résultat de l’expression XPath de l’attribut select
XSLT- Logique : traitement conditionnel
• <if> permet d’effectuer un traitement conditionnel si le
résultat de l’expression de l’attribut test est vrai
– L’expression test accepte la même syntaxe que les prédicats
XPath.
XSLT- Logique : traitement conditionnel
• <choose> permet de faire un choix parmi plusieurs
alternatives.
– <when>, traitement a effectuer si l’expression test est vrai
– <otherwise>, traitement a effectuer si aucune condition
<when> n’est réalisé
XSLT- Logique : ordonnancement
• <sort> permet d’effectuer l’ordonnancement d’un ensemble
d’éléments
• <sort> vient comme fils d’un <template> ou d’un <for-each> pour
en ordonner les éléments
– select : expression qui sert de critère de tri
– data-type : text ou number ,spécifie le type de tri
– order : ascending ou descending
– case-order : upper-first ou lower-first
XSLT- Génération de contenu XML
 <copy> fournit un moyen simple pour copier le noeud courant
dans la sortie
 use-attribute-sets : les attributs du nœud qui seront copiés, si vide tous
 <copy> ne copie pas les enfants du nœud
 <element> permet de créer un element XML dans la sortie
 name : nom local de l’élément
 use-attribute-sets : es attributs du nœud qui seront associés à l’élément.
 <attribute> utilisé en association avec <element> pour y ajouter
un attribut
 name : nom de l’attribut
XSLT- Sortie
• La balise <output> est le 1er fils de la racine du
document XSLT, cette balise indique :
– method : le format de sortie xml, html ou texte.
– doctype-public : est le nom du standard respecté par la sortie.
– doctype-system : est le lien vers la DTD de ce standard.
– indent=yes : indique que le fichier généré sera
automatiquement indenté.
• désactiver l'indentation diminue la taille des fichiers générés.

Contenu connexe

Tendances

Mise en oeuvre des framework de machines et deep learning v1
Mise en oeuvre des framework de machines et deep learning v1 Mise en oeuvre des framework de machines et deep learning v1
Mise en oeuvre des framework de machines et deep learning v1
ENSET, Université Hassan II Casablanca
 
E-commerce Use case NFE102
E-commerce Use case NFE102E-commerce Use case NFE102
E-commerce Use case NFE102MRamo2s
 
TD2 - UML - Correction
TD2 - UML - CorrectionTD2 - UML - Correction
TD2 - UML - Correction
Lilia Sfaxi
 
Tp n 5 linux
Tp n 5 linuxTp n 5 linux
Tp n 5 linux
Amir Souissi
 
Manuel des TP : Atelier systèmes 2
Manuel des TP : Atelier systèmes 2Manuel des TP : Atelier systèmes 2
Manuel des TP : Atelier systèmes 2
Faycel Chaoua
 
Rapport pfe 2017 Système de gestion des rendez-vous médicaux
Rapport pfe 2017 Système de gestion des rendez-vous médicaux Rapport pfe 2017 Système de gestion des rendez-vous médicaux
Rapport pfe 2017 Système de gestion des rendez-vous médicaux
fehmi arbi
 
Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Ippon
 
Python avancé : Classe et objet
Python avancé : Classe et objetPython avancé : Classe et objet
Python avancé : Classe et objet
ECAM Brussels Engineering School
 
Examen principal- php - correction
Examen principal- php - correctionExamen principal- php - correction
Examen principal- php - correction
Ines Ouaz
 
exercices business intelligence
exercices business intelligence exercices business intelligence
exercices business intelligence
Yassine Badri
 
React-cours.pdf
React-cours.pdfReact-cours.pdf
React-cours.pdf
Jaouad Assabbour
 
Présentation Tests Fonctionnels
Présentation Tests FonctionnelsPrésentation Tests Fonctionnels
Présentation Tests Fonctionnels
DATANYWARE.com
 
Tp n 1 linux
Tp n 1 linuxTp n 1 linux
Tp n 1 linux
Amir Souissi
 
Manuel des TP : Atelier Web 2
Manuel des TP : Atelier Web 2Manuel des TP : Atelier Web 2
Manuel des TP : Atelier Web 2
Faycel Chaoua
 
Conception et Réalisation d’une application de Gestion SCOLAIRE
Conception et Réalisation d’une application de Gestion SCOLAIREConception et Réalisation d’une application de Gestion SCOLAIRE
Conception et Réalisation d’une application de Gestion SCOLAIRE
Ghizlane ALOZADE
 
Les principes de base de PHP
 Les principes de base de PHP  Les principes de base de PHP
Les principes de base de PHP
EL JAOUARI Ahmed
 
Corrige tp java
Corrige tp javaCorrige tp java
Corrige tp java
Maya Medjdoub
 
Tp n 3 linux
Tp n 3 linuxTp n 3 linux
Tp n 3 linux
Amir Souissi
 
Génération de rapport avec Jasper Report
Génération de rapport avec Jasper ReportGénération de rapport avec Jasper Report
Génération de rapport avec Jasper Report
Eric Reboisson
 

Tendances (20)

Mise en oeuvre des framework de machines et deep learning v1
Mise en oeuvre des framework de machines et deep learning v1 Mise en oeuvre des framework de machines et deep learning v1
Mise en oeuvre des framework de machines et deep learning v1
 
E-commerce Use case NFE102
E-commerce Use case NFE102E-commerce Use case NFE102
E-commerce Use case NFE102
 
TD2 - UML - Correction
TD2 - UML - CorrectionTD2 - UML - Correction
TD2 - UML - Correction
 
Tp n 5 linux
Tp n 5 linuxTp n 5 linux
Tp n 5 linux
 
Manuel des TP : Atelier systèmes 2
Manuel des TP : Atelier systèmes 2Manuel des TP : Atelier systèmes 2
Manuel des TP : Atelier systèmes 2
 
Rapport pfe 2017 Système de gestion des rendez-vous médicaux
Rapport pfe 2017 Système de gestion des rendez-vous médicaux Rapport pfe 2017 Système de gestion des rendez-vous médicaux
Rapport pfe 2017 Système de gestion des rendez-vous médicaux
 
Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014
 
Python avancé : Classe et objet
Python avancé : Classe et objetPython avancé : Classe et objet
Python avancé : Classe et objet
 
Examen principal- php - correction
Examen principal- php - correctionExamen principal- php - correction
Examen principal- php - correction
 
exercices business intelligence
exercices business intelligence exercices business intelligence
exercices business intelligence
 
React-cours.pdf
React-cours.pdfReact-cours.pdf
React-cours.pdf
 
Sql3
Sql3Sql3
Sql3
 
Présentation Tests Fonctionnels
Présentation Tests FonctionnelsPrésentation Tests Fonctionnels
Présentation Tests Fonctionnels
 
Tp n 1 linux
Tp n 1 linuxTp n 1 linux
Tp n 1 linux
 
Manuel des TP : Atelier Web 2
Manuel des TP : Atelier Web 2Manuel des TP : Atelier Web 2
Manuel des TP : Atelier Web 2
 
Conception et Réalisation d’une application de Gestion SCOLAIRE
Conception et Réalisation d’une application de Gestion SCOLAIREConception et Réalisation d’une application de Gestion SCOLAIRE
Conception et Réalisation d’une application de Gestion SCOLAIRE
 
Les principes de base de PHP
 Les principes de base de PHP  Les principes de base de PHP
Les principes de base de PHP
 
Corrige tp java
Corrige tp javaCorrige tp java
Corrige tp java
 
Tp n 3 linux
Tp n 3 linuxTp n 3 linux
Tp n 3 linux
 
Génération de rapport avec Jasper Report
Génération de rapport avec Jasper ReportGénération de rapport avec Jasper Report
Génération de rapport avec Jasper Report
 

En vedette

E logistics-Vehicle Routing Problem
E logistics-Vehicle Routing ProblemE logistics-Vehicle Routing Problem
E logistics-Vehicle Routing Problem
ENSAM Casablanca
 
XML- Schéma
XML- SchémaXML- Schéma
XML- Schéma
ENSAM Casablanca
 
la logistique - Le transport
la logistique - Le transport la logistique - Le transport
la logistique - Le transport
ENSAM Casablanca
 
L’approvisionnement et La gestion des Stocks dans OpenERP
L’approvisionnement et La gestion des Stocks dans OpenERPL’approvisionnement et La gestion des Stocks dans OpenERP
L’approvisionnement et La gestion des Stocks dans OpenERP
ENSAM Casablanca
 
Introduction aux ERP
Introduction aux ERPIntroduction aux ERP
Introduction aux ERP
ENSAM Casablanca
 
Tour d'horizon sur la E-logistique 2015
Tour d'horizon sur la E-logistique 2015Tour d'horizon sur la E-logistique 2015
Tour d'horizon sur la E-logistique 2015
ENSAM Casablanca
 
Introduction au M.E.S
Introduction au M.E.SIntroduction au M.E.S
Introduction au M.E.S
ENSAM Casablanca
 
Création d’applications et découverte d’Android
Création d’applications et découverte d’AndroidCréation d’applications et découverte d’Android
Création d’applications et découverte d’Android
ENSAM Casablanca
 
La gestion des projets dans openerp
La gestion des projets dans  openerpLa gestion des projets dans  openerp
La gestion des projets dans openerp
ENSAM Casablanca
 
Log 2 2-slidshare
Log 2 2-slidshareLog 2 2-slidshare
Log 2 2-slidshare
ENSAM Casablanca
 
La gestion de la production dans openerp
La gestion de la production dans openerpLa gestion de la production dans openerp
La gestion de la production dans openerp
ENSAM Casablanca
 
LES OUTILS D’UN LOGISTICIEN
LES OUTILS D’UN LOGISTICIENLES OUTILS D’UN LOGISTICIEN
LES OUTILS D’UN LOGISTICIEN
ENSAM Casablanca
 
La gestion de la relation client dans l’ OPENERP
La gestion de la relation client dans l’ OPENERPLa gestion de la relation client dans l’ OPENERP
La gestion de la relation client dans l’ OPENERP
ENSAM Casablanca
 
Log 2 1-slidshare
Log 2 1-slidshareLog 2 1-slidshare
Log 2 1-slidshare
ENSAM Casablanca
 
La Logistique 1
La Logistique 1La Logistique 1
La Logistique 1
ENSAM Casablanca
 
Query and Transform TEI with XPath and XSLT in oXygen
Query and Transform TEI with XPath and XSLT in oXygenQuery and Transform TEI with XPath and XSLT in oXygen
Query and Transform TEI with XPath and XSLT in oXygen
Octavian Nadolu
 
SQLPASS AD501-M XQuery MRys
SQLPASS AD501-M XQuery MRysSQLPASS AD501-M XQuery MRys
SQLPASS AD501-M XQuery MRys
Michael Rys
 
XMLT
XMLTXMLT
Opentms nextma
Opentms nextmaOpentms nextma
Opentms nextma
HORIYASOFT
 
Estadistica religion y_moral_catolica_cr2015-2016
Estadistica religion y_moral_catolica_cr2015-2016Estadistica religion y_moral_catolica_cr2015-2016
Estadistica religion y_moral_catolica_cr2015-2016
miciudadreal
 

En vedette (20)

E logistics-Vehicle Routing Problem
E logistics-Vehicle Routing ProblemE logistics-Vehicle Routing Problem
E logistics-Vehicle Routing Problem
 
XML- Schéma
XML- SchémaXML- Schéma
XML- Schéma
 
la logistique - Le transport
la logistique - Le transport la logistique - Le transport
la logistique - Le transport
 
L’approvisionnement et La gestion des Stocks dans OpenERP
L’approvisionnement et La gestion des Stocks dans OpenERPL’approvisionnement et La gestion des Stocks dans OpenERP
L’approvisionnement et La gestion des Stocks dans OpenERP
 
Introduction aux ERP
Introduction aux ERPIntroduction aux ERP
Introduction aux ERP
 
Tour d'horizon sur la E-logistique 2015
Tour d'horizon sur la E-logistique 2015Tour d'horizon sur la E-logistique 2015
Tour d'horizon sur la E-logistique 2015
 
Introduction au M.E.S
Introduction au M.E.SIntroduction au M.E.S
Introduction au M.E.S
 
Création d’applications et découverte d’Android
Création d’applications et découverte d’AndroidCréation d’applications et découverte d’Android
Création d’applications et découverte d’Android
 
La gestion des projets dans openerp
La gestion des projets dans  openerpLa gestion des projets dans  openerp
La gestion des projets dans openerp
 
Log 2 2-slidshare
Log 2 2-slidshareLog 2 2-slidshare
Log 2 2-slidshare
 
La gestion de la production dans openerp
La gestion de la production dans openerpLa gestion de la production dans openerp
La gestion de la production dans openerp
 
LES OUTILS D’UN LOGISTICIEN
LES OUTILS D’UN LOGISTICIENLES OUTILS D’UN LOGISTICIEN
LES OUTILS D’UN LOGISTICIEN
 
La gestion de la relation client dans l’ OPENERP
La gestion de la relation client dans l’ OPENERPLa gestion de la relation client dans l’ OPENERP
La gestion de la relation client dans l’ OPENERP
 
Log 2 1-slidshare
Log 2 1-slidshareLog 2 1-slidshare
Log 2 1-slidshare
 
La Logistique 1
La Logistique 1La Logistique 1
La Logistique 1
 
Query and Transform TEI with XPath and XSLT in oXygen
Query and Transform TEI with XPath and XSLT in oXygenQuery and Transform TEI with XPath and XSLT in oXygen
Query and Transform TEI with XPath and XSLT in oXygen
 
SQLPASS AD501-M XQuery MRys
SQLPASS AD501-M XQuery MRysSQLPASS AD501-M XQuery MRys
SQLPASS AD501-M XQuery MRys
 
XMLT
XMLTXMLT
XMLT
 
Opentms nextma
Opentms nextmaOpentms nextma
Opentms nextma
 
Estadistica religion y_moral_catolica_cr2015-2016
Estadistica religion y_moral_catolica_cr2015-2016Estadistica religion y_moral_catolica_cr2015-2016
Estadistica religion y_moral_catolica_cr2015-2016
 

Similaire à XML Xpath & XSLT

Cours de C++, en français, 2002 - Cours 3.4
Cours de C++, en français, 2002 - Cours 3.4Cours de C++, en français, 2002 - Cours 3.4
Cours de C++, en français, 2002 - Cours 3.4
Laurent BUNIET
 
XML.pdf
XML.pdfXML.pdf
XML.pdf
ANBRI1
 
XML.pdf
XML.pdfXML.pdf
XML.pdf
Khalid526420
 
.php1 : les fondamentaux du PHP
.php1 : les fondamentaux du PHP.php1 : les fondamentaux du PHP
.php1 : les fondamentaux du PHP
Abdoulaye Dieng
 
Les fonctions de XPath et XSLT.ppt
Les fonctions de XPath et XSLT.pptLes fonctions de XPath et XSLT.ppt
Les fonctions de XPath et XSLT.ppt
CyrilleKevinBakouan
 
Exploration et visualisation de fichiers XML avec BaseX
Exploration et visualisation de fichiers XML avec BaseXExploration et visualisation de fichiers XML avec BaseX
Exploration et visualisation de fichiers XML avec BaseX
Emmanuelle Morlock
 
Chap4_XPTAH_FR.pdf
Chap4_XPTAH_FR.pdfChap4_XPTAH_FR.pdf
Chap4_XPTAH_FR.pdf
RihabBENLAMINE
 
Data Mining (Partie 2).pdf
Data Mining (Partie 2).pdfData Mining (Partie 2).pdf
Data Mining (Partie 2).pdf
OuailChoukhairi
 
Le système d&rsquo;E/S en Java
Le système d&rsquo;E/S en JavaLe système d&rsquo;E/S en Java
Le système d&rsquo;E/S en Java
Korteby Farouk
 
Nettoyer et transformer ses données avec Openrefine : partie 2
Nettoyer et transformer ses données avec Openrefine : partie 2Nettoyer et transformer ses données avec Openrefine : partie 2
Nettoyer et transformer ses données avec Openrefine : partie 2
Mathieu Saby
 
xml_bd_ouahdikrid.ppt
xml_bd_ouahdikrid.pptxml_bd_ouahdikrid.ppt
xml_bd_ouahdikrid.ppt
LeilaAmrane
 
Chapitre 2: String en Java
Chapitre 2:  String en JavaChapitre 2:  String en Java
Chapitre 2: String en Java
Aziz Darouichi
 
Les concepts de la programmation fonctionnelle illustrés avec Java 8
Les concepts de la programmation fonctionnelle illustrés avec Java 8Les concepts de la programmation fonctionnelle illustrés avec Java 8
Les concepts de la programmation fonctionnelle illustrés avec Java 8
Yannick Chartois
 
Cours php bac info
Cours php bac infoCours php bac info
Cours php bac info
borhen boukthir
 
Tp n 6 linux
Tp n 6 linuxTp n 6 linux
Tp n 6 linux
Amir Souissi
 
PHP - fonctions mysql
PHP - fonctions mysqlPHP - fonctions mysql
PHP - fonctions mysqlmazenovi
 
ALF 3 - Expressions régulières et Lexer
ALF 3 - Expressions régulières et Lexer ALF 3 - Expressions régulières et Lexer
ALF 3 - Expressions régulières et Lexer
Alexandru Radovici
 
XML Avancé : DTD, XSD, XPATH, XSLT, XQuery
XML Avancé : DTD, XSD, XPATH, XSLT, XQueryXML Avancé : DTD, XSD, XPATH, XSLT, XQuery
XML Avancé : DTD, XSD, XPATH, XSLT, XQuery
Rachid NID SAID
 
XML__New2 cours wwebbbbbbbbbbbbbbbb.pptx
XML__New2 cours wwebbbbbbbbbbbbbbbb.pptxXML__New2 cours wwebbbbbbbbbbbbbbbb.pptx
XML__New2 cours wwebbbbbbbbbbbbbbbb.pptx
IkramAssabbar
 

Similaire à XML Xpath & XSLT (20)

Cours de C++, en français, 2002 - Cours 3.4
Cours de C++, en français, 2002 - Cours 3.4Cours de C++, en français, 2002 - Cours 3.4
Cours de C++, en français, 2002 - Cours 3.4
 
XML.pdf
XML.pdfXML.pdf
XML.pdf
 
XML.pdf
XML.pdfXML.pdf
XML.pdf
 
Cours3 gdm sql
Cours3 gdm sqlCours3 gdm sql
Cours3 gdm sql
 
.php1 : les fondamentaux du PHP
.php1 : les fondamentaux du PHP.php1 : les fondamentaux du PHP
.php1 : les fondamentaux du PHP
 
Les fonctions de XPath et XSLT.ppt
Les fonctions de XPath et XSLT.pptLes fonctions de XPath et XSLT.ppt
Les fonctions de XPath et XSLT.ppt
 
Exploration et visualisation de fichiers XML avec BaseX
Exploration et visualisation de fichiers XML avec BaseXExploration et visualisation de fichiers XML avec BaseX
Exploration et visualisation de fichiers XML avec BaseX
 
Chap4_XPTAH_FR.pdf
Chap4_XPTAH_FR.pdfChap4_XPTAH_FR.pdf
Chap4_XPTAH_FR.pdf
 
Data Mining (Partie 2).pdf
Data Mining (Partie 2).pdfData Mining (Partie 2).pdf
Data Mining (Partie 2).pdf
 
Le système d&rsquo;E/S en Java
Le système d&rsquo;E/S en JavaLe système d&rsquo;E/S en Java
Le système d&rsquo;E/S en Java
 
Nettoyer et transformer ses données avec Openrefine : partie 2
Nettoyer et transformer ses données avec Openrefine : partie 2Nettoyer et transformer ses données avec Openrefine : partie 2
Nettoyer et transformer ses données avec Openrefine : partie 2
 
xml_bd_ouahdikrid.ppt
xml_bd_ouahdikrid.pptxml_bd_ouahdikrid.ppt
xml_bd_ouahdikrid.ppt
 
Chapitre 2: String en Java
Chapitre 2:  String en JavaChapitre 2:  String en Java
Chapitre 2: String en Java
 
Les concepts de la programmation fonctionnelle illustrés avec Java 8
Les concepts de la programmation fonctionnelle illustrés avec Java 8Les concepts de la programmation fonctionnelle illustrés avec Java 8
Les concepts de la programmation fonctionnelle illustrés avec Java 8
 
Cours php bac info
Cours php bac infoCours php bac info
Cours php bac info
 
Tp n 6 linux
Tp n 6 linuxTp n 6 linux
Tp n 6 linux
 
PHP - fonctions mysql
PHP - fonctions mysqlPHP - fonctions mysql
PHP - fonctions mysql
 
ALF 3 - Expressions régulières et Lexer
ALF 3 - Expressions régulières et Lexer ALF 3 - Expressions régulières et Lexer
ALF 3 - Expressions régulières et Lexer
 
XML Avancé : DTD, XSD, XPATH, XSLT, XQuery
XML Avancé : DTD, XSD, XPATH, XSLT, XQueryXML Avancé : DTD, XSD, XPATH, XSLT, XQuery
XML Avancé : DTD, XSD, XPATH, XSLT, XQuery
 
XML__New2 cours wwebbbbbbbbbbbbbbbb.pptx
XML__New2 cours wwebbbbbbbbbbbbbbbb.pptxXML__New2 cours wwebbbbbbbbbbbbbbbb.pptx
XML__New2 cours wwebbbbbbbbbbbbbbbb.pptx
 

XML Xpath & XSLT

  • 2. INTRODUCTION XPath pour XML Path Langage  XPath est un standard XML qui définit des règles grammaticales pour identifier des noeuds ou des ensembles de noeuds dans des documents XML.  XPath est un standard W3C
  • 3. XPATH TERMINOLOGIES • XPath se représente le document XML en tant qu’arbre – dont la racine est l’élément racine du document XML – les noeuds sont les différents éléments et attributs du XML root element element attribute text namespace comment processing- instruction
  • 4. • Les relations entre nœuds : – Parent (parent) : l’élément contenant – Fils (childrens) : les éléments contenues – Fréres (siblings) : les éléments ayant le même parent – Ancetres (ancestors) : l’élément parent, le parent du prent, … – Descendants (descendants) : les éléments fils, les fils des fils, … XPATH TERMINOLOGIES
  • 5. XPATH- SYNTAXE • Une expression XPath est composée de segments séparés par « / ». – Exemple : l’expression /annuaire/entree/nom permet de sélectionner le nœud nom du fragment XML ci-dessus.
  • 6. La même expression retourne des résultats différents selon son contexte d’évaluation • Exemple : /nom – Si le contxet est le root : retourne 2 éléments – Si le contexte est un élément entree : retourne l’élément fils ‘nom’ XPATH- SYNTAXE
  • 7. Expression Description Exemple Nom du nœud Sélectionner Tous les nœuds fils du même nom à partir du nœud courant telephone / (début de l’expression) Sélectionner à partir de la racine du document /annuaire/entree/nom //node Sélectionner tous les nœuds descendants à partir du nœud courant du même nom //nom . Sélectionner le nœud courant ./telephone .. Sélectionner le nœud parent ../entree @attribut Sélectionner l’attribut du même nom //entree/@attribut XPATH- SYNTAXE
  • 8. Symbole Description Exemple * Sélectionner n’importe quel élément quel que soit le nom //* @* Sélectionner n’importe quel attribut quel que soit le nom /annuaire//*/@* Dans une expression XPath on peut utiliser le caractère générique *, pour sélectionner des noeuds dont le nom est inconnu. XPATH- SYNTAXE
  • 9.  Dans une expression XPath on peut utiliser le caractère | , pour sélectionner sur plusieurs chemins.  Exemple : /annuaire/entree/nom | //entree  Sélectionner les éléments fils nom de la racine et tous les descendants entree de la racine XPATH- SYNTAXE
  • 10. • Pour affiner la sélection, XPath propose la notion de prédicat pour pouvoir filtrer les nœuds à récupérer – La syntaxe : /elt1/elt2/eltAVerifier[predicat] – Le prédicat est une expression que doit vérifier le ou les nœuds à sélectionner. • L’expression prédicat accepte : – les opérateurs de comparaison : <, >, <=, >=, =, != – les opérateurs logiques : not(..), and, or – les opérateurs arithmétiques : +, -, *, div, mod – les opérateurs de regroupement : (..) XPATH- SYNTAXE
  • 11. Exemple Description /annuaire/entree[1] Sélectionner le 1er fils ‘entree’ de l’élément annuaire /annuaire/entree[last()] Sélectionner le dernier fils ‘entree’ de l’élément annuaire /annuaire/entree[last()-1] Sélectionner l’avant dernier fils ‘entree’ de l’élément annuaire /annuaire/entree[position()<3] Sélectionner le deux 1er fils ‘entree’ de l’élément annuaire /annuaire/entree[position()=3] Sélectionner le 3éme fils ‘entree’ de l’élément annuaire /annuaire/entree[nom=‘paul’ ]/telephone Sélectionner les fils ‘telephone’ des éléments ‘entree’ dont le contenu du fils ‘nom’ est paul /annuaire/entree[@attribut=‘value’] Sélectionner les fils ‘entree’ dont la valeur de l’attribut ‘attribut’ est ‘value’ /annuaire//entree[nom|telephone] Sélectionner les descendants ‘entree’ qui au moins un fils ‘nom’ ou ‘telephone’ XPATH- SYNTAXE
  • 12. XPATH-FONCTIONS Les fonctions XPath permettent d’affiner les expressions prédicat conversion : string(object?), number(object?), boolean(object?) ensemble de nœud : position(), last(), count(), name(node-set?), local- name(node-set?), Namespace_uri(node-set?) traitement de string : concat( string , string , string *), starts-with( string,string ), contains( string , string ), substring-before( string , string ), substring-after( string , string ) … numériques : sum( node-set ), floor( number ), ceiling( number ), round( number ) booléennes : not( boolean ), true(), false()
  • 13. Expression Description //*[starts-with(name(),'B')] Recherche de balise dont le nom commence par B /ROOT/*[contains(translate(.,'0123456789',''),‘abs')] <ROOT><A>ab128s</A><A>ab9877V</A></ROOT> Recherche de contenu de chaîne dont on exclut certains caractères /ROOT/A[concat( substring(., 7, 4),substring(., 4, 2),substring(., 1, 2))<20071201] Comparaison de dates sum(/ROOT/A[number(.)!='NaN']) <ROOT><A>abs</A><A>10</A><A>15</A></ROOT> Éliminer les noeuds non numériques lors d'une somme XPATH-FONCTIONS
  • 14.
  • 15. XPATH- Chemin de localisation • Une expression XPath utilisée pour sélectionner une collection de nœuds s’appelle un chemin de localisation. • Un chemin de localisation se compose d'une ou de plusieurs étapes de localisation, séparées par /. – Chaque étape sélectionne à son tour des nœuds par rapport à l’étape précedente – Un chemain de localisation qui commence par / est un chemain absolu – La syntaxe /elt1/elt2/elt3 est dite abrégé
  • 16. • La syntaxe non abrégé écrit chaque étape sous la forme : axe::test[prédicat] – Elle permet plus de possibilité de sélection (voisins, commentaire, processing- instruction, …) • axe : spécifie la relation d'arborescence entre le nœud de contexte et les nœuds que l'étape de localisation doit sélectionner : parents, fils, ancêtres, voisin... – exemple :Child, parent, ancestor, self.... • test : indique parmi tous les nœuds de l'axe spécifié, celui ou ceux à considérer comme des candidats, Il suit l'axe et doit être précédé de :: . – exemple : parent::*, child::comment(), child::A ... • Prédicat (optionnel) : il consiste en des conditions sur les noeuds parcourus. Il est encadré par [ ] . XPATH- Chemin de localisation
  • 17. Axe Description ancestor:: Les ancêtres du nœud courant ancestor-or-self:: Nœud courant et ses ancêtres attribute:: Attributs du nœud courant child:: Les fils du nœud courant, n'inclut pas de nœud d'attribut ou d'espace de noms descendant:: Les descendants du nœud courant , n'inclut pas de nœud d'attribut ou d'espace de noms descendant-or-self:: Nœud courant et ses descendants following:: Tous les nœuds qui suivent le nœud courant dans l'arborescence, sauf ses nœuds descendants, d'attribut et d'espace de noms. XPATH- Chemin de localisation
  • 18. Axe Description following-sibling:: Tous les frères suivants du nœud courant, il ne comprend pas les autres enfants qui apparaissent avant le nœud courant. namespace:: Nœuds d'espace de noms du nœud courant. parent:: Le parent du nœud de contexte preceding:: Tous les nœuds qui précèdent le nœud de contexte dans l'arborescence, sauf les nœuds ancêtres, d'attribut et d'espace de noms. preceding-sibling:: Tous les frères suivants du nœud courant, il ne comprend pas les autres enfants qui apparaissent avant le nœud courant. self:: Nœud courant XPATH- Chemin de localisation
  • 20. XML TRANSFORMATION Utiliser un CSS pour formater un contenu XML  À l'aide de feuilles de style CSS, il est possible de formater des éléments HTML (h1, div, href, span, …)  Il est aussi possible de réaliser le même formatage pour des éléments d’un document XML, peut importe le nom de ces éléments.  L’incorporation d’un CSS dans un XML se fait de la même façon que dans un HTML
  • 21. Démo
  • 22. XSLT  XSLT pour Extensible Stylesheet Language Transformation.  Langage de programmation qui sert à transformer le contenu d'un document XML source en un autre document dont le format et la structure diffère.  XML  HTML  XHTML  Texte (C++, php, java, csv, …)  XSLT est un standard de la W3C  Un document XSLT est exprimée comme un document XML , pouvant aussi bien contenir des éléments définis par XSLT que d'autres éléments non définis par XSLT.
  • 25. XSLT- Structure • La racine d’un document XLST est la balise <stylsheet> – Indique la version à utiliser et le namespace XSLT http://www.w3.org/1999/XSL/Transform • La balise <transform> peut aussi être utilisé comme racine
  • 26. XSLT-Templates Le processeur XSLT fait subir au document XML des transformations selon des modèles de transformation (template) décrits dans la feuille XSL pour produire un nouveau document selon le type de sortie souhaité. Chaque modèle de transformation définit des traitements à effectuer sur un élément ou un ensemble d’éléments du document XML source. Un modèle est représenté par la balise <template> dans la feuille XSL Une feuille XSL peut contenir plusieurs modèles
  • 27.  La balise template définit un modèle de transformation.  match : expression XPath qui permet de sélectionner des éléments du document XML sur lesquels sera appliqué la transformation  name : nom du modèle, il permet de faire appel au modèle directement sans passer par l’évaluation des nœuds du document <xsl:call-template>  priority : priorité du modèle, utilisé si le processeur XSLT identifie plusieurs modèles de transformation pour le même noeud XSLT-Templates
  • 28.  Le contenu de la balise template représente les règles de transformation à appliquer sur les éléments sélectionnés par l’expression du match  texte, balises XSLT, balises d’autres namespace (XSLFO, XHTML, …) XSLT-Templates
  • 30. • La balise <apply-templates> permet de demander au processeur XSLT d’appliquer un modèle définie et qui correspond à l’expression XPath fournit par son attribut select – select : expression XPath, sert à identifier les modèles qui vont être appliqués, la correspondance est effectué sur la base de l’attribut match du modèle – Si select n’est pas fourni, le modèle est appliqué sur tous les fils du nœud courant. • Au cas ou plusieurs modèles correspondent à l’expression select – Utilisation de l’attribut priority du modèle – Utilisation du modèle dont l’expression match est la plus spécifique XSLT-Templates
  • 31. XSLT- Logique : boucle <for-each> permet d’effectuer une boucle sur les éléments qui correspondent au résultat de l’expression XPath de l’attribut select
  • 32. XSLT- Logique : traitement conditionnel • <if> permet d’effectuer un traitement conditionnel si le résultat de l’expression de l’attribut test est vrai – L’expression test accepte la même syntaxe que les prédicats XPath.
  • 33. XSLT- Logique : traitement conditionnel • <choose> permet de faire un choix parmi plusieurs alternatives. – <when>, traitement a effectuer si l’expression test est vrai – <otherwise>, traitement a effectuer si aucune condition <when> n’est réalisé
  • 34. XSLT- Logique : ordonnancement • <sort> permet d’effectuer l’ordonnancement d’un ensemble d’éléments • <sort> vient comme fils d’un <template> ou d’un <for-each> pour en ordonner les éléments – select : expression qui sert de critère de tri – data-type : text ou number ,spécifie le type de tri – order : ascending ou descending – case-order : upper-first ou lower-first
  • 35. XSLT- Génération de contenu XML  <copy> fournit un moyen simple pour copier le noeud courant dans la sortie  use-attribute-sets : les attributs du nœud qui seront copiés, si vide tous  <copy> ne copie pas les enfants du nœud  <element> permet de créer un element XML dans la sortie  name : nom local de l’élément  use-attribute-sets : es attributs du nœud qui seront associés à l’élément.  <attribute> utilisé en association avec <element> pour y ajouter un attribut  name : nom de l’attribut
  • 36. XSLT- Sortie • La balise <output> est le 1er fils de la racine du document XSLT, cette balise indique : – method : le format de sortie xml, html ou texte. – doctype-public : est le nom du standard respecté par la sortie. – doctype-system : est le lien vers la DTD de ce standard. – indent=yes : indique que le fichier généré sera automatiquement indenté. • désactiver l'indentation diminue la taille des fichiers générés.

Notes de l'éditeur

  1. Ce modèle peut être utilisé comme fichier de démarrage pour présenter des supports de formation à un groupe. Sections Cliquez avec le bouton droit sur une diapositive pour ajouter des sections. Les sections permettent d’organiser les diapositives et facilitent la collaboration entre plusieurs auteurs. Notes Utilisez la section Notes pour les notes de présentation ou pour fournir des informations supplémentaires à l’audience. Affichez ces notes en mode Présentation pendant votre présentation. N’oubliez pas de tenir compte de la taille de la police (critère important pour l’accessibilité, la visibilité, l’enregistrement vidéo et la production en ligne) Couleurs coordonnées Faites tout particulièrement attention aux diagrammes, graphiques et zones de texte. Tenez compte du fait que les participants imprimeront la présentation en noir et blanc ou nuances de gris. Effectuez un test d’impression pour vérifier que vos couleurs s’impriment correctement en noir et blanc intégral et nuances de gris. Graphiques, tableaux et diagrammes Faites en sorte que votre présentation soit simple : utilisez des styles et des couleurs identiques qui ne soient pas gênants. Ajoutez une étiquette à tous les graphiques et tableaux.