Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parAmbrosine Blanchard Modifié depuis plus de 10 années
1
Xpath XML Path language par Yves Bekkers
2
Plan Pourquoi Xpath ? Syntaxe des expressions de chemin
Quelques exemples Opérandes et opérateurs Conclusion
3
Pourquoi XPath
4
Déplacements dans un document XML
Xpath : Un langage fonctionnel pour adresser les sous-arbres d'un arbre XML Norme utilisée dans de nombreux outils XML XSLT : langage de transformation d'arbre XML Xlink : outils de définition de liens XQuery : langage d'interrogation de documents
5
Transformation XSLT
6
Problème de repérage Au sein des feuilles de style XSLT
on doit désigner les branches de l’arbre d’entrée (document source) Repère 2 Repère 1 Solution : « expression de chemin »
7
Chemin absolu Codepostal de la carte de visite :
8
Chemin relatif A partir du numéro, la note : ../../note
9
Racine d’un document La racine d’un document est au dessus de l’élément racine du document, elle contient des commentaires éventuels des instructions de traitements éventuelles un et un seul élément (l’élément racine)
10
Type de nœud d’un arbre XPath
1. Nœud « élément » /carteDeVisite/note 2. Pseudo-nœud « attribut » /carteDeVisite/adresse/ville/attribute::codepostal 3. Nœud « texte » /carteDeVisite/note/clé/text() 1 2 3 1 2 3
11
Autres types de nœud Nœud commentaire Nœud instruction de traitement
<!-- ceci est un commentaire --> Nœud instruction de traitement <?xml-stylesheet type="text/xsl" href="C:\Abekkers\outils\xml2tree\xml2svg.xslt"?> Partie name() Partie text()
12
Syntaxe des expressions de chemin
13
Expression de chemin séquence d’étapes Chemin absolu Chemin relatif
/étape1/étape2/étape3/... Chemin relatif étape1/étape2/étape3/...
14
Étape Une étape est composée de trois parties
axe de déplacement (optionnel) test de nœud (obligatoire) prédicat (optionnel)
15
Syntaxe d’une section Exemple La partie test de nœud est obligatoire
child::text()[position()=1] carteDeVisite[nom=’Bekkers’] comment() ancestor::nom attribut::codepostal La partie test de nœud est obligatoire La partie axe se termine par :: La partie prédicat est délimitée par […] axe test prédicat
16
Axes de déplacement + attribute
17
Partie test Un test c’est : Un nom d’élément, exemple : ville, prénom
* : n’importe quel élément text() comment() processing-instruction() processing-instruction(nom) node() identique à l’union de *, text(), comment() et de
18
Filtrage à l’aide du prédicat
Une expression Xpath s’évalue en un ensemble de nœuds /html/body/p 1 1 Filtrage par la position /html/body/p[position()=1] /html/body/p[position()=last()] Filtrage par le contenu /html/body/p[em]
19
Quelques raccourci
20
Quelques exemples
21
Quelques exemples //note/text() //note/text()[position()=1]
2 1 1 3 //note/text() //note/text()[position()=1] //nom[.=’Bekkers’] 1 2 3
22
Quelques exemples
23
Quelques exemples - suite
24
Opérandes et opérateurs
25
Constantes Chaînes Valeurs numériques 'Paris' "That's rubbish"
'He said "Boo"' Valeurs numériques 12, 3.05,
26
Prédicat - exemples [@codepostal=’35700’] [.=’Bekkers’]
[nom=’Bekkers’] [position()=last()-1] [not(position()=1)]
27
Opérateurs Expression numériques : Expression booléenne :
+, -, *, div, mod position(), last(), count(nds), string-length(expr) Expression booléenne : or, and, not(...), false(), true(), boolean(...), =, !=, <, <=, >= (à écrire < et >) Expression nœud id(chaîne)
28
Opérateurs (suite) Expressions chaîne string(exp)
concat(exp1, exp2, …) substring(expr,start), substring(expr,start,length) substring-before(expr,expr) substring-after(expr,expr)
29
Générateur d’identificateur
generate-id(expr) génère automatiquement un identificateur XML spécifique au premier nœud de l’ensemble de nœuds donné par l’expression generate-id() génère automatiquement un identificateur XML spécifique au nœud courant
30
Fonction generate-id()
Propriétés L’ordre alphabétique des identificateurs est le même qui l’ordre des nœuds dans le document Si generate-id(A) est un préfixe de generate-id(B), alors A est un ancêtre de B L’identificateur est unique au sein de tous les documents ouverts durant l’exécution.
31
Opérateur union Tous les éléments pere ou mere du document
//pere | //mere
32
Séquence de plusieurs prédicats
le dernier fils du nœud courant pourvu que ce soit un élément « ville » ou un élément « rue » [last()][ville or rue] le dernier des fils « ville » ou « rue » du nœud courant [ville or rue][last()]
33
SELECT DISTINCT de SQL tous les premiers éléments "ville" du document différents les uns des autres //ville[not(text()=preceding::ville/text())] équivalent de not in
34
Conclusion
35
Conclusions Xpath est puissant et indispensable
permet d’adresser n’importe quel nœud d’un document par sa position ou par contexte Mais Xpath n’est pas fait pour remplacer SQL et les bases de données efficacité ? Dans une feuille de style XSLT, Xpath est rarement employé dans toute sa généralité
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.