Professional Documents
Culture Documents
Xpath 1.0
XML Path Language
recommandation W3C pour expressions de chemins
accepte le 16 novembre 1999
version 1.0 et tout rcemment la version 2.0
XPath permet
de rechercher un lment dans un document
d'adresser toute sous partie d'un document
XPath
</livre>
Les
chatiments
livre
chapitre
section
Bonaparte
chapitre
section
Neige
relatif
Syntaxe et smantique
Cheminement lmentaire
direction::slecteur [predicat]
Directions
parent, ancestor, ancestor-or-self
child, descendant, descendant-or-self
preceding, preceding-sibling, following, following-
sibling
self, attribute, namespace
Slecteur
nom de nud slectionn (lment ou @attribut)
Prdicat
[Fonction(nud) = valeur]
XPath
Exemples de direction
Dans la figure, la direction (child, descendant, ancestor, ) est dsigne en anglais.
XPath1.0 - Exemples
Sections d'un chapitre
/child::livre/child::chapitre/child::section (la
forme non abrge)
/livre/chapitre/section (la forme abrge)
Texte du chapitre 1 section 2
/descendant::chapitre[position() = 1]
/child::section[position() = 2]/child::text()
//chapitre[1]/section[2]/text()
XPath
Xpath1.0 - Synthse
Pattern
Exemple
Signification
Nom
section
Slectionne les lments de nom donn
Nom[0]
section[0] Slectionne le premier lment ayant le nom donn
Nom[end()] section[end()] Slectionne le dernier lment ayant un nom donn
|
Droite|Gauche Indique une alternative (un nud OU bien l'autre (ou les deux))
/
/
Slectionne le nud racine d'une arborescence
/arbre/Nom /livre/chapitre Slectionne les nuds descendants par la balise de nom donn de l'arbre
*
*
Motif "joker" dsignant n'importe quel lment
//
//personne Indique tous les descendants d'un nud
.
.
Caractrise le nud courant
Dsigne le nud parent. Permet de remonter d'un niveau dans
..
..
l'arborescence
Indique un attribut caractristique (@nom dsigne la valeur de l'attribut).
@
@nom
La notation @* dsigne tous les attributs d'un lment
text()
text()
Dsigne le contenu d'un lment (le texte contenu entre ses balises)
Slectionne l'lment dont l'identifiant (la valeur de l'attribut ID) est celui
ID()
ID('a2546')
spcifi en paramtre
Comment() Comment() Dsigne tous les nuds commentaires
Node()
Node()
Dsigne tous les noeuds
8
Rle
Exemple
count(slection)
Donne le nombre
dlment
correspondant la
slection
//cd
[count(morceau)=10]
name()
//*[name()=titre]
id(identificateur)
//*[id(mach001)]
namespace-uri()
role
Exemple
dutilisation
starts-with(string1,
string2)
Renvoie vrai si la
premire chane
commence par la
deuxime
//*[startswith(name(),
t)]
contains(string1,
string2)
Renvoie vrai si la
premire chane
contient la deuxime
//*[contains(name(),
t)]
string-length(string)
Retourne la taille de
//*[stringlength(
la chane de caractre name()) > 5]
donne en argument
10
XSL
eXtensible Style language
11
XSLT : Introduction
Permet de transformer un document
de XML XML,
De XML prsentation (HTML, texte, rtf, pdf,
etc.)
Un document est un arbre
Le processeur XSL parcourt l'arbre et applique
XSLT
12
XSLT: Introduction
Les multiples cas de transformation
Formatage
Rutilisation de document
Adaptation aux appareils de prsentation
Conversion de format, par exemple XML vers
HTML,text,pdf,
La transformation est une tape invitable pour lutilisation
du document
13
Format ( Postcript)
XML
Browser
Document
XSL
Processor
Format (XML)
pour Word,
Excel
XSL
Stylesheet
Format (XML)
application
e.Commerce
format
(WML)
XSLT 1.0
XSL Transformation
XSLT 1.0 Novembre 1999
Permet de transformer un document XML
gnrique en un document XML
spcifique
Sadapte au profil de lutilisateur
Sadapte lenvironnement:
Type du navigateur, document multimdia,
Principe de fonctionnement de
XSLT 1.0
Convertir un arbre en un autre arbre;
Une transformation XSLT consiste en une srie
de rgles;
La transformation se fait en associant des motifs
(patterns) des modles (templates);
Pattern: Contexte structural dans l'arbre source
(Expression Xpath);
Template: Un fragment du rsultat produire
pour le pattern correspondant;
Quand le pattern est reconnu dans le document
source, le template correspondant est engendr
dans le document rsultat.
16
17
Exemple de document
XSLT
18
Exemple de feuille de
style XSLT
<?xml version="1.0" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/xsl">
<xsl:template match="/">
<html><head><B>ESSAI XSL</B></head> <body>
<xsl:apply-templates/></body></html>
</xsl:template>
<xsl:template match="Guide">
<H1>BONJOUR LE GROUPE XML</H1>
<H2>SUIVEZ LE GUIDE</H2>
<xsl:apply-templates />
</xsl:template>
<xsl:template match="Restaurant">
<P><I>Restaurant :</I>
<xsl:value-of select="Nom"/></P>
</xsl:template>
</xsl:stylesheet>
XSLT
19
XSLT
20
Structure de XSLT
Toutes les instructions XSL appartiennent lespace de
</xsl:stylesheet>
Instruction xsl:template
Les composants les plus importants dune XSLT sont les
22
Instruction xsl:template
Attributs
match: condition de slection des nuds sur lesquels la
Exemples
<xsl: template match="/">
<xsl: template match="auteur" name="R1" priority="1">
XSLT
23
Modles XSLT
Exemple
<xsl:template match= "Titre">
<h1> XML pour les dbutants </h1>
</xsl:template>
Source : <Titre>Introduction</Titre>
Rsultat : <h1> XML pour les dbutants
</h1>
24
Instruction xsl:applytemplates
Applique l'intrieur d'un modle dfini avec xsl:template
d'autres
modles
qui
sont
le
cas
chant
dfinis
avecxsl:template. De cette manire, les dpendances et
l'ordre lors de l'emploi de modles peuvent tre contrls.
xsl:apply-templates possde les attributs suivants :
select=(facultatif)choisit un modle qui doit tre appliqu. Le jeu
choisit
le
modle
mentionn
avecselect=que lorsqu'il a le mode mentionn. Pour cela il faut
que lors de la dfinition dexsl:templateun nom qui concorde ait
t attribu pour le mode avecmode=.
25
Exemple de feuille de
style XSL
<?xml version="1.0" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/xsl">
<xsl:template match="/">
<html><head><B>ESSAI XSL</B></head> <body>
<xsl:apply-templates/></body></html>
</xsl:template>
<xsl:template match="Guide">
<H1>BONJOUR LE GROUPE XML</H1>
<H2>SUIVEZ LE GUIDE</H2>
<xsl:apply-templates />
</xsl:template>
<xsl:template match="Restaurant">
<P><I>Restaurant :</I>
<xsl:value-of select="Nom"/></P>
</xsl:template>
</xsl:stylesheet>
XSLT
26
Instruction xsl:value-of
Llment vide xsl:value-of permet de
27
Exemple de feuille de
style XSL
<?xml version="1.0" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/xsl">
<xsl:template match="/">
<html><head><B>ESSAI XSL</B></head> <body>
<xsl:apply-templates/></body></html>
</xsl:template>
<xsl:template match="Guide">
<H1>BONJOUR LE GROUPE XML</H1>
<H2>SUIVEZ LE GUIDE</H2>
<xsl:apply-templates />
</xsl:template>
<xsl:template match="Restaurant">
<P><I>Restaurant :</I>
<xsl:value-of select="Nom"/></P>
</xsl:template>
</xsl:stylesheet>
XSLT
28
Instruction xsl:for-each
Elle permet de traiter, tour tour, chacun des
Instruction de test
Linstruction xsl:if permet de contrler ce qui est gnr
Exemple
<carnet>
<personne
nom="dupont"
prenom="jean"/>
<personne
nom="dupont"
prenom="arthur"/>
<personne
nom="dupond"
prenom="martin"/>
</carnet>
<xsl:for-each
select="//personne">
<xsl:if
test="./@nom='dupond'"
>
Bienvenue Mr Dupond
</xsl:if>
<xsl:if test="not(
./@nom='dupond')">
Bienvenue Mme <xsl:value-of
select="@nom"/>
</xsl:if>
</xsl:for-each>
31
Sortie
Les instructions xsl:element,
xsl:attribute, xsl:processinginstruction,
xsl:comment et xsl:text permettent la
gnration des diffrentes composantes dun
document XML
Les instructions xsl:number, xsl:copy,
xsl:sort, permettent de contrler plus
finement larbre de sortie
32
33
34
Exercice 0
Raliser tous les exemples traits dans le
35
Exercice (1)
Soit le document XML suivant :
<?xml version="1.0" ?>
<?xml:stylesheet type="text/xsl" href="untitled4.xsl"?>
<PEOPLE>
<PERSON>
<NAME >Mark Wilson</NAME>
<ADDRESS>911 Somewhere Circle, Canberra, Australia</ADDRESS>
<TEL>(++612) 12345</TEL>
<FAX>(++612) 12345</FAX>
<EMAIL>Mark.Wilson@somewhere.com</EMAIL>
</PERSON>
<PERSON>
<NAME>Tracey Wilson</NAME>
<ADDRESS>121 Zootle Road, Cape Town, South Africa</ADDRESS>
<TEL>(++2721) 531 9090</TEL>
<FAX>(++2721) 531 9090</FAX>
<EMAIL>Tracey.Wilson@somewhere.com</EMAIL>
</PERSON>
36
Exercice 1(suite)
<PERSON>
<NAME>Jodie Foster</NAME>
<ADDRESS>30 Animal Road, New York, USA</ADDRESS>
<TEL>(++1) 3000 12345</TEL>
<FAX>(++1) 3000 12345</FAX>
<EMAIL>Jodie.Foster@somewhere.com</EMAIL>
</PERSON>
<PERSON>
<NAME>Lorrin Maughan</NAME>
<ADDRESS>1143 Winners Lane, London, UK</ADDRESS>
<TEL>(++94) 17 12345</TEL>
<FAX>++94) 17 12345</FAX>
<EMAIL>Lorrin.Maughan@somewhere.com</EMAIL>
</PERSON>
<PERSON>
<NAME>Steve Rachel</NAME>
<ADDRESS>90210 Beverly Hills, California, USA</ADDRESS>
<TEL>(++1) 2000 12345</TEL>
<FAX>(++1) 2000 12345</FAX>
<EMAIL>Steve.Rachel@somewhere.com</EMAIL>
</PERSON>
</PEOPLE>
37
Exercice 1(suite)
Dfinir la transformation XSLT permettant de
38