SlideShare uma empresa Scribd logo
1 de 107
17/03/14 1
XML Avancé
DTD, XSD, XPATH, XSLT, XQuery
Rachid NID SAID
rachid.nidsaid@gmail.com
17/03/14 2
Plan
 Introduction
 XML validation
 DTD
 XSD
 XPath
 XML Transformation - XSLT
 XML query – XQuery
17/03/14 3
Partie 1
 Introduction
 XML
 XML Validation
 DTD
 Structure
 Entités
 Utiliser DTD
 XSD
 Schéma XML
 Types simples
 Types complexes
 Annotation
XML
 XML pour « eXtensible Markup Language »
 XML C’est est un langage à balise définissant un
format universel de représentation des données.
 XML est issue du langage de balise SGML dont est
issue HTML
 Si HTML est conçu pour l’affichage, XML est conçu
pour le représentation des données.
XML
 XML décrit les données de manière aussi bien
compréhensible par les Hommes qui écrivent les
documents XML que par les machines qui les
exploitent.
 Un document XML contient à la fois des données et
les méta données qui les décrivent.
 Ces méta données permettent de déterminer la
structure du document : ce sont des balises.
XML
Structure XML : entête
 version : de façon générale 1.0
 Il existe deux versions 1.0 et 1.1
 encoding : valeur par défaut UTF-8
 standalone : valeur par défaut yes
 Indique si le document en lui seul est suffisant
pour être interprété ou s'il nécessite
l'adjonction d'un autre document externe
(DTD)
Structure XML : balise
 Les balises sont les éléments de base d'un
document XML
 Les balises permettent de décrire les données
contenu dans le document XML
 Deux types de balise :
 balise par pair : <balise>contenu</balise>
 balise unique : <balise/>
Structure XML : racine
 L’ensemble du contenu d’un document XML est
encapsulé au sein d’une balise qui vient directement
après l’entête. c’est la balise racine (root)
 Un document XML ne contient qu’une seule balise
racine
Structure XML : attribut
 Un attribut est une information supplémentaire qui
est ajouté à la balise pour apporter plus de détail.
 On peut ajouter autant d’attributs qu’on veut à la
balise
 Deux attributs d’une même balise peuvent avoir le
même nom.
Structure XML : CDATA
 Le contenu d’une balise ne peut contenir certains
caractères comme > < & et doivent être remplacés
par leur encodage html.
 CDATA permet de contourner cette limitation et de
saisir n’importe quel caractère comme contenu.
 Le contenu du CDATA est interpréter par l’éditeur
XML comme du texte brute.
Structure XML : commentaire
 Permet de commenter et simplifier la lecture du
contenu XML pour l’humain.
Structure XML : processing-instruction
 Les processing-instructions sont le moyen d'envoyer
des ordres à l‘éditeur XML.
 Une processing-instruction commence par <? et se
termine par ?>.
 Exemple :
<?xml-stylesheet type="text/css" href="style.css" ?>
Les parseurs XML
 DOM : Document Object Model
 Le document est chargé en entier en mémoire
 Une api offre la possibilité d’accéder aux différents
éléments du document de façon hiérarchique
 SAX : Simple API for XML
 API basé sur un modèle événementiel qui transforme
un document XML en un flux d'événements déclenchés
par la lecture d'éléments syntaxiques XML (balise
ouvrante, balise fermante, etc.).
Validation XML
 Pour qu'un document XML soit utilisé comme un
langage ou comme un format d'échange, il doit
respecter certaines contraintes syntaxiques :
 Nom des éléments et des attributs autorisés,
 Hiérarchie(père/fils) et appartenance des éléments et
attributs,
 Séquencement et itérations des éléments,
 Contraintes d'unicités et de référence.
Validation XML
 La validation XML est contrôle du contenu XML par
rapport à une grammaire fournie.
 DTD : le plus ancien, très restreints en termes de
contraintes pouvant être exprimées;
 XML Schéma : norme fournie par le W3C, permet un
très grand choix de contraintes et de types.
 Relax NG : l'équivalent de XML Schéma mais proposé
par OASIS.
 Schematron : il est orienté « sémantique » en
permettant d'ajouter des contraintes sur les valeurs
des éléments et des attributs.
DTD
 DTD pour Document Type Definition
 DTD permet de décrire la structure d'un document
XML
 liste des balises
 attributs des balises
 organisation des balises
 La validation est le mécanisme qui vérifie qu’un
document XML respecte une DTD
DTD
DTD
Structure : élément
Définit une balise XML
 ELEMENT : mot clé pour déclarer une balise
 nom : le nom de la balise
 (contenu) : le contenu de la balise
 Un contenu peut être vide, texte, ou contenir des
sous éléments
DTD
Structure : élément
Type DTD XML
Elément vide <!ELEMENT elt EMPTY> <elt/>
Elément
contenant du
texte
<!ELEMENT elt (#PCDATA)> <elt>texte</elt>
Elément avec
sous éléments
<!ELEMENT elt (sous-elt)>
<!ELEMENT sous-elt EMPTY>
<elt>
<sous-elt/>
</elt>
DTD
Structure : élément
Type DTD XML
Elément avec
plusieurs
sous
éléments
<!ELEMENT elt (s1, s2)>
<!ELEMENT s1 EMPTY>
<!ELEMENT s2 EMPTY>
<elt>
<s1/>
<s2/>
</elt>
Elément avec
contenu
variable
<!ELEMENT elt (#PCDATA|s1)>
<!ELEMENT s1 EMPTY>
<elt>texte</elt>
ou
<elt><s1/></elt>
Elément à
contenu non
défini
<!ELEMENT elt ANY>
<!ELEMENT s1 EMPTY>
<elt>texte</elt>
ou
<elt><s1/></elt>
etc.
DTD
Structure : élément
Cardinalité Signification
<!ELEMENT elt (s1)> Le contenu de la balise elt est une seule
balise s1
<!ELEMENT elt (s1*)> Le contenu de la balise elt est 0 à n
occurrence de la balise s1
<!ELEMENT elt (s1?)> Le contenu de la balise elt est 0 à 1
occurrence de la balise s1
<!ELEMENT elt (s1+)> Le contenu de la balise elt est 1 à n
occurrence de la balise s1
DTD
Structure : attribut
Définit l’attribut d’une balise XML
 ATTLIST : mot clé pour déclarer un attribut
 nom : le nom de la balise
 nom-attribut : le nom de l’attribut
 type : type de l’attribut
 CDATA : chaîne de caractères
 liste de valeurs possibles ("v1"|"v2"|"v3")
 valeur-par-defaut : valeur par défaut de l’attribut si
aucune valeur n’est fournie
DTD
Structure : attribut
 contrainte : définit les contraintes que doit
respecter l’attribut, n’est pas obligatoire
 #REQUIRED : l’attribut est obligatoire
 #IMPLIED : l’attribut est optionnel
 #FIXED : la valeur de l’attribut est fixé, et
prends comme valeur la valeur par défaut
DTD
Structure : identifiant
 Un attribut peut être déclaré comme identifiant d’un
élément avec le mot clé ID
 Un attribut peut être déclaré comme référence vers un
autre élément (clé étrangère) avec le mot clé IDREF
 Mécanisme qui permet de déclarer un alias vers une
information qui va être réutilisé dans un XML ou une DTD
 entité générale : utilisé dans le document XML
 entité paramètre : utilisé dans une DTD
 entité externe : même rôle que l’entité générale, sauf que les
informations sont stockés dans un fichier externe
 L’attribut standalone au niveau de l’entête doit être a no
DTD
Les entités
DTD
Utiliser une DTD
 DOCTYPE permet de déclarer la DTD à utiliser pour
valiser le document XML,
 vient directement après l’entête
 balise-racine : l’élément XML qui sera la racine (root)
du document XML
DTD
Utiliser une DTD interne
 La DTD est déclaré directement dans le document
XML dans la balise DOCTYPE
DTD
Utiliser une DTD externe
 La DTD est déclaré dans un fichier externe
 SYSTEM : la DTD est indiqué en fournissant sa location
par son URI
 PUBLIC : la DTD est dans le domaine public (norme),
indiqué par son identifiant (FPI) et sa location par son
URI
XSD
 XSD pour XML Schema Definition
 Avantages par rapport à DTD :
 Le typage poussé des données (booléens, entiers,
intervalles de temps...)
 Possibilité de créer de nouveaux types à partir de
types existants.
 Dérivation, Les éléments peuvent hériter du contenu et
des attributs d'un autre élément..
 Les indicateurs d'occurrences des éléments peuvent
être tout nombre non négatif autre que 0,1 ou infini
XSD
XSD
Type de données
 Plus de 40 types de données,
 string, integer, date, year, CDATA, float, double,
binary, ENTITIES, token, byte, etc.
 Fournit un mécanisme pour définir des types de
données complexes
 Créer un type de données totalement nouveau,
 Restreindre ou d’étendre un type de données existant.
 On distingue deux sortes de types, simple et
complexe
XSD
Type simple
 Un élément de type simple ne peut comporter ni
attributs, ni sous-éléments.
 Il est possible d’utiliser les types prédéfinis ou d’en
dériver de nouveaux à partir de types déjà existant.
 La liste complète des types prédéfinis est disponible
à http://www.w3.org/TR/xmlschema-0/#CreatDt
XSD
Type simple
XSD
Type simple
 La création de nouveaux types simples est réalisée
au travers de la balise <simpleType>
 Trois façons pour créer un nouveau type :
 Restriction : <restriction> permet de dériver un
nouveau type sur la base d’un existant en ajoutant de
nouvelles contraintes
 List : <list> permet de créer un nouveau type liste
 Union : <union> permet de créer un nouveau type en
faisant l’union de plusieurs types existants
XSD
Type simple : Restriction
 Les restrictions sur les types simples (Facets)
permettent de dériver de nouveaux types à partir de
types existants
 La restriction de type permet de définir des
contraintes sur le nouveau type à créer
 La restriction est exprimée par la balise
<restriction>
XSD
Type simple : Restriction
 maxExclusive : limite supérieure (exclue)
 maxInclusive : limite supérieure (incluse)
 minExclusive : limite inférieure (exclue)
 minInclusive : limite inférieure (incluse)
 enumeration : liste de valeurs autorisée
 length : nombre de caractères ou d’élément d’une liste
autorisé
XSD
Type simple : Restriction
 minLength : nombre minimum de caractères ou d’élément
d’une liste
 pattern : expression régulière à respecter
 fractionDigits : nombre maxi de digits autorisé
 totalDigits : nombre exact de digits autorisé
 whiteSpace : politique de gestion des espaces blancs (tab,
retour ligne, fin de ligne, …)
La définition de l’ensemble des restrictions pour chaque type
est disponible à www.w3.org/TR/xmlschema-0/#
SimpleTypeFacets
XSD
Type simple : Restriction
XSD
Type simple : Listes
 Il existe trois types de liste intégrés NMTOKENS,
ENTITIES, IDREFS
 Ces types existent pour garder la compatibilité avec les DTD
 Il est possible de créer de nouveaux liste de types
simple par dérivation de type existant
 La création de liste est exprimé par <list>
XSD
Type simple : Union
 XSD permet de définir de nouveaux types simple par
union de types existants
 i.e le nouveau type accepte les valeurs de l’ensemble
des types qui participent à l’union
 L’union est exprimé par <union>
XSD
Type complexe
 Un élément de type complexe peut contenir d'autres
éléments et / ou des attributs
 Un attribut ne peut être de type complexe
 Un élément de type complexe peut être
 Elément vide qui ne contient que des attributs
 Elément de type simple qui contient des attributs
 Elément qui contient des sous éléments et des
attributs
 Elément qui contient des attributs, des sous éléments
et du texte
 La création d'un éléments de type complexe est
réalisée au travers de la balise <complexType>
XSD
Type complexe
 Type avec des attributs et sans contenu
XSD
Type complexe
 Type avec ou sans attributs et un contenu de type
simple
 La balise <simpleContent> précise qu’il ne peut y avoir que
des attributs et un contenu de type simple
XSD
Type complexe
 Type avec ou sans attributs et un contenu composé
de sous éléments
 La balise <sequence> dite indicateur d’ordre, indique la
logique de placement des sous éléments dans le
document XML
XSD
Type complexe
 Trois balises indicateurs d’ordre peuvent être utilisé
pour indiquer la logique de placements des sous
éléments dans le document XML:
 <all> : les sous éléments sont placés quelque soit
l’ordre
 <sequence> : les sous éléments doivent respectés
l’ordre de déclaration dans le type
 <choice> : un seul des sous éléments déclarés est
utilisé
XSD
Type complexe
 Les indicateurs d'occurrence sont utilisés pour
exprimer le nombre de fois qu'un sous élément peut
apparaître dans le document XML
 maxOccurs : précise le nombre d'occurrence maximum, la
valeur par défaut est 1
 minOccurs : précise le nombre d'occurrence minimum, la
valeur par défaut est 1
 Pour définir une valeur infinie, fixer la valeur à unbounded
XSD
Type complexe
 Il est possible de créer un type d’élément dont le
contenu est composé de texte et de sous éléments
en même temps
 L’attribut mixed de la balise complexType doit être positionné
à true
XSD
Type complexe
XSD
Type complexe
 Il est possible de définir un nouveau type complexe
sur la base d'un type complexe existant
 Étendre le type existant en y ajoutant des attributs est
des sous éléments <extension>
 Restreindre le type existant en limitant les valeurs
possibles des attributs et sous éléments existants
<restriction>
 La balise <complexContent> est utilisé pour
implémenter cette possibilité
XSD
Type complexe
XSD
Visibilité des Types
 Un type est visible par tous les descendants du
noeud dans lequel il a été déclaré.
 Un type déclaré sous le noeud principal (root) <schema> est
visible dans tout le document XSD.
 Un type déclaré sous un nœud autre que le root, n’est visible
que dans ce nœud.
XSD
Structure : entête
 XSD est un document XML, Il commence par un
prologue et un élément racine (root)
 L’élément racine est <schema>
 targetNameSpace : libelle du namespace associé au document
XSD
 elementFormDefault : indique si les éléments du XSD doivent
être préfixé par l’alias du namespace lors de son utilisation
dans un document XML
Espaces de nom (XML Namespaces)
 XML Namespaces est une spécification W3C, son
objectif est
 de permettre l’utilisation de plusieurs grammaires dans un
seul document.
 de lever les ambiguïtés lorsque plusieurs grammaires offre
des éléments avec les même nom.
XSD
Structure : élément
 La définition d’éléments se fait dans une balise
<element>.
 Définir un type de données et l’utiliser dans la définition
de l’élément.
 Définir le type de données à l’intérieur de l’élément.
XSD
Structure : attribut
 La définition d’attributs associés à un élément se fait
dans par la balise <attribute>.
 name : nom de l’attribut
 type : type de l’attribut, ne peut être qu’un type
simple.
 use : permet de préciser si l’attribut est obligatoire,
optionnel ou interdit. Valeurs possibles :
 required : obligatoire
 optional : optionnel
 prohibited : interdite
 fixed : valeur fixe, ne change pas
 default : valeur par défaut.
XSD
Structure : attribut
 La définition d’attributs peut se faire de deux façons
différents.
 Définir l’attribut et l’utiliser dans la définition du type.
 Définir l’attribut directement à l’intérieur du type.
XSD
Annotation
 L'annotation permet d'enrichir la description d'un
XSD, c’est un commentaire.
 L'annotation est réalisée au travers de la balise
<annotation> et propose deux sous éléments
(occurrences multiples)
 <documentation> : son contenu est en direction de
l’utilisateur humain
 <appinfo> : son contenu est en direction des outils
d’édition XML
Utiliser un XSD
 A la différence du DTD, n’importe quel élément de la XSD
peut servir de racine pour le document XML
 xmlns:xsi : identifier le namespace de la norme W3C
 xmlns:… : identifier les autres namespaces à utiliser dans le
document XML
 xsi:schemaLocation : identifier pour chaque namespace utilisé
par le document XML, la localisation physique du document
XSD (sauf pour le namespace de la norme W3C)
Partie 2
 XML Transformation
 XPath
 Utiliser un CSS pour formater un
contenu XML
 XSLT
XPath
 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 processing-instruction
attribute
text
namespace
comment
element
XPath
Terminologies
 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
Syntaxe
 Une expression XPath décrit l'emplacement
d'éléments et d'attributs XML comme un chemin
similaire à des URL.
 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-dessous
XPath
Syntaxe
 Une expression XPath est évalué au sein d’un
contexte
 C’est le nœud par rapport auquel cette expression est
évalué
 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 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
Pour IE le 1er
fils est l’indice 0
/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’
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()
XPath
Fonctions
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
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é
XPath
Chemin de localisation
 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
 Le test de nœud est la seule partie obligatoire d'une
étape de localisation XPath.
 Trois types de test :
 name test : utilise un nom développé et la relation
entre ce nom et l'axe spécifié pour identifier les nœuds
à sélectionner.
 node type test : sélectionne les nœuds en se basant
sur leur type.
 targeted processing instruction test : ne sélectionne
que les nœuds processing-instruction qui
correspondent au type spécifié.
XPath
Chemin de localisation
Name test Description Exemple
* retourne tous les nœuds de
l’axe
ancestor::*
QName retourne les nœuds de l’axe
qui ont le même nom local
(QName)
child::entree
NSName:* retourne tous les nœuds de
l’axe dont le nom
développé comprend le
namespace NSName
child::tns:*
NSName:QName retourne les nœuds de l’axe
dont le nom développé est
NSName:QName
child::tns:entree
XPath
Chemin de localisation
Type test Description Exemple
Comment() retourne les nœuds de l’axe
de type commentaire
following::comment()
Node() retourne les nœuds de l’axe
de n’importe quel type
preceding::node()
text() retourne les nœuds de l’axe
de type texte (contenu texte
d’un élément)
child::text()
processing-
instruction()
retourne les nœuds de l’axe
de type processing-
instruction
self::processing
instruction()
processing-
instruction(‘name
’)
retourne les nœuds de l’axe
de type processing-
instruction dont le nom est
name
/child::processing-
instruction("xml-
stylesheet")
XPath
Chemin de localisation
Chemin Description
child::chapter/descendant::para Sélectionne les descendants <para> des
éléments <chapter> enfants du nœud de
contexte.
/descendant::olist/child::item Sélectionne tous les éléments <item> qui ont un
parent <olist> contenu dans le même document
que le nœud de contexte.
/
child::doc/child::chapter[position()=5]/
child::section[position()=2]
Sélectionne le deuxième
élément <section> contenu dans le cinquième
élément <chapter> de l'élément de
document <doc>.
child::para[attribute::type="warning"]
[position()=5]
Sélectionne le cinquième enfant <para> du nœud
de contexte ayant un attribut type dont la valeur
est "warning".
child::para[position()=5 and
attribute::type="warning"]
Sélectionne le cinquième enfant <para> du nœud
de contexte ayant un attribut type dont la valeur
est "warning".
child::*[self::chapter or self::appendix
and position()=last()]
Sélectionne le dernier
enfant <chapter> ou <appendix> du nœud de
contexte.
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
XML Transformation
Utiliser un CSS pour formater un contenu XML
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.
XSLT
Démo
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
XSLT
Templates
 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
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.
Partie 3
 XML Query – XQuery
 Définition
 Syntaxe & Expressions
 Selection et filtrage de données
 Fonctions
XQuery
Définition
 XQuery pour XML Query
 C’est un langage de requête permettant d'extraire
des informations d'un document XML, ou d'une
collection de documents XML
 XQuery joue par rapport aux données XML un rôle
similaire à celui du langage SQL vis-à-vis des
données relationnelles
XQuery
Syntaxes
 La syntaxe FLWOR dont le nom vient des cinq
clauses principales qui la composent
(for, let, where, order by et return)
 La syntaxe XQueryX pour « XML Syntax for XQuery
», dans laquelle une requête est un document XML.
 XQuery se base sur XPath pour sélectionner les
éléments à traiter
XQuery
Clause LET
 Une expression FLWR permet d’utiliser des
affectations de variables, et d’utiliser ces variables
dans la suite de la requête.
 L’affectation se fait au moyen de la clause LET
 les variables sont ensuite non mutables.
LET $noms := document(“annuaire.xml”)//nom
RETURN
$noms
XQuery
Clause FOR
 La clause For permet d’effectuer des itérations sur
un ensemble de noeuds obtenus dans une requête.
 A chaque itération un élément de cette liste est
affecté à une variable de boucle, et le traitement
explicité dans le For est appliqué à cette variable.
FOR $element IN //entree
RETURN
$element/nom
XQuery
Clause RETURN
 La clause RETURN permet d’envoyer une valeur de retour à
chaque itération de la boucle FOR,
 La valeur de retour est concaténée à une variable de sortie,
qui est renvoyée à l’utilisateur lors de la dernière itération.
 RETURN ne provoque pas de sortie de la boucle For, le retour
effectif à l’utilisateur se fait uniquement lors de la dernière
itération !
FOR $element IN //entree
RETURN $element/nom
Résultat :
<nom>Nom1</nom>
<nom>Nom2</nom>
<nom>Nom3</nom>
XQuery
Clause WHERE
 La clause WHERE permet de filtrer les noeuds obtenus par
la requête dans une clause For, à la manière du WHERE
SQL.
 Le contenu de la clause WHERE est une expression dont le
résultat de l’évaluation est booléen.
 il est possible d’utiliser des opérations logiques AND et OR.
 il est possible d’utiliser des expressions et fonctions XPath
FOR $element IN //entree
WHERE $ element /nom = “Harry Cover”
OR $ element /nom = “Paul Lafargue”
RETURN $element
XQuery
Imbrication de requêtes
 XQuery permet d’imbriquer les requêtes.
LET $entrees:=//entree
RETURN
FOR $nom IN $entrees/nom
RETURN
$nom
Résultat :
<nom>Nom1</nom>
<nom>Nom2</nom>
XQuery
Requêtes XQuery avancées

Mais conteúdo relacionado

Mais procurados

Chapitre 2 classe et objet
Chapitre 2   classe et objetChapitre 2   classe et objet
Chapitre 2 classe et objetAmir Souissi
 
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...ENSET, Université Hassan II Casablanca
 
Telecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQLTelecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQLwebreaker
 
Architectures n-tiers
Architectures n-tiersArchitectures n-tiers
Architectures n-tiersHeithem Abbes
 
Chp4 - Composition, Orchestration et Choregraphie de services
Chp4 - Composition, Orchestration et Choregraphie de servicesChp4 - Composition, Orchestration et Choregraphie de services
Chp4 - Composition, Orchestration et Choregraphie de servicesLilia Sfaxi
 
POO Java Chapitre 4 Heritage et Polymorphisme
POO Java Chapitre 4 Heritage et PolymorphismePOO Java Chapitre 4 Heritage et Polymorphisme
POO Java Chapitre 4 Heritage et PolymorphismeMouna Torjmen
 
programmation orienté objet c++
programmation orienté objet c++programmation orienté objet c++
programmation orienté objet c++coursuniv
 
Android-Tp5 : web services
Android-Tp5 : web servicesAndroid-Tp5 : web services
Android-Tp5 : web servicesLilia Sfaxi
 
Chp2 - Vers les Architectures Orientées Services
Chp2 - Vers les Architectures Orientées ServicesChp2 - Vers les Architectures Orientées Services
Chp2 - Vers les Architectures Orientées ServicesLilia Sfaxi
 
Fondamentaux java
Fondamentaux javaFondamentaux java
Fondamentaux javaInes Ouaz
 
Tp3 - Application SOA avec BPEL
Tp3 - Application SOA avec BPELTp3 - Application SOA avec BPEL
Tp3 - Application SOA avec BPELLilia Sfaxi
 
CV Ingénieur développeur JAVA/EE
CV Ingénieur développeur JAVA/EECV Ingénieur développeur JAVA/EE
CV Ingénieur développeur JAVA/EESid Ahmed Benkraoua
 
Architecture jee principe de inversion de controle et injection des dependances
Architecture jee principe de inversion de controle et injection des dependancesArchitecture jee principe de inversion de controle et injection des dependances
Architecture jee principe de inversion de controle et injection des dependancesENSET, Université Hassan II Casablanca
 
UML Part 4- diagrammres de classes et d'objets mansouri
UML Part 4- diagrammres de classes et d'objets mansouriUML Part 4- diagrammres de classes et d'objets mansouri
UML Part 4- diagrammres de classes et d'objets mansouriMansouri Khalifa
 
API : l'architecture REST
API : l'architecture RESTAPI : l'architecture REST
API : l'architecture RESTFadel Chafai
 
Securite des Web Services (SOAP vs REST) / OWASP Geneva dec. 2012
Securite des Web Services (SOAP vs REST) / OWASP Geneva dec. 2012Securite des Web Services (SOAP vs REST) / OWASP Geneva dec. 2012
Securite des Web Services (SOAP vs REST) / OWASP Geneva dec. 2012Sylvain Maret
 
Présentation python
Présentation pythonPrésentation python
Présentation pythonSarah
 

Mais procurados (20)

Chapitre 2 classe et objet
Chapitre 2   classe et objetChapitre 2   classe et objet
Chapitre 2 classe et objet
 
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...Support de cours EJB 3 version complète Par Mr  Youssfi, ENSET, Université Ha...
Support de cours EJB 3 version complète Par Mr Youssfi, ENSET, Université Ha...
 
OpenESB et BPEL
OpenESB et BPELOpenESB et BPEL
OpenESB et BPEL
 
Telecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQLTelecharger Exercices corrigés PL/SQL
Telecharger Exercices corrigés PL/SQL
 
Architectures n-tiers
Architectures n-tiersArchitectures n-tiers
Architectures n-tiers
 
Chp3 - ESB
Chp3 - ESBChp3 - ESB
Chp3 - ESB
 
Chp4 - Composition, Orchestration et Choregraphie de services
Chp4 - Composition, Orchestration et Choregraphie de servicesChp4 - Composition, Orchestration et Choregraphie de services
Chp4 - Composition, Orchestration et Choregraphie de services
 
POO Java Chapitre 4 Heritage et Polymorphisme
POO Java Chapitre 4 Heritage et PolymorphismePOO Java Chapitre 4 Heritage et Polymorphisme
POO Java Chapitre 4 Heritage et Polymorphisme
 
Java RMI
Java RMIJava RMI
Java RMI
 
programmation orienté objet c++
programmation orienté objet c++programmation orienté objet c++
programmation orienté objet c++
 
Android-Tp5 : web services
Android-Tp5 : web servicesAndroid-Tp5 : web services
Android-Tp5 : web services
 
Chp2 - Vers les Architectures Orientées Services
Chp2 - Vers les Architectures Orientées ServicesChp2 - Vers les Architectures Orientées Services
Chp2 - Vers les Architectures Orientées Services
 
Fondamentaux java
Fondamentaux javaFondamentaux java
Fondamentaux java
 
Tp3 - Application SOA avec BPEL
Tp3 - Application SOA avec BPELTp3 - Application SOA avec BPEL
Tp3 - Application SOA avec BPEL
 
CV Ingénieur développeur JAVA/EE
CV Ingénieur développeur JAVA/EECV Ingénieur développeur JAVA/EE
CV Ingénieur développeur JAVA/EE
 
Architecture jee principe de inversion de controle et injection des dependances
Architecture jee principe de inversion de controle et injection des dependancesArchitecture jee principe de inversion de controle et injection des dependances
Architecture jee principe de inversion de controle et injection des dependances
 
UML Part 4- diagrammres de classes et d'objets mansouri
UML Part 4- diagrammres de classes et d'objets mansouriUML Part 4- diagrammres de classes et d'objets mansouri
UML Part 4- diagrammres de classes et d'objets mansouri
 
API : l'architecture REST
API : l'architecture RESTAPI : l'architecture REST
API : l'architecture REST
 
Securite des Web Services (SOAP vs REST) / OWASP Geneva dec. 2012
Securite des Web Services (SOAP vs REST) / OWASP Geneva dec. 2012Securite des Web Services (SOAP vs REST) / OWASP Geneva dec. 2012
Securite des Web Services (SOAP vs REST) / OWASP Geneva dec. 2012
 
Présentation python
Présentation pythonPrésentation python
Présentation python
 

Destaque

Génération de documents Office avec Open XML et VSTO
Génération de documents Office avec Open XML et VSTOGénération de documents Office avec Open XML et VSTO
Génération de documents Office avec Open XML et VSTOguested7f6
 
mgmnt dev. and org. development
mgmnt dev. and org. developmentmgmnt dev. and org. development
mgmnt dev. and org. developmentumesh yadav
 
Restitution des données environnement Microsoft & data visualization : panel ...
Restitution des données environnement Microsoft & data visualization : panel ...Restitution des données environnement Microsoft & data visualization : panel ...
Restitution des données environnement Microsoft & data visualization : panel ...Microsoft
 
Pl News Letter Sept07
Pl News Letter Sept07Pl News Letter Sept07
Pl News Letter Sept07robertpluss
 
Overview of XSL, XPath and XSL-FO
Overview of XSL, XPath and XSL-FOOverview of XSL, XPath and XSL-FO
Overview of XSL, XPath and XSL-FOSuite Solutions
 
Asp.net Présentation de L'application "Organizer"
Asp.net Présentation de L'application "Organizer"Asp.net Présentation de L'application "Organizer"
Asp.net Présentation de L'application "Organizer"Nazih Heni
 
Introduction to XML, XHTML and CSS
Introduction to XML, XHTML and CSSIntroduction to XML, XHTML and CSS
Introduction to XML, XHTML and CSSJussi Pohjolainen
 
GWT Principes & Techniques
GWT Principes & TechniquesGWT Principes & Techniques
GWT Principes & TechniquesRachid NID SAID
 
2 dtd - validating xml documents
2   dtd - validating xml documents2   dtd - validating xml documents
2 dtd - validating xml documentsgauravashq
 
Alfresco Meetup - ETL Connector & Talend
Alfresco Meetup - ETL Connector & TalendAlfresco Meetup - ETL Connector & Talend
Alfresco Meetup - ETL Connector & TalendMarc Dutoo
 
Présentation Talend Open Studio
Présentation Talend Open StudioPrésentation Talend Open Studio
Présentation Talend Open Studiohoracio lassey
 
XML, DTD & XSD Overview
XML, DTD & XSD OverviewXML, DTD & XSD Overview
XML, DTD & XSD OverviewPradeep Rapolu
 

Destaque (20)

Présentation1
Présentation1Présentation1
Présentation1
 
Génération de documents Office avec Open XML et VSTO
Génération de documents Office avec Open XML et VSTOGénération de documents Office avec Open XML et VSTO
Génération de documents Office avec Open XML et VSTO
 
Xslt formation-xslt
Xslt formation-xsltXslt formation-xslt
Xslt formation-xslt
 
Tp2
Tp2Tp2
Tp2
 
mgmnt dev. and org. development
mgmnt dev. and org. developmentmgmnt dev. and org. development
mgmnt dev. and org. development
 
Restitution des données environnement Microsoft & data visualization : panel ...
Restitution des données environnement Microsoft & data visualization : panel ...Restitution des données environnement Microsoft & data visualization : panel ...
Restitution des données environnement Microsoft & data visualization : panel ...
 
Pl News Letter Sept07
Pl News Letter Sept07Pl News Letter Sept07
Pl News Letter Sept07
 
4 xslt
4   xslt4   xslt
4 xslt
 
Html ,css,xml
Html ,css,xmlHtml ,css,xml
Html ,css,xml
 
HTML, CSS and XML
HTML, CSS and XMLHTML, CSS and XML
HTML, CSS and XML
 
Overview of XSL, XPath and XSL-FO
Overview of XSL, XPath and XSL-FOOverview of XSL, XPath and XSL-FO
Overview of XSL, XPath and XSL-FO
 
Asp.net Présentation de L'application "Organizer"
Asp.net Présentation de L'application "Organizer"Asp.net Présentation de L'application "Organizer"
Asp.net Présentation de L'application "Organizer"
 
Introduction to XML, XHTML and CSS
Introduction to XML, XHTML and CSSIntroduction to XML, XHTML and CSS
Introduction to XML, XHTML and CSS
 
Talend
TalendTalend
Talend
 
GWT Principes & Techniques
GWT Principes & TechniquesGWT Principes & Techniques
GWT Principes & Techniques
 
2 dtd - validating xml documents
2   dtd - validating xml documents2   dtd - validating xml documents
2 dtd - validating xml documents
 
APACHE HTTP
APACHE HTTPAPACHE HTTP
APACHE HTTP
 
Alfresco Meetup - ETL Connector & Talend
Alfresco Meetup - ETL Connector & TalendAlfresco Meetup - ETL Connector & Talend
Alfresco Meetup - ETL Connector & Talend
 
Présentation Talend Open Studio
Présentation Talend Open StudioPrésentation Talend Open Studio
Présentation Talend Open Studio
 
XML, DTD & XSD Overview
XML, DTD & XSD OverviewXML, DTD & XSD Overview
XML, DTD & XSD Overview
 

Semelhante a XML Avancé : DTD, XSD, XPATH, XSLT, XQuery

Xml elgarrai 2020
Xml elgarrai 2020Xml elgarrai 2020
Xml elgarrai 2020OmarIz1
 
XML.pdf
XML.pdfXML.pdf
XML.pdfANBRI1
 
Modèles de données et langages de description ouverts 2021-2022 - 2
Modèles de données et langages de description ouverts   2021-2022 - 2Modèles de données et langages de description ouverts   2021-2022 - 2
Modèles de données et langages de description ouverts 2021-2022 - 2François-Xavier Boffy
 
SchemaXMLDefinition@AhmesZELLOU20232024.pdf
SchemaXMLDefinition@AhmesZELLOU20232024.pdfSchemaXMLDefinition@AhmesZELLOU20232024.pdf
SchemaXMLDefinition@AhmesZELLOU20232024.pdfamarasidibeavm
 
1- XML généralités technologies xml1.pdf
1- XML généralités technologies xml1.pdf1- XML généralités technologies xml1.pdf
1- XML généralités technologies xml1.pdfKokitaKaty
 
HTML : why content is important - SoftShake 2014
HTML : why content is important - SoftShake 2014HTML : why content is important - SoftShake 2014
HTML : why content is important - SoftShake 2014Audrey Lièvremont
 
xml_bd_ouahdikrid.ppt
xml_bd_ouahdikrid.pptxml_bd_ouahdikrid.ppt
xml_bd_ouahdikrid.pptLeilaAmrane
 
Intégration Web HTML 5 & CSS 3
Intégration Web HTML 5 & CSS 3Intégration Web HTML 5 & CSS 3
Intégration Web HTML 5 & CSS 3Stephane PERES
 
chapXSD espace de noms.pdf
chapXSD  espace de noms.pdfchapXSD  espace de noms.pdf
chapXSD espace de noms.pdfFaiçal Yahia
 
2014 09 12_atelier-humanites-numerique-hisoma-seance-1-oxygen
2014 09 12_atelier-humanites-numerique-hisoma-seance-1-oxygen2014 09 12_atelier-humanites-numerique-hisoma-seance-1-oxygen
2014 09 12_atelier-humanites-numerique-hisoma-seance-1-oxygenEmmanuelle Morlock
 
interface graphique mobile.pdf
interface graphique mobile.pdfinterface graphique mobile.pdf
interface graphique mobile.pdfYasmineChihab1
 

Semelhante a XML Avancé : DTD, XSD, XPATH, XSLT, XQuery (20)

XML
XMLXML
XML
 
Introduction à XML
Introduction à XMLIntroduction à XML
Introduction à XML
 
Xml elgarrai 2020
Xml elgarrai 2020Xml elgarrai 2020
Xml elgarrai 2020
 
XML.pdf
XML.pdfXML.pdf
XML.pdf
 
XML.pdf
XML.pdfXML.pdf
XML.pdf
 
Modèles de données et langages de description ouverts 2021-2022 - 2
Modèles de données et langages de description ouverts   2021-2022 - 2Modèles de données et langages de description ouverts   2021-2022 - 2
Modèles de données et langages de description ouverts 2021-2022 - 2
 
XML- Schéma
XML- SchémaXML- Schéma
XML- Schéma
 
xml cours
xml coursxml cours
xml cours
 
SchemaXMLDefinition@AhmesZELLOU20232024.pdf
SchemaXMLDefinition@AhmesZELLOU20232024.pdfSchemaXMLDefinition@AhmesZELLOU20232024.pdf
SchemaXMLDefinition@AhmesZELLOU20232024.pdf
 
Html
HtmlHtml
Html
 
1- XML généralités technologies xml1.pdf
1- XML généralités technologies xml1.pdf1- XML généralités technologies xml1.pdf
1- XML généralités technologies xml1.pdf
 
Cours3 gdm sql
Cours3 gdm sqlCours3 gdm sql
Cours3 gdm sql
 
HTML : why content is important - SoftShake 2014
HTML : why content is important - SoftShake 2014HTML : why content is important - SoftShake 2014
HTML : why content is important - SoftShake 2014
 
Introduction à XML
Introduction à XMLIntroduction à XML
Introduction à XML
 
xml_bd_ouahdikrid.ppt
xml_bd_ouahdikrid.pptxml_bd_ouahdikrid.ppt
xml_bd_ouahdikrid.ppt
 
Intégration Web HTML 5 & CSS 3
Intégration Web HTML 5 & CSS 3Intégration Web HTML 5 & CSS 3
Intégration Web HTML 5 & CSS 3
 
chapXSD espace de noms.pdf
chapXSD  espace de noms.pdfchapXSD  espace de noms.pdf
chapXSD espace de noms.pdf
 
2014 09 12_atelier-humanites-numerique-hisoma-seance-1-oxygen
2014 09 12_atelier-humanites-numerique-hisoma-seance-1-oxygen2014 09 12_atelier-humanites-numerique-hisoma-seance-1-oxygen
2014 09 12_atelier-humanites-numerique-hisoma-seance-1-oxygen
 
HTML & CSS
HTML & CSSHTML & CSS
HTML & CSS
 
interface graphique mobile.pdf
interface graphique mobile.pdfinterface graphique mobile.pdf
interface graphique mobile.pdf
 

XML Avancé : DTD, XSD, XPATH, XSLT, XQuery

  • 1. 17/03/14 1 XML Avancé DTD, XSD, XPATH, XSLT, XQuery Rachid NID SAID rachid.nidsaid@gmail.com
  • 2. 17/03/14 2 Plan  Introduction  XML validation  DTD  XSD  XPath  XML Transformation - XSLT  XML query – XQuery
  • 3. 17/03/14 3 Partie 1  Introduction  XML  XML Validation  DTD  Structure  Entités  Utiliser DTD  XSD  Schéma XML  Types simples  Types complexes  Annotation
  • 4. XML  XML pour « eXtensible Markup Language »  XML C’est est un langage à balise définissant un format universel de représentation des données.  XML est issue du langage de balise SGML dont est issue HTML  Si HTML est conçu pour l’affichage, XML est conçu pour le représentation des données.
  • 5. XML  XML décrit les données de manière aussi bien compréhensible par les Hommes qui écrivent les documents XML que par les machines qui les exploitent.  Un document XML contient à la fois des données et les méta données qui les décrivent.  Ces méta données permettent de déterminer la structure du document : ce sont des balises.
  • 6. XML
  • 7. Structure XML : entête  version : de façon générale 1.0  Il existe deux versions 1.0 et 1.1  encoding : valeur par défaut UTF-8  standalone : valeur par défaut yes  Indique si le document en lui seul est suffisant pour être interprété ou s'il nécessite l'adjonction d'un autre document externe (DTD)
  • 8. Structure XML : balise  Les balises sont les éléments de base d'un document XML  Les balises permettent de décrire les données contenu dans le document XML  Deux types de balise :  balise par pair : <balise>contenu</balise>  balise unique : <balise/>
  • 9. Structure XML : racine  L’ensemble du contenu d’un document XML est encapsulé au sein d’une balise qui vient directement après l’entête. c’est la balise racine (root)  Un document XML ne contient qu’une seule balise racine
  • 10. Structure XML : attribut  Un attribut est une information supplémentaire qui est ajouté à la balise pour apporter plus de détail.  On peut ajouter autant d’attributs qu’on veut à la balise  Deux attributs d’une même balise peuvent avoir le même nom.
  • 11. Structure XML : CDATA  Le contenu d’une balise ne peut contenir certains caractères comme > < & et doivent être remplacés par leur encodage html.  CDATA permet de contourner cette limitation et de saisir n’importe quel caractère comme contenu.  Le contenu du CDATA est interpréter par l’éditeur XML comme du texte brute.
  • 12. Structure XML : commentaire  Permet de commenter et simplifier la lecture du contenu XML pour l’humain.
  • 13. Structure XML : processing-instruction  Les processing-instructions sont le moyen d'envoyer des ordres à l‘éditeur XML.  Une processing-instruction commence par <? et se termine par ?>.  Exemple : <?xml-stylesheet type="text/css" href="style.css" ?>
  • 14. Les parseurs XML  DOM : Document Object Model  Le document est chargé en entier en mémoire  Une api offre la possibilité d’accéder aux différents éléments du document de façon hiérarchique  SAX : Simple API for XML  API basé sur un modèle événementiel qui transforme un document XML en un flux d'événements déclenchés par la lecture d'éléments syntaxiques XML (balise ouvrante, balise fermante, etc.).
  • 15. Validation XML  Pour qu'un document XML soit utilisé comme un langage ou comme un format d'échange, il doit respecter certaines contraintes syntaxiques :  Nom des éléments et des attributs autorisés,  Hiérarchie(père/fils) et appartenance des éléments et attributs,  Séquencement et itérations des éléments,  Contraintes d'unicités et de référence.
  • 16. Validation XML  La validation XML est contrôle du contenu XML par rapport à une grammaire fournie.  DTD : le plus ancien, très restreints en termes de contraintes pouvant être exprimées;  XML Schéma : norme fournie par le W3C, permet un très grand choix de contraintes et de types.  Relax NG : l'équivalent de XML Schéma mais proposé par OASIS.  Schematron : il est orienté « sémantique » en permettant d'ajouter des contraintes sur les valeurs des éléments et des attributs.
  • 17. DTD  DTD pour Document Type Definition  DTD permet de décrire la structure d'un document XML  liste des balises  attributs des balises  organisation des balises  La validation est le mécanisme qui vérifie qu’un document XML respecte une DTD
  • 18. DTD
  • 19. DTD Structure : élément Définit une balise XML  ELEMENT : mot clé pour déclarer une balise  nom : le nom de la balise  (contenu) : le contenu de la balise  Un contenu peut être vide, texte, ou contenir des sous éléments
  • 20. DTD Structure : élément Type DTD XML Elément vide <!ELEMENT elt EMPTY> <elt/> Elément contenant du texte <!ELEMENT elt (#PCDATA)> <elt>texte</elt> Elément avec sous éléments <!ELEMENT elt (sous-elt)> <!ELEMENT sous-elt EMPTY> <elt> <sous-elt/> </elt>
  • 21. DTD Structure : élément Type DTD XML Elément avec plusieurs sous éléments <!ELEMENT elt (s1, s2)> <!ELEMENT s1 EMPTY> <!ELEMENT s2 EMPTY> <elt> <s1/> <s2/> </elt> Elément avec contenu variable <!ELEMENT elt (#PCDATA|s1)> <!ELEMENT s1 EMPTY> <elt>texte</elt> ou <elt><s1/></elt> Elément à contenu non défini <!ELEMENT elt ANY> <!ELEMENT s1 EMPTY> <elt>texte</elt> ou <elt><s1/></elt> etc.
  • 22. DTD Structure : élément Cardinalité Signification <!ELEMENT elt (s1)> Le contenu de la balise elt est une seule balise s1 <!ELEMENT elt (s1*)> Le contenu de la balise elt est 0 à n occurrence de la balise s1 <!ELEMENT elt (s1?)> Le contenu de la balise elt est 0 à 1 occurrence de la balise s1 <!ELEMENT elt (s1+)> Le contenu de la balise elt est 1 à n occurrence de la balise s1
  • 23. DTD Structure : attribut Définit l’attribut d’une balise XML  ATTLIST : mot clé pour déclarer un attribut  nom : le nom de la balise  nom-attribut : le nom de l’attribut  type : type de l’attribut  CDATA : chaîne de caractères  liste de valeurs possibles ("v1"|"v2"|"v3")  valeur-par-defaut : valeur par défaut de l’attribut si aucune valeur n’est fournie
  • 24. DTD Structure : attribut  contrainte : définit les contraintes que doit respecter l’attribut, n’est pas obligatoire  #REQUIRED : l’attribut est obligatoire  #IMPLIED : l’attribut est optionnel  #FIXED : la valeur de l’attribut est fixé, et prends comme valeur la valeur par défaut
  • 25. DTD Structure : identifiant  Un attribut peut être déclaré comme identifiant d’un élément avec le mot clé ID  Un attribut peut être déclaré comme référence vers un autre élément (clé étrangère) avec le mot clé IDREF
  • 26.  Mécanisme qui permet de déclarer un alias vers une information qui va être réutilisé dans un XML ou une DTD  entité générale : utilisé dans le document XML  entité paramètre : utilisé dans une DTD  entité externe : même rôle que l’entité générale, sauf que les informations sont stockés dans un fichier externe  L’attribut standalone au niveau de l’entête doit être a no DTD Les entités
  • 27. DTD Utiliser une DTD  DOCTYPE permet de déclarer la DTD à utiliser pour valiser le document XML,  vient directement après l’entête  balise-racine : l’élément XML qui sera la racine (root) du document XML
  • 28. DTD Utiliser une DTD interne  La DTD est déclaré directement dans le document XML dans la balise DOCTYPE
  • 29. DTD Utiliser une DTD externe  La DTD est déclaré dans un fichier externe  SYSTEM : la DTD est indiqué en fournissant sa location par son URI  PUBLIC : la DTD est dans le domaine public (norme), indiqué par son identifiant (FPI) et sa location par son URI
  • 30. XSD  XSD pour XML Schema Definition  Avantages par rapport à DTD :  Le typage poussé des données (booléens, entiers, intervalles de temps...)  Possibilité de créer de nouveaux types à partir de types existants.  Dérivation, Les éléments peuvent hériter du contenu et des attributs d'un autre élément..  Les indicateurs d'occurrences des éléments peuvent être tout nombre non négatif autre que 0,1 ou infini
  • 31. XSD
  • 32. XSD Type de données  Plus de 40 types de données,  string, integer, date, year, CDATA, float, double, binary, ENTITIES, token, byte, etc.  Fournit un mécanisme pour définir des types de données complexes  Créer un type de données totalement nouveau,  Restreindre ou d’étendre un type de données existant.  On distingue deux sortes de types, simple et complexe
  • 33. XSD Type simple  Un élément de type simple ne peut comporter ni attributs, ni sous-éléments.  Il est possible d’utiliser les types prédéfinis ou d’en dériver de nouveaux à partir de types déjà existant.  La liste complète des types prédéfinis est disponible à http://www.w3.org/TR/xmlschema-0/#CreatDt
  • 35. XSD Type simple  La création de nouveaux types simples est réalisée au travers de la balise <simpleType>  Trois façons pour créer un nouveau type :  Restriction : <restriction> permet de dériver un nouveau type sur la base d’un existant en ajoutant de nouvelles contraintes  List : <list> permet de créer un nouveau type liste  Union : <union> permet de créer un nouveau type en faisant l’union de plusieurs types existants
  • 36. XSD Type simple : Restriction  Les restrictions sur les types simples (Facets) permettent de dériver de nouveaux types à partir de types existants  La restriction de type permet de définir des contraintes sur le nouveau type à créer  La restriction est exprimée par la balise <restriction>
  • 37. XSD Type simple : Restriction  maxExclusive : limite supérieure (exclue)  maxInclusive : limite supérieure (incluse)  minExclusive : limite inférieure (exclue)  minInclusive : limite inférieure (incluse)  enumeration : liste de valeurs autorisée  length : nombre de caractères ou d’élément d’une liste autorisé
  • 38. XSD Type simple : Restriction  minLength : nombre minimum de caractères ou d’élément d’une liste  pattern : expression régulière à respecter  fractionDigits : nombre maxi de digits autorisé  totalDigits : nombre exact de digits autorisé  whiteSpace : politique de gestion des espaces blancs (tab, retour ligne, fin de ligne, …) La définition de l’ensemble des restrictions pour chaque type est disponible à www.w3.org/TR/xmlschema-0/# SimpleTypeFacets
  • 39. XSD Type simple : Restriction
  • 40. XSD Type simple : Listes  Il existe trois types de liste intégrés NMTOKENS, ENTITIES, IDREFS  Ces types existent pour garder la compatibilité avec les DTD  Il est possible de créer de nouveaux liste de types simple par dérivation de type existant  La création de liste est exprimé par <list>
  • 41. XSD Type simple : Union  XSD permet de définir de nouveaux types simple par union de types existants  i.e le nouveau type accepte les valeurs de l’ensemble des types qui participent à l’union  L’union est exprimé par <union>
  • 42. XSD Type complexe  Un élément de type complexe peut contenir d'autres éléments et / ou des attributs  Un attribut ne peut être de type complexe  Un élément de type complexe peut être  Elément vide qui ne contient que des attributs  Elément de type simple qui contient des attributs  Elément qui contient des sous éléments et des attributs  Elément qui contient des attributs, des sous éléments et du texte  La création d'un éléments de type complexe est réalisée au travers de la balise <complexType>
  • 43. XSD Type complexe  Type avec des attributs et sans contenu
  • 44. XSD Type complexe  Type avec ou sans attributs et un contenu de type simple  La balise <simpleContent> précise qu’il ne peut y avoir que des attributs et un contenu de type simple
  • 45. XSD Type complexe  Type avec ou sans attributs et un contenu composé de sous éléments  La balise <sequence> dite indicateur d’ordre, indique la logique de placement des sous éléments dans le document XML
  • 46. XSD Type complexe  Trois balises indicateurs d’ordre peuvent être utilisé pour indiquer la logique de placements des sous éléments dans le document XML:  <all> : les sous éléments sont placés quelque soit l’ordre  <sequence> : les sous éléments doivent respectés l’ordre de déclaration dans le type  <choice> : un seul des sous éléments déclarés est utilisé
  • 47. XSD Type complexe  Les indicateurs d'occurrence sont utilisés pour exprimer le nombre de fois qu'un sous élément peut apparaître dans le document XML  maxOccurs : précise le nombre d'occurrence maximum, la valeur par défaut est 1  minOccurs : précise le nombre d'occurrence minimum, la valeur par défaut est 1  Pour définir une valeur infinie, fixer la valeur à unbounded
  • 48. XSD Type complexe  Il est possible de créer un type d’élément dont le contenu est composé de texte et de sous éléments en même temps  L’attribut mixed de la balise complexType doit être positionné à true
  • 50. XSD Type complexe  Il est possible de définir un nouveau type complexe sur la base d'un type complexe existant  Étendre le type existant en y ajoutant des attributs est des sous éléments <extension>  Restreindre le type existant en limitant les valeurs possibles des attributs et sous éléments existants <restriction>  La balise <complexContent> est utilisé pour implémenter cette possibilité
  • 52. XSD Visibilité des Types  Un type est visible par tous les descendants du noeud dans lequel il a été déclaré.  Un type déclaré sous le noeud principal (root) <schema> est visible dans tout le document XSD.  Un type déclaré sous un nœud autre que le root, n’est visible que dans ce nœud.
  • 53. XSD Structure : entête  XSD est un document XML, Il commence par un prologue et un élément racine (root)  L’élément racine est <schema>  targetNameSpace : libelle du namespace associé au document XSD  elementFormDefault : indique si les éléments du XSD doivent être préfixé par l’alias du namespace lors de son utilisation dans un document XML
  • 54. Espaces de nom (XML Namespaces)  XML Namespaces est une spécification W3C, son objectif est  de permettre l’utilisation de plusieurs grammaires dans un seul document.  de lever les ambiguïtés lorsque plusieurs grammaires offre des éléments avec les même nom.
  • 55. XSD Structure : élément  La définition d’éléments se fait dans une balise <element>.  Définir un type de données et l’utiliser dans la définition de l’élément.  Définir le type de données à l’intérieur de l’élément.
  • 56. XSD Structure : attribut  La définition d’attributs associés à un élément se fait dans par la balise <attribute>.  name : nom de l’attribut  type : type de l’attribut, ne peut être qu’un type simple.  use : permet de préciser si l’attribut est obligatoire, optionnel ou interdit. Valeurs possibles :  required : obligatoire  optional : optionnel  prohibited : interdite  fixed : valeur fixe, ne change pas  default : valeur par défaut.
  • 57. XSD Structure : attribut  La définition d’attributs peut se faire de deux façons différents.  Définir l’attribut et l’utiliser dans la définition du type.  Définir l’attribut directement à l’intérieur du type.
  • 58. XSD Annotation  L'annotation permet d'enrichir la description d'un XSD, c’est un commentaire.  L'annotation est réalisée au travers de la balise <annotation> et propose deux sous éléments (occurrences multiples)  <documentation> : son contenu est en direction de l’utilisateur humain  <appinfo> : son contenu est en direction des outils d’édition XML
  • 59. Utiliser un XSD  A la différence du DTD, n’importe quel élément de la XSD peut servir de racine pour le document XML  xmlns:xsi : identifier le namespace de la norme W3C  xmlns:… : identifier les autres namespaces à utiliser dans le document XML  xsi:schemaLocation : identifier pour chaque namespace utilisé par le document XML, la localisation physique du document XSD (sauf pour le namespace de la norme W3C)
  • 60. Partie 2  XML Transformation  XPath  Utiliser un CSS pour formater un contenu XML  XSLT
  • 61. XPath  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
  • 62. 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 processing-instruction attribute text namespace comment element
  • 63. XPath Terminologies  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, …
  • 64. XPath Syntaxe  Une expression XPath décrit l'emplacement d'éléments et d'attributs XML comme un chemin similaire à des URL.  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-dessous
  • 65. XPath Syntaxe  Une expression XPath est évalué au sein d’un contexte  C’est le nœud par rapport auquel cette expression est évalué  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 est un élément entree : retourne l’élément fils ‘nom’
  • 66. 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
  • 67. 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.
  • 68. 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
  • 69. 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 : (..)
  • 70. XPath Syntaxe Exemple Description /annuaire/entree[1] Sélectionner le 1er fils ‘entree’ de l’élément annuaire Pour IE le 1er fils est l’indice 0 /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’
  • 71. 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()
  • 72. XPath Fonctions 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
  • 73. 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é
  • 74. XPath Chemin de localisation  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 [ ] .
  • 75. 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.
  • 76. 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
  • 77. XPath Chemin de localisation Exemple Résultat A/B[1]/following::* A/B[2]/preceding::* A/B[1]/following::D A/descendant::*
  • 78. XPath Chemin de localisation  Le test de nœud est la seule partie obligatoire d'une étape de localisation XPath.  Trois types de test :  name test : utilise un nom développé et la relation entre ce nom et l'axe spécifié pour identifier les nœuds à sélectionner.  node type test : sélectionne les nœuds en se basant sur leur type.  targeted processing instruction test : ne sélectionne que les nœuds processing-instruction qui correspondent au type spécifié.
  • 79. XPath Chemin de localisation Name test Description Exemple * retourne tous les nœuds de l’axe ancestor::* QName retourne les nœuds de l’axe qui ont le même nom local (QName) child::entree NSName:* retourne tous les nœuds de l’axe dont le nom développé comprend le namespace NSName child::tns:* NSName:QName retourne les nœuds de l’axe dont le nom développé est NSName:QName child::tns:entree
  • 80. XPath Chemin de localisation Type test Description Exemple Comment() retourne les nœuds de l’axe de type commentaire following::comment() Node() retourne les nœuds de l’axe de n’importe quel type preceding::node() text() retourne les nœuds de l’axe de type texte (contenu texte d’un élément) child::text() processing- instruction() retourne les nœuds de l’axe de type processing- instruction self::processing instruction() processing- instruction(‘name ’) retourne les nœuds de l’axe de type processing- instruction dont le nom est name /child::processing- instruction("xml- stylesheet")
  • 81. XPath Chemin de localisation Chemin Description child::chapter/descendant::para Sélectionne les descendants <para> des éléments <chapter> enfants du nœud de contexte. /descendant::olist/child::item Sélectionne tous les éléments <item> qui ont un parent <olist> contenu dans le même document que le nœud de contexte. / child::doc/child::chapter[position()=5]/ child::section[position()=2] Sélectionne le deuxième élément <section> contenu dans le cinquième élément <chapter> de l'élément de document <doc>. child::para[attribute::type="warning"] [position()=5] Sélectionne le cinquième enfant <para> du nœud de contexte ayant un attribut type dont la valeur est "warning". child::para[position()=5 and attribute::type="warning"] Sélectionne le cinquième enfant <para> du nœud de contexte ayant un attribut type dont la valeur est "warning". child::*[self::chapter or self::appendix and position()=last()] Sélectionne le dernier enfant <chapter> ou <appendix> du nœud de contexte.
  • 82. 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
  • 83. XML Transformation Utiliser un CSS pour formater un contenu XML Démo
  • 84. 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.
  • 87. 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
  • 88. 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
  • 89. XSLT Templates  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
  • 90. 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, …)
  • 92. 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
  • 93. 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
  • 94. 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.
  • 95. 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é
  • 96. 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
  • 97. 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
  • 98. 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.
  • 99. Partie 3  XML Query – XQuery  Définition  Syntaxe & Expressions  Selection et filtrage de données  Fonctions
  • 100. XQuery Définition  XQuery pour XML Query  C’est un langage de requête permettant d'extraire des informations d'un document XML, ou d'une collection de documents XML  XQuery joue par rapport aux données XML un rôle similaire à celui du langage SQL vis-à-vis des données relationnelles
  • 101. XQuery Syntaxes  La syntaxe FLWOR dont le nom vient des cinq clauses principales qui la composent (for, let, where, order by et return)  La syntaxe XQueryX pour « XML Syntax for XQuery », dans laquelle une requête est un document XML.  XQuery se base sur XPath pour sélectionner les éléments à traiter
  • 102. XQuery Clause LET  Une expression FLWR permet d’utiliser des affectations de variables, et d’utiliser ces variables dans la suite de la requête.  L’affectation se fait au moyen de la clause LET  les variables sont ensuite non mutables. LET $noms := document(“annuaire.xml”)//nom RETURN $noms
  • 103. XQuery Clause FOR  La clause For permet d’effectuer des itérations sur un ensemble de noeuds obtenus dans une requête.  A chaque itération un élément de cette liste est affecté à une variable de boucle, et le traitement explicité dans le For est appliqué à cette variable. FOR $element IN //entree RETURN $element/nom
  • 104. XQuery Clause RETURN  La clause RETURN permet d’envoyer une valeur de retour à chaque itération de la boucle FOR,  La valeur de retour est concaténée à une variable de sortie, qui est renvoyée à l’utilisateur lors de la dernière itération.  RETURN ne provoque pas de sortie de la boucle For, le retour effectif à l’utilisateur se fait uniquement lors de la dernière itération ! FOR $element IN //entree RETURN $element/nom Résultat : <nom>Nom1</nom> <nom>Nom2</nom> <nom>Nom3</nom>
  • 105. XQuery Clause WHERE  La clause WHERE permet de filtrer les noeuds obtenus par la requête dans une clause For, à la manière du WHERE SQL.  Le contenu de la clause WHERE est une expression dont le résultat de l’évaluation est booléen.  il est possible d’utiliser des opérations logiques AND et OR.  il est possible d’utiliser des expressions et fonctions XPath FOR $element IN //entree WHERE $ element /nom = “Harry Cover” OR $ element /nom = “Paul Lafargue” RETURN $element
  • 106. XQuery Imbrication de requêtes  XQuery permet d’imbriquer les requêtes. LET $entrees:=//entree RETURN FOR $nom IN $entrees/nom RETURN $nom Résultat : <nom>Nom1</nom> <nom>Nom2</nom>