xpath xml path language par yves bekkers. plan pourquoi xpath ? syntaxe des expressions de chemin...

35
Xpath XML Path language par Yves Bekkers

Upload: ambrosine-blanchard

Post on 04-Apr-2015

107 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Xpath XML Path language par Yves Bekkers. Plan Pourquoi Xpath ? Syntaxe des expressions de chemin Quelques exemples Opérandes et opérateurs Conclusion

Xpath

XML Path language

par Yves Bekkers

Page 2: Xpath XML Path language par Yves Bekkers. Plan Pourquoi Xpath ? Syntaxe des expressions de chemin Quelques exemples Opérandes et opérateurs Conclusion

Plan

• Pourquoi Xpath ?

• Syntaxe des expressions de chemin

• Quelques exemples

• Opérandes et opérateurs

• Conclusion

Page 3: Xpath XML Path language par Yves Bekkers. Plan Pourquoi Xpath ? Syntaxe des expressions de chemin Quelques exemples Opérandes et opérateurs Conclusion

Pourquoi XPath

Page 4: Xpath XML Path language par Yves Bekkers. Plan Pourquoi Xpath ? Syntaxe des expressions de chemin Quelques exemples Opérandes et opérateurs Conclusion

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

Page 5: Xpath XML Path language par Yves Bekkers. Plan Pourquoi Xpath ? Syntaxe des expressions de chemin Quelques exemples Opérandes et opérateurs Conclusion

Transformation XSLT

+

Document source

Feuille de style

Document de sortie

Page 6: Xpath XML Path language par Yves Bekkers. Plan Pourquoi Xpath ? Syntaxe des expressions de chemin Quelques exemples Opérandes et opérateurs Conclusion

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 1 Repère 2

• Solution : « expression de chemin »

Page 7: Xpath XML Path language par Yves Bekkers. Plan Pourquoi Xpath ? Syntaxe des expressions de chemin Quelques exemples Opérandes et opérateurs Conclusion

Chemin absolu

• Codepostal de la carte de visite : /cartedeVisite/adresse/ville/@codepostal

Page 8: Xpath XML Path language par Yves Bekkers. Plan Pourquoi Xpath ? Syntaxe des expressions de chemin Quelques exemples Opérandes et opérateurs Conclusion

Chemin relatif

• A partir du numéro, la note : ../../note

Page 9: Xpath XML Path language par Yves Bekkers. Plan Pourquoi Xpath ? Syntaxe des expressions de chemin Quelques exemples Opérandes et opérateurs Conclusion

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)

/ Racine du document/html Elément racine du document si c'est html/* Elément racine du document

Page 10: Xpath XML Path language par Yves Bekkers. Plan Pourquoi Xpath ? Syntaxe des expressions de chemin Quelques exemples Opérandes et opérateurs Conclusion

Type de nœud d’un arbre XPath1. Nœud « élément » /carteDeVisite/note

2. Pseudo-nœud « attribut »/carteDeVisite/adresse/ville/attribute::codepostal

/carteDeVisite/adresse/ville/@codepostal

3. Nœud « texte »/carteDeVisite/note/clé/text()

1

2

3

1

2

3

Page 11: Xpath XML Path language par Yves Bekkers. Plan Pourquoi Xpath ? Syntaxe des expressions de chemin Quelques exemples Opérandes et opérateurs Conclusion

Autres types de nœud

• Nœud commentaire<!-- 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()

Page 12: Xpath XML Path language par Yves Bekkers. Plan Pourquoi Xpath ? Syntaxe des expressions de chemin Quelques exemples Opérandes et opérateurs Conclusion

Syntaxe des expressions de chemin

Page 13: Xpath XML Path language par Yves Bekkers. Plan Pourquoi Xpath ? Syntaxe des expressions de chemin Quelques exemples Opérandes et opérateurs Conclusion

Expression de chemin

• séquence d’étapes

• Chemin absolu– /étape1/étape2/étape3/...

• Chemin relatif– étape1/étape2/étape3/...

Page 14: Xpath XML Path language par Yves Bekkers. Plan Pourquoi Xpath ? Syntaxe des expressions de chemin Quelques exemples Opérandes et opérateurs Conclusion

Étape• Une étape est composée de trois parties

– axe de déplacement (optionnel)– test de nœud (obligatoire)– prédicat (optionnel) 

Page 15: Xpath XML Path language par Yves Bekkers. Plan Pourquoi Xpath ? Syntaxe des expressions de chemin Quelques exemples Opérandes et opérateurs Conclusion

Syntaxe d’une section• Exemple

– 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

Page 16: Xpath XML Path language par Yves Bekkers. Plan Pourquoi Xpath ? Syntaxe des expressions de chemin Quelques exemples Opérandes et opérateurs Conclusion

Axes de déplacement

self

parent

ancestor

ancestor-or-self

preceding-sibling following-sibling

preceding following

child

descendant

descendant-or-self

+ attribute

Page 17: Xpath XML Path language par Yves Bekkers. Plan Pourquoi Xpath ? Syntaxe des expressions de chemin Quelques exemples Opérandes et opérateurs Conclusion

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

processing-instruction()

Page 18: Xpath XML Path language par Yves Bekkers. Plan Pourquoi Xpath ? Syntaxe des expressions de chemin Quelques exemples Opérandes et opérateurs Conclusion

Filtrage à l’aide du prédicat

Filtrage par la position/html/body/p[position()=1]/html/body/p[position()=last()]Filtrage par le contenu/html/body/p[em]

1

1

Une expression Xpath s’évalue en un ensemble de nœuds/html/body/p

Page 19: Xpath XML Path language par Yves Bekkers. Plan Pourquoi Xpath ? Syntaxe des expressions de chemin Quelques exemples Opérandes et opérateurs Conclusion

Quelques raccourci

// /descendant-or-self::node()

@id attribut::id

. self::node()

.. parent::node()

note child::note

* child::*

Page 20: Xpath XML Path language par Yves Bekkers. Plan Pourquoi Xpath ? Syntaxe des expressions de chemin Quelques exemples Opérandes et opérateurs Conclusion

Quelques exemples

Page 21: Xpath XML Path language par Yves Bekkers. Plan Pourquoi Xpath ? Syntaxe des expressions de chemin Quelques exemples Opérandes et opérateurs Conclusion

Quelques exemples

//note/text()

//note/text()[position()=1]

//nom[.=’Bekkers’]

1

1 1

2

2

3

3

Page 22: Xpath XML Path language par Yves Bekkers. Plan Pourquoi Xpath ? Syntaxe des expressions de chemin Quelques exemples Opérandes et opérateurs Conclusion

Quelques exemples//figure Tous les éléments "figure" du

documentfigure Tous les éléments "figure" fils du nd

courant./figure Tous les éléments "figure" fils du nd

courant*/figure Tous les éléments "figure" petit fils

du nd courantadresse/@rue Les attributs "rue" des éléments

"adresse" fils du nd courantadresse/text() Tous les textes situés directement

sous l'élément "adresse"

Page 23: Xpath XML Path language par Yves Bekkers. Plan Pourquoi Xpath ? Syntaxe des expressions de chemin Quelques exemples Opérandes et opérateurs Conclusion

Quelques exemples - suite*[last()] Le dernier fils du nœud courant

figure[lg] Tous les éléments "figure" fils du ndcourant, pourvu qu'ils aient un fils"lg"

ancestor::tst L'élément "tst" englobant le plusintérieur

./@* Tous les attributs de l'élémentcourant

XXX[@WIDTH andnot(@WIDTH="20")]

Les éléments XXX fils du ndcourant pourvu qu'ils aient unattribut "WIDTH" avec une valeurdifférente de 20

Page 24: Xpath XML Path language par Yves Bekkers. Plan Pourquoi Xpath ? Syntaxe des expressions de chemin Quelques exemples Opérandes et opérateurs Conclusion

Opérandes et opérateurs

Page 25: Xpath XML Path language par Yves Bekkers. Plan Pourquoi Xpath ? Syntaxe des expressions de chemin Quelques exemples Opérandes et opérateurs Conclusion

Constantes

• Chaînes– 'Paris'– "That's rubbish"– 'He said "Boo"'

• Valeurs numériques– 12, 3.05, - 5.25

Page 26: Xpath XML Path language par Yves Bekkers. Plan Pourquoi Xpath ? Syntaxe des expressions de chemin Quelques exemples Opérandes et opérateurs Conclusion

Prédicat - exemples

[@codepostal=’35700’]

[.=’Bekkers’]

[nom=’Bekkers’]

[position()=last()-1]

[not(position()=1)]

Page 27: Xpath XML Path language par Yves Bekkers. Plan Pourquoi Xpath ? Syntaxe des expressions de chemin Quelques exemples Opérandes et opérateurs Conclusion

Opérateurs

• Expression numériques :– +, -, *, div, mod– position(), last(), count(nds), – string-length(expr)

• Expression booléenne :– or, and, not(...), false(), true(), – boolean(...),

– =, !=, <, <=, >= (à écrire &lt; et &gt;)

• Expression nœud– id(chaîne)

Page 28: Xpath XML Path language par Yves Bekkers. Plan Pourquoi Xpath ? Syntaxe des expressions de chemin Quelques exemples Opérandes et opérateurs Conclusion

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)

Page 29: Xpath XML Path language par Yves Bekkers. Plan Pourquoi Xpath ? Syntaxe des expressions de chemin Quelques exemples Opérandes et opérateurs Conclusion

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

Page 30: Xpath XML Path language par Yves Bekkers. Plan Pourquoi Xpath ? Syntaxe des expressions de chemin Quelques exemples Opérandes et opérateurs Conclusion

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.

Page 31: Xpath XML Path language par Yves Bekkers. Plan Pourquoi Xpath ? Syntaxe des expressions de chemin Quelques exemples Opérandes et opérateurs Conclusion

Opérateur union

• Tous les éléments pere ou mere du document

//pere | //mere

Page 32: Xpath XML Path language par Yves Bekkers. Plan Pourquoi Xpath ? Syntaxe des expressions de chemin Quelques exemples Opérandes et opérateurs Conclusion

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()]

Page 33: Xpath XML Path language par Yves Bekkers. Plan Pourquoi Xpath ? Syntaxe des expressions de chemin Quelques exemples Opérandes et opérateurs Conclusion

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

Page 34: Xpath XML Path language par Yves Bekkers. Plan Pourquoi Xpath ? Syntaxe des expressions de chemin Quelques exemples Opérandes et opérateurs Conclusion

Conclusion

Page 35: Xpath XML Path language par Yves Bekkers. Plan Pourquoi Xpath ? Syntaxe des expressions de chemin Quelques exemples Opérandes et opérateurs Conclusion

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é