publication de données avec xml, xpath et...

167
Publication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris 2003 - Bernd Amann [email protected] CNAM, Paris Introduction à XML/XSLT / B. Amann et P. Rigaux – p.1/167

Upload: others

Post on 17-Jul-2020

8 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Publication de données avec XML,Xpath et XSLT

License Professionelle ACSID

CNAM, Paris 2003 - Bernd Amann

[email protected]

CNAM, Paris

Introduction à XML/XSLT / B. Amann et P. Rigaux – p.1/167

Page 2: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Objectifs du Cours

Mieux comprendre la publication des donnéessur le Web :

Intégration de données avec XML

Adressage de fragments avec XPath

Transformation de documents XML avec XSLT

Site de Comprendre XSLT, B. Amann etP. Rigaux, O’Reilly, 2002 :

http://cortes.cnam.fr:8080/XSLT

Introduction à XML/XSLT / B. Amann et P. Rigaux – p.2/167

Page 3: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

La publication de données avecXML

La publication de données avec XML - B. Amann et P. Rigaux – p.3/167

Page 4: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Les applications du Web

Diffusion d’informations: journaux, publicité,radio, télévision

Échange et partage d’informations : forums,news, portails

Recherche d’information : moteurs de recherchepar mots-clés

Commerce électronique : billetterie, bourse,catalogues électroniques

La publication de données avec XML - B. Amann et P. Rigaux – p.4/167

Page 5: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Nouveaux besoins

Mots clés : échange et publication de données.L’environnement est hétérogène:

� Les données doivent être représentéesindépendamment d’un langage ou d’unemachine donnée.

� Il faut pouvoir transformer facilement lesdonnées échangées entre différentesapplications

La publication de données avec XML - B. Amann et P. Rigaux – p.5/167

Page 6: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Le problème ?

Je voudrais :

� rendre les mêmes données disponibles et

� récupérer les données existantes

sans gérer � � � interfaces pour � clients et �

serveurs différents.

La publication de données avec XML - B. Amann et P. Rigaux – p.6/167

Page 7: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Pourquoi XML ?

Le langage XML est une réponse à ces besoins.Un document XML

� peut être échangé facilement (format ASCII) ;

� permet de représenter pratiquement touteinformation structurée ;

� n’est pas lié à un mode d’utilisation : chacunpeut se définir ses propres « structures » ;

� peut être transformé (relativement)facilement (avec le langage XSLT).

La publication de données avec XML - B. Amann et P. Rigaux – p.7/167

Page 8: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Les applications du Web avec XML

Publication d’informations: transformation deXML en différents formats/dialectes : HTML,SMIL, WML, SVG, MathML

Diffusion d’informations: Web Sémantique :RDF/RSS, Dublin core

Échange et partage d’informations : dialectesXML partagés entre les membres d’unecommunauté, services Web (SOAP)

Recherche d’information : recherche avec“requêtes structurés”

Commerce électronique : standards(EDI/EDIFACT, ...)

La publication de données avec XML - B. Amann et P. Rigaux – p.8/167

Page 9: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Pourquoi pas HTML ?

Actuellement, le principal format du Web estHTML:

� HTML est un langage pour présenter desinformations à l’écran.

� il ne permet pas d’échanger des données

� il ne permet pas un traitement desdonnées autre que l’affichage

On ne sait pas interpréter des données fourniesen HTML.

La publication de données avec XML - B. Amann et P. Rigaux – p.9/167

Page 10: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Une étude de cas

L’Officiel des spectacles !On a des cinémas qui veulent

� diffuser leur programme (salles, séances)sur le Web, sur le WAP, sur des tracts et desaffiches...

� inclure des informations sur des filmsprovenant d’une base de données MySQL,

� approvisionner un moteur de recherche pourchercher des séances, des films, deshoraires...

La publication de données avec XML - B. Amann et P. Rigaux – p.10/167

Page 11: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

La fiche du film Gladiator

La fiche du film peut être publiée

� en HTML pour Netscape/IE

� en WML pour le portables WAP

� en SMIL pour Realplayer

� dans un moteur de rechercheSallesEnLigne.com

L’information ?

� c’est la même, sous des formes différentes

� elle est échangée entre plusieurs acteursLa publication de données avec XML - B. Amann et P. Rigaux – p.11/167

Page 12: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Les solutions XML ?

� Format universel :

� représentation en chaîne de caractèresd’un contenu structuré

� indépendant de toute application

� Publier l’information

� outils de transformation simples pourconvertir un contenu XML

� Échanger et intégrer l’information

� assembler des contenus XML, ou aucontraire en extraire des informations

La publication de données avec XML - B. Amann et P. Rigaux – p.12/167

Page 13: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

XML, format universel

XML, format universel - B. Amann et P. Rigaux – p.13/167

Page 14: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

XML, c’est quoi ?

XML = rendre un contenu accessible à touteapplication.Le contenu :L’Epée de bois, 100 rue Mouffetard,

métro Censier-DaubentonLe même, en XML :

<?xml version="1.0" encoding="ISO-8859-1"?><CINEMA><NOM>Epée de Bois</NOM><ADRESSE>100,rue Mouffetard</ADRESSE><METRO>Censier-Daubenton</METRO></CINEMA>

XML, format universel - B. Amann et P. Rigaux – p.14/167

Page 15: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Le même, mieux présenté

Présentation courante : avec indentation

<?xml version="1.0" encoding="ISO-8859-1"?><CINEMA>

<NOM>Epée de Bois

</NOM><ADRESSE>

100, rue Mouffetard</ADRESSE>

<METRO>Censier-Daubenton

</METRO></CINEMA>

NB : il y a des espaces et des sauts de ligne

XML, format universel - B. Amann et P. Rigaux – p.15/167

Page 16: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Encore mieux : sous forme d’arbre

CINEMA

NOM

Épée de bois

ADRESSE

100, rue Mouffetard

METRO

Censier-Daubenton

Traiter un document XML = extraire desinformations d’un arbre.

XML, format universel - B. Amann et P. Rigaux – p.16/167

Page 17: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Un exemple plus complet, avec attributs

<?xml version="1.0" encoding="ISO-8859-1"?><CINEMA>

<NOM>Epée de bois</NOM><ADRESSE>100, rue Mouffetard</ADRESSE><METRO>Censier-Daubenton</METRO>

<SALLE NO=’1’ PLACES=’320’><TITRE>Alien</TITRE><REMARQUE>Reservation conseillée</REMARQUE><SEANCES>

<SEANCE>15:00</SEANCE><SEANCE>18:00</SEANCE><SEANCE>21:00</SEANCE>

</SEANCES></SALLE>

</CINEMA>

XML, format universel - B. Amann et P. Rigaux – p.17/167

Page 18: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Sous forme d’arbre

CINEMA

METROADRESSENOM SALLE

TITRE REMARQUE SEANCES

SEANCE SEANCE SEANCE

SALLE

TITRE SEANCES

SEANCE

Epée de bois 100, rueMouffetard

Censier

Alien Réservationconseillée

15:00 18:00 21:00

Vertigo

22:00

NO=1 NO=2PLACES=320 PLACES=120

XML, format universel - B. Amann et P. Rigaux – p.18/167

Page 19: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Documents XML

Un document XML est

� une représentation alphanumérique

� de données (semi-)structurées

� provenant

� d’un ou de plusieurs fichiers et/ou

� d’un message et/ou

� d’une base de données...

XML, format universel - B. Amann et P. Rigaux – p.19/167

Page 20: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Exemple d’Intégration

<?xml version="1.0" encoding="ISO-8859-1"?>

<SALLE NO=’2’ PLACES=’120’><FILM><TITRE>Vertigo</TITRE><AUTEUR>Alfred Hitchcock</AUTEUR><ANNEE>1958</ANNEE><GENRE>Drame</GENRE><PAYS>Etats Unis</PAYS><RESUME>Scottie Ferguson, ancien inspecteur

de police, est sujet au vertige depuisqu’il a vu mourir son collègue....

</RESUME></FILM><SEANCES>

<SEANCE>22:00</SEANCE></SEANCES>

</SALLE>

XML, format universel - B. Amann et P. Rigaux – p.20/167

Page 21: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Sous forme d’arbre

TITRE AUTEUR ANNEE GENRE PAYS RESUME

SEANCESFILM

SALLE

SEANCE

Salle2.xml:/

22:00

Vertigo 1958Hitchcock Scotty...USA1958

NO=2PLACES=120

XML, format universel - B. Amann et P. Rigaux – p.21/167

Page 22: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Le cinéma : intégration des salles

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE CINEMA [<!ENTITY salle1 SYSTEM "Salle1.xml"><!ENTITY salle2 SYSTEM "Salle2.xml">

]><CINEMA>

<NOM>Epée de bois</NOM><ADRESSE>100, rue Mouffetard</ADRESSE><METRO>Censier-Daubenton</METRO>

&salle1;

&salle2;</CINEMA>

XML, format universel - B. Amann et P. Rigaux – p.22/167

Page 23: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Premier bilan

Disposer d’une et une seule représentation

� J’utilise un traitement de texte ? je suisprisonnier du format

� Je stocke dans une base de données ? idem

Créer un langage pour décrire nos données

� Ne pas utiliser HTML, dédié à la présentationdans un navigateur

� = � utiliser XML, et convertir vers HTML

XML, format universel - B. Amann et P. Rigaux – p.23/167

Page 24: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Publication de données avec XSLT

Publication de données avec XSLT - B. Amann et P. Rigaux – p.24/167

Page 25: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

XSLT : pour quoi faire

Séparer la gestion du contenu de la présentation

� Gestion du contenu = � décrire nosinformations, avec un vocabulaire XML

� Présentation = � mettre en forme nosdocuments pour une application particulière

XSLT permet d’écrire des programmes deconversions, très adaptés au traitement dedocuments XML

Publication de données avec XSLT - B. Amann et P. Rigaux – p.25/167

Page 26: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Application

Nous avons décrit notre cinéma avec notrepropre langage. XSLT va permettre de traduirece langage vers d’autres langages :

� HTML pour la présentation Web standard

� WML pour la présentation WAP

� SMIL pour une présentation multimédia

� XSL-FO pour la production de documentspapier

Publication de données avec XSLT - B. Amann et P. Rigaux – p.26/167

Page 27: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Version HTML

HTML revisité :

� Un document HTML est un document XML

� Le vocabulaire est fixé, ainsi que la syntaxe

� Chaque balise a une signification bien définie

HTML a été normalisé comme « dialecte » XML= � XHTML

Publication de données avec XSLT - B. Amann et P. Rigaux – p.27/167

Page 28: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Ce qu’on veut obtenir (démo)

<html><head><title>Film: Vertigo</title></head><body bgcolor="white">

<p><img SRC="Vertigo.png"><h1><i>Vertigo</i></h1>Drame, <i>Etats Unis</i>, 1958

</p><p>Mis en scène par <b>Alfred Hitchcock</b><h3>Résumé</h3>Scottie Ferguson,ancien inspecteur de police, est sujetau vertige depuis qu’il a vu mourir son

collègue...</p>

</body></html>

Publication de données avec XSLT - B. Amann et P. Rigaux – p.28/167

Page 29: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

HTML, sous forme d’arbre

"Film: "

...

<TITRE>

<TITRE> <GENRE> <PAYS>

Marquage HTML

Eléments XML

html

head

title

body

img

p

h1

i

i

Publication de données avec XSLT - B. Amann et P. Rigaux – p.29/167

Page 30: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Le rôle de XSLT

XSLT doit nous permettre :

� De prendre en entrée un document XMLsource

� De produire en sortie un autre arbre XML

� D’insérer dans le document en sortie desfragments du document source

Donc bien adapté à une transformation XML - �

HTML

Publication de données avec XSLT - B. Amann et P. Rigaux – p.30/167

Page 31: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

WML, autre dialecte de XML

� Document WML : marqué par la balise

wml

� Il est divisé en cartes, unité d’affichage sur lemobile ( �

card

� )

� Elements principaux :

� des balises simples de mise en forme( �

b

� , �

i

� )

� des ancres pour passer d’une carte à uneautre

Publication de données avec XSLT - B. Amann et P. Rigaux – p.31/167

Page 32: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Exemple d’une carte WML

<?xml version="1.0"encoding="iso-8859-1"?>

<wml><card><p>

<b>Alien

</b>, 1979, Ridley Scott

<br/>Près d&apos;un vaisseau spatialéchoué sur une lointaineplanète, ..</p>

</card></wml>

Publication de données avec XSLT - B. Amann et P. Rigaux – p.32/167

Page 33: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

SMIL

Langage pour la création de documentsmultimédia avec XML.

� On indique une fenêtre d’affichage avecdifférentes régions pour l’affichage descomposants.

� On place les composants dans lesdifférentes régions (positionnement spatiale).

� On synchronise l’affichage des composants(positionnement temporel).

Publication de données avec XSLT - B. Amann et P. Rigaux – p.33/167

Page 34: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Entête SMIL: Fenêtre et régions

reg_img_grand

reg_img_petit

600

pixe

ls

450 pixels

reg_texte

<head><meta name="title"

content="Version SMIL" /><meta name="author"

content=" c

2001 Sallesenligne.com" /><layout><root-layout width="450" height="600" /><region id="reg_img_grand"

width="400" height="300"left="25" top="25" fit="meet" />

<region id="reg_img_petit"width="200" height="125"left="125" top="75" fit="meet" />

<region id="reg_texte"width="350" height="325"left="50" top="250" z-index="1"/>

</layout></head>

Publication de données avec XSLT - B. Amann et P. Rigaux – p.34/167

Page 35: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Corps SMIL: Positionnement

reg_img_grand

reg_img_petit

600

pixe

ls

450 pixels

Scottie Ferguson, ancieninspecteur de police estsujet au vertige depuisqu’il a vu mourir son collègue. Elster, son ami

Vertigo

<body><seq>

<par endsync="first" id="page1" ><audio src="Sound.wav" /><a href="#page2" >

<img src="Vertigo.png"region="reg_img_grand" />

</a></par><par id="page2" dur="30s" ><text src="Vertigo-Resume.txt"

region="reg_texte" /><img src="Vertigo.png"

region="reg_img_petit" /></par>

</seq></body>

Démo !

Publication de données avec XSLT - B. Amann et P. Rigaux – p.35/167

Page 36: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Version XSL-FO

Version XSL-FO - B. Amann et P. Rigaux – p.36/167

Page 37: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

XSL-FO

Langage de description de documents avecXML.

� On indique les paramètres de mise en page(marges, taille des polices...)

� On place le contenu entre des balises deformatage

= � un processeur se charge de produire ledocument

Version XSL-FO - B. Amann et P. Rigaux – p.37/167

Page 38: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Transformation, et mise en forme

Document XSL-FO Document PDFDocument XML

Transformation Mise en Forme

Version XSL-FO - B. Amann et P. Rigaux – p.38/167

Page 39: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Exemples d’un document XSL-FO

<?xml version="1.0" encoding="iso-8859-1"?><fo:root>

<fo:layout-master-set><fo:simple-page-master master-name="page"

page-height="29.7cm" page-width="21cm"/></fo:layout-master-set>

<fo:page-sequence master-name=’simple’><fo:flow font-size="20pt">

<fo:block>Ceci est le premier paragraphe,

</fo:block></fo:flow>

</fo:page-sequence></fo:root>

Démo ! Le programme de l’Epée de Bois!

Version XSL-FO - B. Amann et P. Rigaux – p.39/167

Page 40: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Échanges et intégration de données

Échanges et intégration de données - B. Amann et P. Rigaux – p.40/167

Page 41: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Exemple : moteur de recherche

réponse

requête

www.sallesenligne.fr

www.cine-marseille.fr

www.epee-de-bois.fr

Échanges et intégration de données - B. Amann et P. Rigaux – p.41/167

Page 42: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Quelques idées

J’ai mes données

� Je leur ai défini une représentation

� Je leur applique des traitements (publicationou autre)

� Je peux les transmettre à quelqu’un d’autre(tout ou partie)

= � un service externe m’apporte une valeurajoutée

Échanges et intégration de données - B. Amann et P. Rigaux – p.42/167

Page 43: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Quel format ?

Mon problème :

� J’ai décrit mes données avec mon langageXML

� L’application attend des données dans sonlangage

Il faut :

� Décrire formellement les deux langages

� Faire une traduction de l’un à l’autre

Échanges et intégration de données - B. Amann et P. Rigaux – p.43/167

Page 44: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Les DTD

Document Type Definition

� Pour définir la structure d’une classe dedocuments (d’un langage)

� Exemple : un élément de type texte :

!ELEMENT TITRE ( #PCDATA )

� Exemple : un élément constitué d’une liste

!ELEMENT FILM (TITRE, CINEMA,VILLE, URL?, HEURE+)

Échanges et intégration de données - B. Amann et P. Rigaux – p.44/167

Page 45: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

La DTD du moteur de recherche

Un fichier auquel on peut faire référence dans undocument :

1 <!ELEMENT FILM ( TITRE, CINEMA, VILLE, URL?, HEURE+ ) >2 <!ELEMENT TITRE ( #PCDATA ) >3 <!ELEMENT CINEMA ( #PCDATA ) >4 <!ELEMENT VILLE ( #PCDATA ) >5 <!ELEMENT URL ( #PCDATA ) >6 <!ELEMENT HEURE ( #PCDATA ) >

Document valide : conforme à une DTD.

Échanges et intégration de données - B. Amann et P. Rigaux – p.45/167

Page 46: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Architecture ( Démo )

XSLT

XSLT

Clientweb

Clientweb

ClientwebFlux XML

DocumentsXML

DTD 1

DTD 2

Intégration

BD

Moteurde recherche

Recherche

SQL

Échanges et intégration de données - B. Amann et P. Rigaux – p.46/167

Page 47: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Le document intégrateur

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE MOTEUR [<!ENTITY EpeeDeBois

SYSTEM "http://epee-de-bois.fr/EDB.xml"><!ENTITY CineMarseille

SYSTEM "http://cine-marseille.fr/CM.xml">]><MOTEUR>

<CINEMA>&EpeeDeBois;

</CINEMA><CINEMA>

&CineMarseille;</CINEMA>

</MOTEUR>

Échanges et intégration de données - B. Amann et P. Rigaux – p.47/167

Page 48: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Gestion de l’information avec XML

TransformationXSLT Document XML

Document XML

application XMLapplication web application WAPapplication édition

formatéPage XHTML

Contenu Page WML

présentationtransform

ationcontenu

Echange/intégration

Données statiques Données dynamiques

Application

XSLT

XSLTXSLT XSLT

XSLT

Base de données

MessageXML

FichiersRésultat

Échanges et intégration de données - B. Amann et P. Rigaux – p.48/167

Page 49: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Récapitulons !

XML = format d’échange de données entreapplication

� Permet de définir des « langages » pourdécrire des données (« méta-langage »)

� De nombreux outils d’analyse, parsing,interrogation, ...

� Transformation d’un langage à un autre avecXSLT

= � Bien adapté au web.

Échanges et intégration de données - B. Amann et P. Rigaux – p.49/167

Page 50: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

XML = syntaxe + modèle

XML = syntaxe + modèle - B. Amann et P. Rigaux – p.50/167

Page 51: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Le World Wide Web Consortium (W3C)

� URL: http://www.w3.org

� 400 partenaires industriels, parmi lesquelsles plus grand comme Oracle, IBM, Compaq,Xerox, Microsoft

� Laboratoires de recherche: MIT pour lesÉtats Unis, INRIA pour l’Europe, universitéKeio (Japon) pour l’Asie

� Objectif: définir un modèle pour faciliterl’échange de données sur le Web

XML = syntaxe + modèle - B. Amann et P. Rigaux – p.51/167

Page 52: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Le langage de marquage XML

XML = eXtensible Markup Language

Recommendation W3C pour

� les documents Web (généralisation deHTML),

� mais aussi pour

� l’échange,

� l’intégration et

� l’interrogation des données sur le Web.

XML = syntaxe + modèle - B. Amann et P. Rigaux – p.52/167

Page 53: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

XML = Syntaxe

“ASCII du 21e siècle” :

� ASCII (ISO 646) et UNICODE/ISO 10646:encodage de caractères

� XML: encodage/linéarisation de données

XML premet de représenter des données avecune structure irrégulière, implicite et partielle

Les nouvelles techniques d’intégration etd’interrogation de données semi-structuréespeuvent être appliquées.

XML = syntaxe + modèle - B. Amann et P. Rigaux – p.53/167

Page 54: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Notion de balisage structurel

Principe clé de XML : séparer la structure logiquedes données de leur présentation.

Avantages (par rapport à HTML):

� indépendance entre les outils de navigation(browser) et les outils de gestion de données(e.g. BD)

� différentes présentations sont possibles pourle même document

� indexation et interrogation

XML = syntaxe + modèle - B. Amann et P. Rigaux – p.54/167

Page 55: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Forme sérialisée et forme arborescente

Il existe deux représentations d’un documentXML.

� Forme sérialisée : c’est la forme courante,où le contenu est marqué par des balises.

� Forme arborescente : elle met en évidencela structure du document.

Il est plus facile de raisonner sur la formearborescente pour concevoir des traitements

XML = syntaxe + modèle - B. Amann et P. Rigaux – p.55/167

Page 56: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Un document sous forme sérialisée

<?xml version="1.0" encoding="ISO-8859-1"?><CINEMA>

<NOM>Epée de Bois

</NOM><ADRESSE>

100, rue Mouffetard</ADRESSE>

<METRO>Censier-Daubenton

</METRO></CINEMA>

Cette représentation permet le stockage etl’échange de documents.

XML = syntaxe + modèle - B. Amann et P. Rigaux – p.56/167

Page 57: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

XML = modèle de données

Un arbre, constitué de nœuds typés (éléments,commentaires, etc)

CINEMA

NOM

Épée de bois

ADRESSE

100, rue Mouffetard

METRO

Censier-Daubenton

La structure des arbres XML est définie par leDocument Object Model (DOM).

XML = syntaxe + modèle - B. Amann et P. Rigaux – p.57/167

Page 58: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

En pratique

On utilise la forme sérialisée :

� pour stocker un document dans un fichier

� pour échanger des documents

La forme arborescente :

� permet de spécifier des manipulations dedonnées XML modèle de données

XML = syntaxe + modèle - B. Amann et P. Rigaux – p.58/167

Page 59: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Représentation sérialisée

Elle permet de marquer, par des balises, lastructure d’un document.

<?xml version="1.0" encoding="ISO-8859-1"?>

<!-- Commentaire --><A>Le texte de A

<B>Le texte de B</B><D attr1="1" attr2="azerty"><C/>

</D><![CDATA[2x < y]]>

</A>

XML = syntaxe + modèle - B. Amann et P. Rigaux – p.59/167

Page 60: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Passage à la représentation DOM

Le document sérialisé est analysé, et unereprésentation arborescente est créée :

� le nœud racine est de type Document

� les catégories syntaxiques (commentaires,balises, texte) se traduisent par différentstypes de nœuds (Comment, Element, Text)

� les nœuds constituent un arbre qui reflètel’imbrication des éléments dans la formesérialisée

XML = syntaxe + modèle - B. Amann et P. Rigaux – p.60/167

Page 61: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

La représentation DOM

Document-

Comment-

Commentaire

ElementA

Text-

Le texte de A

ElementB

Text-

Le texte de B

ElementD

Attrattr1

1

Attrattr2azerty

ElementC

CDataSection-

2x � y

XML = syntaxe + modèle - B. Amann et P. Rigaux – p.61/167

Page 62: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Présentation de la syntaxe XML

Un ensemble de catégories syntaxiques :

� les éléments (et leurs attributs)

� les commentaires

� les instructions de traitement

� les sections de texte

� les sections littérales

Ainsi que quelques règles sur la structure d’undocument

XML = syntaxe + modèle - B. Amann et P. Rigaux – p.62/167

Page 63: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

La déclaration XML

Tout document XML peut être précédé par unedéclaration :<?xml version="1.0" encoding="ISO-8859-1"?>

� l’attribut encoding indique le jeu decaractères utilisé dans le document

� l’attribut optionnel standalone indique si ledocument est composé de plusieurs entités.

XML = syntaxe + modèle - B. Amann et P. Rigaux – p.63/167

Page 64: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Déclaration de type

On peut indiquer qu’un document est conforme àune DTD, et déclarer des entités.<!DOCTYPE nom SYSTEM "sourceExt" [decLoc]>

� nom est le type de l’élément racine

� sourceExt est un source extérieurecontenant la DTD

� decLoc sont des déclarations locales (pourles entités principalement)

XML = syntaxe + modèle - B. Amann et P. Rigaux – p.64/167

Page 65: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Entités et références à des entités

Les entités servent à factoriser des parties dudocument.

<?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE A SYSTEM "minimal.dtd" [

<!ENTITY monTexte "texte simple"><!ENTITY maSignature SYSTEM "signature.xml">

]><A>

Du &monTexte;, sans caractères réservés:ni &lt; ni &gt; ni &amp; ni &apos; ni &quot;

&maSignature;</A>

XML = syntaxe + modèle - B. Amann et P. Rigaux – p.65/167

Page 66: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Entités caractères

Déclaration entité Référence Car.<!ENTITY lt "&#60;"> &lt; <

<!ENTITY gt "&#62;"> &gt; >

<!ENTITY amp "&#38;"> &amp; &

<!ENTITY apos "&#39;"> &apos; ’

<!ENTITY quot "&#34;"> &quot "

Table 1:

XML = syntaxe + modèle - B. Amann et P. Rigaux – p.66/167

Page 67: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Commentaires et instructions de traitement

� Les commentaires : à utiliser avecparcimonie :<!-- Ceci est un commentaire -->

� Instructions de traitement : lié au systèmequi traite le document :<?xml-stylesheet href="prog.xslt"type="text/xslt">

XML = syntaxe + modèle - B. Amann et P. Rigaux – p.67/167

Page 68: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Éléments

Dans la forme sérialisée :

� C’est une balise ouvrante avec un nom,puis un contenu, puis une balise fermante

Dans la forme arborescente

� C’est un nœud avec un nom

� Le contenu est un arbre

XML = syntaxe + modèle - B. Amann et P. Rigaux – p.68/167

Page 69: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Exemple : un élément avec contenu

<?xml version="1.0" encoding="ISO-8859-1"?>

<A>Le texte de A<B>Le texte de B</B>

</A>

ElementA

Text-

Le texte de A

ElementB

Text-

Le texte de B

Text-

XML = syntaxe + modèle - B. Amann et P. Rigaux – p.69/167

Page 70: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Quelques remarques sur les éléments

� Un nom d’élément ne contient pas de blanc,ni de caractère accentué

� Les majuscules sont distinguées desminuscules

� Il existe une forme abrégée pour leséléments sans contenu : <C></C> peuts’écrire <C/>.

� Tout document comprend un et un seulélément racine

XML = syntaxe + modèle - B. Amann et P. Rigaux – p.70/167

Page 71: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Attributs

Les attributs constituent un autre moyen dereprésenter de l’information.<A att1=’1’ att2=’2’>

� l’ordre des attributs n’est pas important

� il doit toujours y avoir une valeur, encadréepar des guillemets (différent de HTML)

� il ne peut pas y avoir deux attributs avec lemême nom dans un élément.

XML = syntaxe + modèle - B. Amann et P. Rigaux – p.71/167

Page 72: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Attributs : exemples

� <A att1=’1’ att2=’2’> est équivalent à<A att2=’2’ att1=’1’>

ElementAAttr

att11

Attratt2

2

� <A att=a> n’est pas bien formé : pasd’apostrophe

� <A att1=’1’ att1=’2’/> : interdit

� <A att1=’1’/> <B att1=’2’/> :autorisé (deux éléments différents)

XML = syntaxe + modèle - B. Amann et P. Rigaux – p.72/167

Page 73: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Les sections littérales

À priori, on n’a pas le droit de placer dans lecontenu d’un document XML des caractèrescomme ’<’, ’>’, ou ’&’.

<?xml version=’1.0’?><PROGRAMME>if ((i < 5) && (j > 6)) printf("error");</PROGRAMME>

est incorrecte!

XML = syntaxe + modèle - B. Amann et P. Rigaux – p.73/167

Page 74: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Solution : sections CDATA

Elles permettent d’inclure du texte qui n’est pasanalysé par le parseur :<?xml version=’1.0’?><PROGRAMME><![CDATA[if ((i < 5) && (j > 6)) printf("error"); ]]></PROGRAMME>

CDATASection-

if ((i < 5) && (j > 6)) printf("error");

XML = syntaxe + modèle - B. Amann et P. Rigaux – p.74/167

Page 75: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Résumé : structure d’un document XML

Un document XML comprend trois parties :

� le prologue, avec la déclaration XML, laDTD, des commentaires, des instructions detraitements (optionnels)

� un élément racine avec son contenu

� un épilogue avec des commentaires, ou desinstructions de traitements (optionnels)

Le contenu du document proprement dit est le

contenu de l’élément racine.

XML = syntaxe + modèle - B. Amann et P. Rigaux – p.75/167

Page 76: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

XPath

Sélectionner des Fragments XML

XPathSélectionner des Fragments XML - B. Amann et P. Rigaux – p.76/167

Page 77: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Exemple: Document XML

Document XML:/

FILM

TITRE

Vertigo

AUTEUR

Hitchcock

ANNEE

1958

RESUME

Scotty...

XPathSélectionner des Fragments XML - B. Amann et P. Rigaux – p.77/167

Page 78: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Exemple: Règle de transformation

/

FILM

TITRE

Vertigo

AUTEUR

Hitchcock

ANNEE

1958

RESUME

Scotty...

p

h1

i

*

i

*

p

*

h3

Résumé: *

XPathSélectionner des Fragments XML - B. Amann et P. Rigaux – p.78/167

Page 79: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Exemple: Résultat

Fragment HTML:p

h1

i

Vertigo

i

1958

p

Hitchcock

h3

Résumé: Scotty...

XPathSélectionner des Fragments XML - B. Amann et P. Rigaux – p.79/167

Page 80: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Référencer des fragments XML avec XPATH

Pour pouvoir transformer un document XML ilfaut pouvoir extraire des fragments (nœuds) XMLd’un document XPath :

� XPath est fondé sur une représentationarborescente (DOM) du document XML

� Objectif : référencer nœuds (éléments,attributs, commentaires, ...) dans undocument XML

XPathSélectionner des Fragments XML - B. Amann et P. Rigaux – p.80/167

Page 81: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

XPath: Exemples de chemins XPath

Document XML:

/

FILM

TITRE

Vertigo

AUTEUR

Hitchcock

ANNEE

1958

RESUME

Scotty...

/FILM

/FILM/RESUME/FILM/TITRE

/FILM/RESUME/text()

XPathSélectionner des Fragments XML - B. Amann et P. Rigaux – p.81/167

Page 82: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

XPath: Utilisation

� Le langage permet de désigner un ouplusieurs nœuds dans un document XML, àl’aide d’expressions de chemin.

� XPath est utilisé par

� XSLT pour sélectionner des règles detransformation

� XML Schéma pour créer des clés etréférences

� XLink pour créer des liens entredocuments/fragments XML

XPathSélectionner des Fragments XML - B. Amann et P. Rigaux – p.82/167

Page 83: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Les arbres XPath

Un typage simplifié par rapport à celui de DOM

� Document

� Element

� Text

� Attribut

� ProcessingInstruction

� Comment

pas d’entité, pas de section littérale

XPathSélectionner des Fragments XML - B. Amann et P. Rigaux – p.83/167

Page 84: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Exemple : l’arbre DOM...

Document-

ElementEXEMPLE

Text-

Section littérale avec

SectionCDATA-

des ’&’, des ’ � ’ des ’ � ’

Text-

et un text

XPathSélectionner des Fragments XML - B. Amann et P. Rigaux – p.84/167

Page 85: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Puis l’arbre XPath...

Document-

ElementEXEMPLE

Text-

Section littérale avec des ’&’, des ’ � ’ des ’ � ’ et un texte

XPathSélectionner des Fragments XML - B. Amann et P. Rigaux – p.85/167

Page 86: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Expressions XPath

Une expression XPath :

� s’évalue en fonction d’un nœud contexte

� désigne un ou plusieurs chemins dansl’arbre à partir du nœud contexte

� a pour résultat

� un ensemble de nœuds

� ou une valeur, numérique, booléenne oualphanumérique

XPathSélectionner des Fragments XML - B. Amann et P. Rigaux – p.86/167

Page 87: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Chemins XPath

Un chemin XPath est une suite d’étapes :[/]étape �/étape �/.../étape �

Deux variantes : Un chemin peut être

� absolu : /FILM/RESUMELe nœud contexte est alors la racine dudocument.

� ou relatif : RESUME/text()Le nœud contexte est un nœud dans ledocument (pas forcément la racine).

XPathSélectionner des Fragments XML - B. Amann et P. Rigaux – p.87/167

Page 88: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Étapes XPath

Une étape : trois composants

[axe::]filtre[prédicat1][prédicat2] � � �

� l’axe : sens de parcours des nœuds (pardéfaut: child).

� le filtre : type des nœuds qui seront retenus

� le(s) prédicat(s) que doivent satisfaire lesnœuds retenus

XPathSélectionner des Fragments XML - B. Amann et P. Rigaux – p.88/167

Page 89: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Les axes XPath

Un axe XPath recouvre les deux notionssuivantes :

� un sous-ensemble des nœuds de l’arbrerelatif au nœud contexte ;

� l’ordre de parcours de ces nœuds à partir dunœud contexte.

XPathSélectionner des Fragments XML - B. Amann et P. Rigaux – p.89/167

Page 90: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Exemple de référence

Document-

InstructionJavains1

ElementA

ElementB

Attratt1

a1

ElementD

Text-

Texte1

ElementD

Text-

Texte2

ElementB

Attratt1

a2

ElementD

Text-

Texte3

ElementC

Attratt2

a3

Attratt3

15

Comment-

CommFin

XPathSélectionner des Fragments XML - B. Amann et P. Rigaux – p.90/167

Page 91: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Exemple : le nœud contexte

Document-

InstructionJavains1

ElementA

ElementB

Attratt1

a1

ElementD

Text-

Texte1

ElementD

Text-

Texte2

ElementB

Attratt1

a2

ElementD

Text-

Texte3

ElementC

Attratt2

a3

Attratt3

15

Comment-

CommFin

XPathSélectionner des Fragments XML - B. Amann et P. Rigaux – p.91/167

Page 92: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

child::D ou D

Document-

InstructionJavains1

ElementA

ElementB

Attratt1

a1

ElementD

Text-

Texte1

ElementD

Text-

Texte2

Nœud contexte

Attratt1

a2

ElementD

Text-

Texte3

ElementC

Attratt2

a3

Attratt3

15

Comment-

CommFin

XPathSélectionner des Fragments XML - B. Amann et P. Rigaux – p.92/167

Page 93: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

attribute::att1 ou @att1

Document-

InstructionJavains1

ElementA

ElementB

Attratt1

a1

ElementD

Text-

Texte1

ElementD

Text-

Texte2

Nœud contexte

Attratt1

a2

ElementD

Text-

Texte3

ElementC

Attratt2

a3

Attratt3

15

Comment-

CommFin

XPathSélectionner des Fragments XML - B. Amann et P. Rigaux – p.93/167

Page 94: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

parent::A

Document-

InstructionJavains1

ElementA

ElementB

Attratt1

a1

ElementD

Text-

Texte1

ElementD

Text-

Texte2

Nœud contexte

Attratt1

a2

ElementD

Text-

Texte3

ElementC

Attratt2

a3

Attratt3

15

Comment-

CommFin

XPathSélectionner des Fragments XML - B. Amann et P. Rigaux – p.94/167

Page 95: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Notation abrégée de parent::A

La notation abrégée .. désigne le père dunœud contexte, quel que soit son type.Équivalent à :

parent:node()

node() est un filtre qui désigne tous les types

de nœuds (sauf les attributs)

XPathSélectionner des Fragments XML - B. Amann et P. Rigaux – p.95/167

Page 96: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Axe descendant

Document-

InstructionJavains1

ElementA

ElementB

Attratt1

a1

ElementD

Text-

Texte1

ElementD

Text-

Texte2

Nœud contexte

Attratt1

a2

ElementD

Text-

Texte3

ElementC

Attratt2

a3

Attratt3

15

Comment-

CommFin

XPathSélectionner des Fragments XML - B. Amann et P. Rigaux – p.96/167

Page 97: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Axe ancestor

Document-

InstructionJavains1

ElementA

ElementB

Attratt1

a1

ElementD

Text-

Texte1

ElementD

Text-

Texte2

Nœud contexte

Attratt1

a2

ElementD

Text-

Texte3

ElementC

Attratt2

a3

Attratt3

15

Comment-

CommFin

XPathSélectionner des Fragments XML - B. Amann et P. Rigaux – p.97/167

Page 98: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Axe self

� il désigne le nœud contexte lui-même. Doitêtre complété par un filtre. Exemples :

� notre nœud contexte : self::B

� mais self::A renvoie un ensemble vide

� Pour prendre le nœud quel que soit sontype :

self::node()

� Notation abrégée : « . »

XPathSélectionner des Fragments XML - B. Amann et P. Rigaux – p.98/167

Page 99: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Axe preceding-sibling

Document-

InstructionJavains1

ElementA

ElementB

Attratt1

a1

ElementD

Text-

Texte1

ElementD

Text-

Texte2

Nœud contexte

Attratt1

a2

ElementD

Text-

Texte3

ElementC

Attratt2

a3

Attratt3

15

Comment-

CommFin

XPathSélectionner des Fragments XML - B. Amann et P. Rigaux – p.99/167

Page 100: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Axe following

Document-

InstructionJavains1

ElementA

ElementB

Attratt1

a1

ElementD

Text-

Texte1

ElementD

Text-

Texte2

Nœud contexte

Attratt1

a2

ElementD

Text-

Texte3

ElementC

Attratt2

a3

Attratt3

15

Comment-

CommFin

XPathSélectionner des Fragments XML - B. Amann et P. Rigaux – p.100/167

Page 101: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Axes: Résumé

� nœuds enfants et descendants: child,descendant, descendant-or-self

� nœud parent et ancêtres: parent,ancestor

� frères: preceding-sibling,following-sibling

� nœuds précédents et suivants:preceding, following

� nœud même: self

XPathSélectionner des Fragments XML - B. Amann et P. Rigaux – p.101/167

Page 102: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Filtres

Deux manières de filtrer les nœuds :

� par leur nom :

� possible pour les types de nœuds qui ontun nom : Element,ProcessingInstruction et Attr

� par leur type DOM.

XPathSélectionner des Fragments XML - B. Amann et P. Rigaux – p.102/167

Page 103: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Chemin absolu : /A/B/D

Document-

InstructionJavains1

ElementA

ElementB

Attratt1

a1

ElementD

Text-

Texte1

ElementD

Text-

Texte2

ElementB

Attratt1

a2

ElementD

Text-

Texte3

ElementC

Attratt2

a3

Attratt3

15

Comment-

CommFin

XPathSélectionner des Fragments XML - B. Amann et P. Rigaux – p.103/167

Page 104: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

/descendant::node()/@att2

Document-

InstructionJavains1

ElementA

ElementB

Attratt1

a1

ElementD

Text-

Texte1

ElementD

Text-

Texte2

ElementB

Attratt1

a2

ElementD

Text-

Texte3

ElementC

Attratt2

a3

Attratt3

15

Comment-

CommFin

XPathSélectionner des Fragments XML - B. Amann et P. Rigaux – p.104/167

Page 105: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Nom générique : /A/*

Document-

InstructionJavains1

ElementA

ElementB

Attratt1

a1

ElementD

Text-

Texte1

ElementD

Text-

Texte2

ElementB

Attratt1

a2

ElementD

Text-

Texte3

ElementC

Attratt2

a3

Attratt3

15

Comment-

CommFin

XPathSélectionner des Fragments XML - B. Amann et P. Rigaux – p.105/167

Page 106: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Filtrage sur le type de nœud

� text() : Nœuds de type Text

� comment() : Nœuds de type CommentExemple : /comment()

� processing-instruction() : Nœuds detype ProcessingInstructionExemple : /processing-instruction(),ou/processing-instruction(’java’)

� node() : Tous les types de nœud

XPathSélectionner des Fragments XML - B. Amann et P. Rigaux – p.106/167

Page 107: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

/A/B//text()

Document-

InstructionJavains1

ElementA

ElementB

Attratt1

a1

ElementD

Text-

Texte1

ElementD

Text-

Texte2

ElementB

Attratt1

a2

ElementD

Text-

Texte3

ElementC

Attratt2

a3

Attratt3

15

Comment-

CommFin

XPathSélectionner des Fragments XML - B. Amann et P. Rigaux – p.107/167

Page 108: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

/comment()

Document-

InstructionJavains1

ElementA

ElementB

Attratt1

a1

ElementD

Text-

Texte1

ElementD

Text-

Texte2

ElementB

Attratt1

a2

ElementD

Text-

Texte3

ElementC

Attratt2

a3

Attratt3

15

Comment-

CommFin

XPathSélectionner des Fragments XML - B. Amann et P. Rigaux – p.108/167

Page 109: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Prédicats

� Prédicat : expression booléenne constituéed’un ou plusieurs tests, composés avec lesconnecteurs logiques habituels and et or

� Test :

� toute expression XPath, dont le résultatest convertie en booléen;

� une comparaison, un appel de fonction.

il faut connaître les règles de conversion

XPathSélectionner des Fragments XML - B. Amann et P. Rigaux – p.109/167

Page 110: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Quelques exemples

/A/B[@att1] : Les nœuds /A/B qui ont unattribut @att1

/A/B[@att1=’a1’] : Les nœuds /A/B qui ontun attribut @att1 valant ’a1’

/A/B/descendant::text()[position()=1] :Le premier nœud de type Text descendantd’un /A/B.

/A/B/descendant::text()[1] : idem

XPathSélectionner des Fragments XML - B. Amann et P. Rigaux – p.110/167

Page 111: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Pour bien comprendre

Dans l’expression /A/B[@att1] :

� On s’intéresse aux nœuds de type B fils del’élément racine A.

� Parmi ces nœuds on ne prend que ceuxpour lesquels le prédicat [@att1] s’évalueà true

� Cette expression s’évalue avec pour nœudcontexte un élément B

� [@att1] vaut true ssi @att1 renvoie unensemble de nœuds non vide

XPathSélectionner des Fragments XML - B. Amann et P. Rigaux – p.111/167

Page 112: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Contexte d’évaluation

Une étape s’évalue en tenant compte d’uncontexte constitué de

� un nœud contexte, position initiale duchemin ;

� ce nœud fait lui-même partie d’un ensembleobtenu par évaluation de l’étape précédente

� on connaît la taille de cet ensemble(fonction last())

� on connaît la position du nœud contextedans cet ensemble (fonction position())

XPathSélectionner des Fragments XML - B. Amann et P. Rigaux – p.112/167

Page 113: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

/A/B/descendant::text()[1]

Document-

InstructionJavains1

ElementA

ElementB

Attratt1

a1

ElementD

Text-

Texte1

ElementD

Text-

Texte2

ElementB

Attratt1

a2

ElementD

Text-

Texte3

ElementC

Attratt2

a3

Attratt3

15

Comment-

CommFin

XPathSélectionner des Fragments XML - B. Amann et P. Rigaux – p.113/167

Page 114: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Typage avec XPath

On peut effectuer des comparaisons, desopérations. Cela implique un typage et desconversions de type.Types XPath :

� les numériques

� les chaînes de caractères

� les booléens (true et false)

� enfin les ensembles de nœuds

XPathSélectionner des Fragments XML - B. Amann et P. Rigaux – p.114/167

Page 115: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Numériques

Notation décimale habituelle

� Comparaisons habituelles (<, >, !=)

� Opérations : +, -, *, div, mod

� La fonction number () permet de tenter uneconversion

� Si la conversion échoue on obtient NaN (Nota Number ). À éviter...

Ex : //node()[number(@att1) mod 2=1]

XPathSélectionner des Fragments XML - B. Amann et P. Rigaux – p.115/167

Page 116: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Conversions

Deux conversions sont toujours possibles.

� Vers une chaîne de caractères.

� utile pour la production de texte en XSLT(balise xsl:value-of)

� Vers un booléen

� utile pour les tests effectués dans XSLT(xsl:if, xsl:when)

XPathSélectionner des Fragments XML - B. Amann et P. Rigaux – p.116/167

Page 117: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Conversions booléennes

� Pour les numériques : 0 ou NaN sontfalse, tout le reste est true

� Pour les chaînes : une chaîne vide estfalse, tout le reste est true

� Pour les ensembles de nœuds : unensemble vide est false, tout le reste esttrue

Comparaisons : des règles de conversionétranges...

XPathSélectionner des Fragments XML - B. Amann et P. Rigaux – p.117/167

Page 118: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Fonctions XPath

Quelques fonctions utiles dans les prédicats :

� concat(chaîne1, chaîne2, ...) pourconcaténer des chaînes

� contains(chaîne1, chaîne2) teste si chaîne1contient chaîne2

� count (expression) renvoie le nombre denœuds désignés par expression

� name() renvoie le nom du nœud contexte

� not(expression) : négation

XPathSélectionner des Fragments XML - B. Amann et P. Rigaux – p.118/167

Page 119: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Prédicats: Exemples

Axes « d’avancement » :

� child::*[3]: le 3e enfant

� child::*[position()=3]: idem

� child::*[last()]: le dernier enfant

� descendant::*[last()]: le dernierdescendant

La position d’un nœud dépend de l’axe choisi.

XPathSélectionner des Fragments XML - B. Amann et P. Rigaux – p.119/167

Page 120: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Prédicats: Axes inverses

Axes « inverses » :

� ancestor::*[1]: le premier ancêtre dunœud contexte (dernier dans l’ordre dudocument).

� preceding-sibling::*[last()]: ledernier frère qui précède le nœud contexte(premier dans l’ordre du document).

XPathSélectionner des Fragments XML - B. Amann et P. Rigaux – p.120/167

Page 121: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Prédicats: Exemples

Test du nombre d’occurrences :

� CINEMA[count(SEANCE) > 1]: cinémasavec au moins 2 séances

� FILM[count(ACTEUR) = 0]: films sansacteur

� FILM[not(ACTEUR)]: films sans acteur

XPathSélectionner des Fragments XML - B. Amann et P. Rigaux – p.121/167

Page 122: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Prédicats: Sélection par valeur

Sélection par valeur:

� FILM[not(ACTEUR[NOM=’Willis’])]:films sans Bruce Willis

� FILM[ACTEUR/NOM=’Willis’]: filmsavec Bruce Willis

� FILM[ACTEUR[NOM=’Willis’]]: idem

XPathSélectionner des Fragments XML - B. Amann et P. Rigaux – p.122/167

Page 123: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Prédicats: Exemples

Test sur la structure : chemins imbriqués avec connecteurslogiques (qualifiers)

� ACTEUR[NOM and DATENAISSANCE] ouACTEUR[NOM][DATENAISSANCE]: les acteurs avecun nom et une date de naissance

� FILM[@TITRE = ’Brazil’ and ACTEUR/NOM =

’De Niro’]: le film Brazil avec l’acteur De Niro

� FILM[@TITRE = ’Brazil’][ACTEUR/NOM =

’De Niro’]: idem

XPathSélectionner des Fragments XML - B. Amann et P. Rigaux – p.123/167

Page 124: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Remarque sur les prédicats

Attention: Les deux premières expressions sontequivalentes, mais pas la troisième! Pourquoi?

� FILM[ACTEUR and position()=1]

� FILM[position()=1][ACTEUR]

� FILM[ACTEUR][position()=1]

XPathSélectionner des Fragments XML - B. Amann et P. Rigaux – p.124/167

Page 125: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Un cas épineux : les espaces

Un document XML avec espaces

<?xml version="1.0"encoding="ISO-8859-1"?>

<?xml-stylesheet href="ex.xsl"type="text/xsl"?>

<!-- commentaire -->

<!DOCTYPE A SYSTEM "ex.dtd" ><A><B at1=’ val1 ’

at2=’ avec blanc ’/><C> </C><D> texte </D>

</A>

XPathSélectionner des Fragments XML - B. Amann et P. Rigaux – p.125/167

Page 126: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Où sont les espaces ?

Un peu partout !

� avant la balise ouvrante de l’élément racine ;

� à l’intérieur d’une balise ;

� à l’intérieur d’un élément ;

� à l’intérieur de la valeur d’un attribut ;

� entre deux balises ;

� entre deux attributs.

Tous n’ont pas la même importance

XPathSélectionner des Fragments XML - B. Amann et P. Rigaux – p.126/167

Page 127: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Les espaces dans XPath

� Les espaces du prologue ou de l’épiloguesont supprimés.

� Les espaces consécutifs sont réduits à unseul.

� Les fins de lignes sont représentées par lecaractère #xA.

� En général, les espaces en début et find’attributs sont supprimées.

XPathSélectionner des Fragments XML - B. Amann et P. Rigaux – p.127/167

Page 128: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

L’arbre XPath du document

Document-

ElementA

Text-

#xA#20

ElementB

Attrat1

#20val1#20

Attrat2

#20avec#20blanc#20

Text-

#xA#20

ElementC

Text-

#20

Text-

#xA#20

ElementD

Text-

#20texte#20

Text-

#xA#20

XPathSélectionner des Fragments XML - B. Amann et P. Rigaux – p.128/167

Page 129: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Instruction xsl:strip-space

Document-

ElementA

ElementB

Attrat1

#20val1#20

Attrat2

#20avec#20blanc#20

ElementC

ElementD

Text-

#20texte#20

XPathSélectionner des Fragments XML - B. Amann et P. Rigaux – p.129/167

Page 130: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

XPath : Résumé

XPath est un langage pour extraire des noeudsdans un arbre XML :

� On navigue dans l’arbre grâce à des axes denavigation.

� Un chemin de navigation est une séquenced’étapes.

� Dans chaque étape on choisi un axe, un filtreet éventuellement des prédicats.

� Le résultat d’une étape (d’une séquenced’étapes) est un séquence de noeuds.

XPathSélectionner des Fragments XML - B. Amann et P. Rigaux – p.130/167

Page 131: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Introduction à XSLT

Introduction à XSLT - B. Amann et P. Rigaux – p.131/167

Page 132: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Sommaire

Une introduction à XSLT, destinée à comprendreles mécanismes du langage.

� Règles XSLT

� Désignation de fragments XML

� Appels de règles

� Application : XML - � HTML et XML - � WML

� Passage de paramètres

Introduction à XSLT - B. Amann et P. Rigaux – p.132/167

Page 133: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Qu’est-ce qu’on peut faire avec XSLT?

Transformer un document XML en

� un ou plusieurs documents XML, HTML,WML, SMIL

� document papier: PDF (XSL-FO), LaTeX

� texte simple

Introduction à XSLT - B. Amann et P. Rigaux – p.133/167

Page 134: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Fonctions d’une Feuille de Style XSLT

Fonction de Base: Langage de règles detransformation de documents/arbres XML:

� extraction de données

� génération de texte

� suppression de contenu (noeuds)

� déplacer contenu (noeuds)

� dupliquer contenu (noeuds)

� trier

Introduction à XSLT - B. Amann et P. Rigaux – p.134/167

Page 135: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Exemple

/

FILM

TITRE

Vertigo

AUTEUR

Hitchcock

ANNEE

1958

RESUME

Scotty...

p

h1

i

*

i

*

p

*

h3

Résumé: *

Introduction à XSLT - B. Amann et P. Rigaux – p.135/167

Page 136: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Exemple: Règle de transformation

1 <xsl:template match="FILM">2 <p>3 <h1>4 <i>5 <xsl:value-of select="TITRE"/>6 </i>7 </p>8 <i>9 <xsl:value-of select="ANNEE"/>

10 </i>11 <p>12 <xsl:value-of select="AUTEUR"/>13 </p>14 <h3>Résumé:15 <xsl:value-of select="RESUME"/>16 </h3>17 </p>18 </xsl:template>

Introduction à XSLT - B. Amann et P. Rigaux – p.136/167

Page 137: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Extraction de données

� Exemple : recherche du titre pour le nœudFILM :

xsl:value-of select="TITRE"/

� Plus généralement : on donne un chemind’accès XPath à un nœud à partir du nœudcourant (noeud contexte).

Introduction à XSLT - B. Amann et P. Rigaux – p.137/167

Page 138: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Génération de texte

Produire une phrase quand on rencontre unnœud FILM :

<xsl:template match="FILM">Ceci est le texte produit parapplication de cette règle.

</xsl:template>

Introduction à XSLT - B. Amann et P. Rigaux – p.138/167

Page 139: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Génération d’un arbre XML

Produire un document/fragment/arbre XMLquand on rencontre un nœud FILM :

<xsl:template match="FILM"><body>

<p>Un paragraphe</p></body>

</xsl:template>

Introduction à XSLT - B. Amann et P. Rigaux – p.139/167

Page 140: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Génération avec extraction

Produire un document/fragment/arbre XMLquand on rencontre un nœud FILM :

1 <xsl:template match="FILM">2 <body>3 <p>4 <xsl:text>Titre: </xsl:text>5 <xsl:value-of select="TITRE"/>6 </p>7 </body>8 </xsl:template>

Introduction à XSLT - B. Amann et P. Rigaux – p.140/167

Page 141: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Structure de base : les règles

Règle = template : élément de base pourproduire le résultat

� une règle s’applique dans le contexte d’unnœud de l’arbre

� l’application de la règle produit un fragmentdu résultat.

Programme XSLT = ensemble de règles pourconstruire un résultat

Introduction à XSLT - B. Amann et P. Rigaux – p.141/167

Page 142: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Un exemple

1 <xsl:template match="FILM">2 <p>3 <h1>4 <i><xsl:value-of select="TITRE"/></i>5 </h1>6 <i><xsl:value-of select="ANNEE"/></i>7 <p><xsl:value-of select="AUTEUR"/></p>8 <h3>9 Résumé: <xsl:value-of select="RESUME"/>

10 </h3>11 </p>12 </xsl:template>

� Motif de sélection : match="FILM"

� Corps de la règle = fragment d’arbre àproduire

Introduction à XSLT - B. Amann et P. Rigaux – p.142/167

Page 143: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Illustration

FILM

TITRE

Vertigo

AUTEUR

Hitchcock

ANNEE

1958

GENRE

Drame

PAYS

USA

RESUME

Scotty...

select="TITRE"

Contexte d’application de la règle XSLT

Introduction à XSLT - B. Amann et P. Rigaux – p.143/167

Page 144: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Une règle complète

1 <xsl:template match="FILM">2 <html>3 <head>4 <title>Film:5 <xsl:value-of select="TITRE"/>6 </title>7 </head>8 <body>9 Le genre du film, c’est

10 <b><xsl:value-of select="GENRE"/></b>11 </body>12 </html>13 </xsl:template>

Introduction à XSLT - B. Amann et P. Rigaux – p.144/167

Page 145: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Le résultat

On obtient :

1 <html>2 <head>3 <title>Film:4 Vertigo5 </title>6 </head>7 <body>8 Le genre du film, c’est9 <b>Suspense</b>

10 </body>11 </html>

Introduction à XSLT - B. Amann et P. Rigaux – p.145/167

Page 146: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Chemins complexes

Dans l’exemple précédent, on accédait aux filsd’un nœud.En fait on peut :

� Accéder à tous les descendants

� Accéder aux parents, aux frères, auxneveux...

� Accéder aux attributs

� Effectuer des boucles

Le langage d’expression de chemins : XPath.

Introduction à XSLT - B. Amann et P. Rigaux – p.146/167

Page 147: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Exemple: Document XML

1 <?xml version="1.0" encoding="ISO-8859-1"?>23 <?xml-stylesheet href="Salle.xsl" type="text/xsl"?>4 <?cocoon-process type="xslt"?>5 <SALLE NO=’1’ PLACES=’320’>6 <FILM>7 <TITRE>Alien</TITRE>8 <AUTEUR>Ridley Scott</AUTEUR>9 <ANNEE>1979</ANNEE>

10 <GENRE>Science-fiction</GENRE>11 <PAYS>Etats Unis</PAYS>12 <RESUME>Près d’un vaisseau spatial échoué sur une lointaine13 planète, des Terriens en mission découvrent de bien étranges14 "oeufs". Ils en ramènent un à bord, ignorant qu’ils viennent15 d’introduire parmi eux un huitième passager particulièrement16 féroce et meurtrier.17 </RESUME>18 </FILM>19 <REMARQUE>Réservation conseillée</REMARQUE>20 <SEANCES>21 <SEANCE>15:00</SEANCE>22 <SEANCE>18:00</SEANCE>23 <SEANCE>21:00</SEANCE>24 </SEANCES>25 </SALLE>

Introduction à XSLT - B. Amann et P. Rigaux – p.147/167

Page 148: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Exemple: Traduction de Salle

1 <xsl:template match="SALLE">2 <h2>Salle No3 <xsl:value-of select="@NO"/></h2>4 Film: <xsl:value-of select="FILM/TITRE"/>5 de <xsl:value-of select="FILM/AUTEUR"/>6 <ol> <xsl:for-each select="SEANCES/SEANCE">7 <li><xsl:value-of select="."/></li>8 </xsl:for-each>9 </ol>

10 </xsl:template>

Introduction à XSLT - B. Amann et P. Rigaux – p.148/167

Page 149: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Le résultat

Appliqué à Salle1.xml :

1 <h2>Salle No 1 </h2>2 Film: Alien3 de Ridley Scott4 <ol>5 <li> 15:00</li>6 <li> 18:00</li>7 <li> 21:00</li>8 </ol>

NB : c’est un fragment HTML, à intégrer dans undocument complet.

Introduction à XSLT - B. Amann et P. Rigaux – p.149/167

Page 150: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Salles et séances

15:00 18:00 21:00

Réservationconseilléevaisseau spatial...

PLACES=320chemin "FILM/TITRE"

"REMARQUE"

chemin

chemin

SEANCES/SEANCE

bouclefor-each

chemin "@NO"Contexte d’application de la règle

AUTEUR ANNEE GENRE PAYS RESUME

FILM

SALLE

SEANCES

SEANCE SEANCE SEANCE

REMARQUE

USAAlien Scott Science-Fiction 1979 Près d’un

TITRE

NO=2

Introduction à XSLT - B. Amann et P. Rigaux – p.150/167

Page 151: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Chemins complexes

� Descendants : le titre du film est désignépar select="FILM/TITRE" ;

� Attributs : le numéro de la salle est désignépar select="@NO" ;

� Boucles : avec xsl:for-each surl’ensemble des séances désignées parselect="SEANCES/SEANCE" ;

� L’élément contexte : désigné par le symbole’.’, comme dans select=".".

Introduction à XSLT - B. Amann et P. Rigaux – p.151/167

Page 152: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Appels de règles

En général on produit un résultat en combinantplusieurs règles :

� La règle initiale s’applique à la racine dudocument traité (’/’)

� On produit alors le cadre du documentHTML

� On appelle d’autres règles pour compléter lacréation du résultat

Introduction à XSLT - B. Amann et P. Rigaux – p.152/167

Page 153: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Exemple : L’Épée de bois

« Cadre » HTML, puis appel de la règle CINEMA

1 <xsl:template match="/">2 <html>3 <head><title>Programme de4 <xsl:value-of select="CINEMA/NOM"/>5 </title>6 </head>7 <body bgcolor="white">8 <xsl:apply-templates select="CINEMA"/>9 </body>

10 </html>11 </xsl:template>

Introduction à XSLT - B. Amann et P. Rigaux – p.153/167

Page 154: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Règle CINEMA

Exploitation de l’élément CINEMA, puis appel à larègle SALLE

1 <xsl:template match="CINEMA">2 <h1><i>3 <xsl:value-of select="NOM"/>4 </i></h1><hr/>5 <xsl:value-of select="ADRESSE"/>,6 <i>Métro: </i>7 <xsl:value-of select="METRO"/>8 <hr/>9 <xsl:apply-templates select="SALLE"/>

1011 </xsl:template>

Introduction à XSLT - B. Amann et P. Rigaux – p.154/167

Page 155: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Vue d’ensemble

Règle "/"

Règle "CINEMA"Règle "SALLE"

html

head

h1

i

hr adresse p

h2 h3

Salle No 2 Film : VertigoFilm: Alien

p

Salle No 1

h2 h3

body

title

Epée de bois

Introduction à XSLT - B. Amann et P. Rigaux – p.155/167

Page 156: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

La même chose, en WML

On génère les cartes du site

1 <xsl:template match="/">2 <wml>3 <!-- Carte d’accueil -->4 <xsl:apply-templates select="CINEMA"/>56 <!-- Cartes pour les salles et séances -->7 <xsl:apply-templates select="CINEMA/SALLE"/>89 <!-- création des cartes pour les films -->

10 <xsl:apply-templates select=".//FILM"/>11 </wml>12 </xsl:template>

Introduction à XSLT - B. Amann et P. Rigaux – p.156/167

Page 157: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Arbre XML du site

card card

pp

a

a

card card card

p p p

wml

a a

id=index id=S1

href=S1

href=S2

id=S2 id=Alien id=Vertigo

href=Vertigohref=Alien

Introduction à XSLT - B. Amann et P. Rigaux – p.157/167

Page 158: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Règle CINEMA

1 <xsl:template match="CINEMA">2 <card id="index" title="Programme">3 <p align="center">4 <xsl:value-of select="NOM"/>5 </p>6 <xsl:for-each select="SALLE">7 <p> <a href="#S{@NO}">8 Salle <xsl:value-of select="@NO"/>:9 </a>

10 <xsl:value-of select="FILM/TITRE"/>11 </p>12 </xsl:for-each>13 </card>14 </xsl:template>

Introduction à XSLT - B. Amann et P. Rigaux – p.158/167

Page 159: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Résultat

1 <card id="index" title="Programme">2 <p align="center">3 Ep&#xE9;e de bois4 </p>5 <p>6 <a href="#S1"> Salle 1: </a>7 Alien8 </p>9 <p>

10 <a href="#S2"> Salle 2: </a>11 Vertigo12 </p>13 </card>

Introduction à XSLT - B. Amann et P. Rigaux – p.159/167

Page 160: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Règle SALLE

1 <xsl:template match="SALLE">2 <card id="S{@NO}">3 <p>Séances salle4 <xsl:value-of select="@NO"/></p>5 <p>6 <a href="#{FILM/TITRE}">7 Film :8 <xsl:value-of select="FILM/TITRE"/>9 </a>

10 </p>11 <xsl:apply-templates select="SEANCES"/>12 </card>13 </xsl:template>

Introduction à XSLT - B. Amann et P. Rigaux – p.160/167

Page 161: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Résultat

1 <card id="S2">2 <p>3 S&#xE9;ances salle 24 </p>5 <p>6 <a href="#Vertigo">7 Film : Vertigo</a>8 </p>9 <p>

10 S&#xE9;ance 22:0011 </p>12 </card>

Introduction à XSLT - B. Amann et P. Rigaux – p.161/167

Page 162: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

XSLT avec paramètres

1 <html>2 <head>3 <title>Formulaire de Recherche</title>4 </head>5 <body bgcolor="white">6 <h1>Formulaire de Recherche</h1>7 <form method=’get’ action=’Moteur.xml’8 name=’Form’>9 Film: <input type=’text’ name=’titre’> <br>

10 Séance: <input type=’text’ NAME=’seance’ >11 (hh:mm)<br>12 Ville: <input type=’text’ name=’ville’><br>13 <input type=’submit’ name=’chercher’14 value="Chercher"/>15 </form>16 </body>17 </html>

Introduction à XSLT - B. Amann et P. Rigaux – p.162/167

Page 163: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Le document XML

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE MOTEUR [<!ENTITY EpeeDeBois

SYSTEM "http://epee-de-bois.fr/EDB.xml"><!ENTITY CineMarseille

SYSTEM "http://cine-marseille.fr/CM.xml">]><MOTEUR>

<CINEMA>&EpeeDeBois;

</CINEMA><CINEMA>

&CineMarseille;</CINEMA>

</MOTEUR>

Introduction à XSLT - B. Amann et P. Rigaux – p.163/167

Page 164: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Traitement des paramètres

...<xsl:param name="titre"/><xsl:param name="seance"/><xsl:param name="ville"/>

<xsl:template match="MOTEUR"><xsl:for-each select="CINEMA">

<xsl:if test="($titre = ’’ or TITRE = $titre)

and ($seance = ’’ or HEURE &gt;= $seance)and ($ville = ’’ or VILLE = $ville)"><xsl:apply-templates select="." /><p/>

</xsl:if></xsl:for-each>

</xsl:template>

Introduction à XSLT - B. Amann et P. Rigaux – p.164/167

Page 165: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Conclusion sur XSLT

Un langage totalement adapté au traitement dedocuments XML

� Parcours d’un document, vu comme un arbre

� Déclenchement de règles sur certainsnœuds

� Association de plusieurs programmes à unmême document

Introduction à XSLT - B. Amann et P. Rigaux – p.165/167

Page 166: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Bibliographie sur XSLT

1. Recommendation XSLT sur le site du W3C

2. B. Amann et P. Rigaux, Comprendre XSLT,O’Reilly

3. P. Wadler, A formal semantics of patterns inXSLT

Introduction à XSLT - B. Amann et P. Rigaux – p.166/167

Page 167: Publication de données avec XML, Xpath et XSLTcedric.cnam.fr/vertigo/cours/ACSID/acsid-xml.pdfPublication de données avec XML, Xpath et XSLT License Professionelle ACSID CNAM, Paris

Conclusion

Le monde XML est encore dans ces débuts et ilresterait beaucoup de choses à dire sur

� le langage XSLT même (syntaxe etsémantique),

� sa relation avec d’autres technologies (e.g.XQuery, DOM, services Web...) et

� son intégration dans les architectures(serveurs et portails Web, SGBD, ...)

Introduction à XSLT - B. Amann et P. Rigaux – p.167/167