Vous êtes sur la page 1sur 146

Bernd Amann - CNAM, Paris

XML
Bernd Amann amann@cnam.fr Conservatoire National des Arts et Mtiers Paris October 17, 2000

Bernd Amann - CNAM, Paris

*
List of Slides 2 *

11 Introduction 12 La rvolution Internet 13 Nouvelles applications Web 14 Les consquences 15 HTML 16 Exemple 18 Structure, Contenu et Prsentation 19 Bibliographie 20 Bibliographie 22 XML 23 Le langage de marquage XML 24 Le World Wide Web Consortium (W3C) 25 Historique

Bernd Amann - CNAM, Paris

26 XML = Modle Documents Structurs 27 XML = Syntaxe pour Transfert de Donnes 28 Le Web et les Bases de Donnes 29 Notion de balisage structurel 30 Un document XML 31 Explications 32 DTD : Dclaration de la Structure dun Document XML 33 Dclaration du Type de Document 34 DTD: Utilisation 35 Rsum 36 Documents XML valides et bien-forms 37 DTD: Pourquoi Validation? 38 ELEMENT : Dclaration du Type de lment 39 ATTLIST : Dclaration des Attributs 40 ATTLIST : Mode 41 ATTLIST: Exemple

Bernd Amann - CNAM, Paris

42 Entits gnrales et Entits paramtres 43 Entits externes 44 Formal Public Identier 45 NOTATION : entits non-XML 46 Domaines nominaux (namespace) 47 Domaines nominaux: Exemple 48 Problme : comment valider un document XML ? 49 Domaines nominaux: Utilisation contrle 50 Autres Caractristiques de XML 51 DTD : Quelques remarques 52 XML Schema 53 XML: Syntaxe pour Transfert de Donnes 54 Schema XML et DTD: Comparaison 55 Schema XML : Exemple 57 XML Schema - Exemple 58 Types Simples

Bernd Amann - CNAM, Paris

59 Dnition de Types Simples 60 Restrictions de Types Simples 61 Restriction de Types Simples par Motifs 62 Listes de Valeurs de Type Simple 63 Restriction de Listes par Longueur 64 Union de Types Simples 65 Types Complexes, Elments, Attributs 66 Type Complexe: Exemple 67 Types Simples avec Attributs 69 Contenu mlang 70 Contenu Vide 71 Groupes: Exemple 72 Groupes dAttributs 73 Valeurs Nulles 74 Domaines Nominaux 75 lments Locaux Qualis et Non-qualis

Bernd Amann - CNAM, Paris

77 Extension de Types Complexes 79 Utilisation de types tendus 80 Restriction de Types Complexes 81 Rednition de types 82 Groupes de substitution 83 Types et Groupes Abstraits 84 Valeur unique 85 Cls et Rfrences 86 Adresser des Fragments XML: XPath et XPointer 87 Slectionner des Fragments XML 88 XPath et XPointer 89 Chemins de Positionnement 90 Contexte dvaluation 91 Chemins absolus 92 XPath: Exemples 93 XPath: Axes

Bernd Amann - CNAM, Paris

94 XPath : Tests 95 XPath : Exemples de tests 96 XPath : Syntaxe simplie 97 XPointer: Extensions de XPath 98 XPointer: Axes range:: et string:: 99 Chemins robustes 100 Liens XML: XLink 101 XLink 102 XLink Terminologie 103 Adresser des Ressources XML 104 Exemple 105 lments de Lien 106 Attributs dun lment 107 Exemple : Lien HTML = Lien XML simple 108 Exemple: lien tendu avec arcs 109 Contenu et Prsentation: CSS et XSL

Bernd Amann - CNAM, Paris

110 Feuilles de Style CSS 111 Principes de base 112 Exemple 113 Types de mdia 114 XSL 116 Example: Ofciel des Spectacles 117 Fonctions dune Feuille de Style 118 Les Composants de XSL 119 Structure dune feuille XSL 120 Rgles XSL : Exemple 122 Rgles XSL : Modle de Traitement 123 Rgles XSL : Rcursion innie 124 Rsolution de conits: Exemple 125 Rsolution de conits 126 Selection de Rgles: Modes 127 Rgle = Procdure avec Paramtres

Bernd Amann - CNAM, Paris

128 Structures de controle: for-each, if, choose 129 Trier 130 Cls 131 Gnration dIdenticateurs dObjets 132 Objets de Formatage (FO): Exemple PDF 133 XML-QL : Un langage de requtes pour XML 134 XML-QL 135 Exemple 136 Construction de rsultats 137 Requtes imbriques : lments optionnels 138 Requtes imbriques : Regroupement 139 Syntactic Sugaring 140 Jointures 141 Interrogation du schma 142 Expressions rgulires 143 Integration

Bernd Amann - CNAM, Paris

10

144 Integration: Fonctions de Skolem 145 Ordre 146 Ordre : Exemple

Bernd Amann - CNAM, Paris

11

Introduction

Bernd Amann - CNAM, Paris

Introduction

12

La rvolution Internet

Depuis 10 ans, Internet rvolutionne linformatique grand publique

Au dbut, un serveur Web tait essentiellement un serveur de documents HTML.

Depuis, les serveurs Web sont devenus des vrais serveur dapplications : qui accdent aux bases de donnes fournissent des notions de session, transaction, scurit avec des nouvelles technologies comme Java/Javascript, PHP, cookies,...

Bernd Amann - CNAM, Paris

Introduction

13

Nouvelles applications Web

Commerce lectronique: Services: rservation de train, mto, ... Bourse en-ligne B2B, B2C

Communauts Web (online communities): Napster, ...

Bernd Amann - CNAM, Paris

Introduction

14

Les consquences

HTML est insufsant pour la reprsentation des donnes qui sont changes sur Internet

Solution:

XML

Bernd Amann - CNAM, Paris

HTML - Rappel

15

HTML

HTML: HyperText Markup Language

dernire version: XHTML 1.0 recommandation W3C changement majeur depuis HTML 4.0: HTML devient une application de XML

Bernd Amann - CNAM, Paris

HTML - Rappel

16

Exemple
ofciel.html: <HTML> <HEAD><TITLE>Officiel du Spectacle</TITLE></HEAD> <BODY BGCOLOR="yellow"> <H1>Officiel du Spectacle</H1> <H2>Cinmas</H2> <UL> <LI><B>St. Andr des Arts</B>, 13, rue St. Andr des Arts, Paris <OL> <LI>18:00 - <A HREF="#brazil">Brazil</A></LI> <LI>20:30 - Matrix</LI> </OL> </LI> </UL>

Bernd Amann - CNAM, Paris

HTML - Rappel

17

<H2>Films:</H2> <UL> <LI><A NAME="brazil"><B>Brazil</B> avec: <OL> <LI>Jonathan Pryce</LI> <LI>Robert De Niro</LI> </OL> </LI> </UL> </BODY> </HTML>

Bernd Amann - CNAM, Paris

HTML - Rappel

18

Structure, Contenu et Prsentation

Dans un document HTML on mlange gnralement le contenu et la prsentation: le titre dun lm est entre les balises <B>...</B>, la couleur de la page est spci dans la balise <BODY BGCOLOR=...>, ... ==> Sparation du contenu et de la prsentation: HTML avec feuille de style CSS

Les informations dans une page HTML ne sont pas structures: on ne peut pas distinguer le nom du cinma, le titre du lm, ladresse du cinma etc... ==> Utilisation de balises spciques une application: XML.

Bernd Amann - CNAM, Paris

HTML - Rappel

19

Bibliographie

Bernd Amann - CNAM, Paris

Bibliographie

20

Bibliographie
Ces rfrences biblio ont t trouv avec Google. Nhesitez pas en chercher dautres!

Gnralits: W3C Web server : http://www.w3.org/ A. Michard, XML - Langage et Applications, Eyrolles Transparents de ce cours (2 slides/page): http://sikkim.cnam.fr:/Cours/Cours-XML/poly.pdf V. Aguilra, XML et gestion de donnes semi-structures, supports de cours Tutorial XML et BD: http://www.cs.huji.ac.il/ atdb/Lectures/xml/index.htm

Donnes semi-structures: S. Abiteboul, P. Buneman, D. Suciu: Data on the Web - from relations to semi-structured data and XML

XSL: Tutorial XSL:http://www.arbortext.com/xsl/ Projet XML Apache: http://xml.apache.org/

Langages de Requtes:

Bernd Amann - CNAM, Paris

Bibliographie

21

XML query languages : http://www.w3.org/TandS/QL/QL98/ Recommendation XQL: http://www.w3.org/TandS/QL/QL98/pp/xql.html, http://www.cuesoft.com/docs/cuexsl_activex/xql_users_guide.htm XML-QL : http://www.w3.org/TR/NOTE-xml-ql/ Quilt : Quilt

Xyleme: http://www.xyleme.com

Bernd Amann - CNAM, Paris

Bibliographie

22

XML

Bernd Amann - CNAM, Paris

Introduction XML

23

Le langage de marquage XML

XML: eXtensible Markup Language

standard (recommandation W3C, www.w3.org) pour 1. documents structurs : hritier de SGML 2. documents Web: gnralisation de HTML

XML facilite(ra) 1. lchange de donnes sur le Web 2. lintgration dapplications Web 3. linterrogation du Web

Bernd Amann - CNAM, Paris

Introduction XML

24

Le World Wide Web Consortium (W3C)

400 partenaires industriels, parmi lesquels Oracle, IBM, Compaq, Xerox, Microsoft, etc..

Laboratoires de recherche: MIT pour les tats Unis, INRIA pour lEurope, universit Keio (Japon) pour lAsie

Objectif: dnir un modle pour faciliter lchange de donnes sur le Web

Bernd Amann - CNAM, Paris

Introduction XML

25

Historique

1993: premiers travaux sur ladaptation des techniques SGML au Web (Sperberg).

Juin 1996: cration dun groupe de travail au sein du W3C

10 Fvrier 1998: publication de la recommandation pour la version 1.0 du langage.

Bernd Amann - CNAM, Paris

Introduction XML

26

XML = Modle Documents Structurs

XML est compatible avec SGML (standard pour documents structurs)




ldition de documents XML est simple (un diteur texte standard suft)


la structure dun document peut tre prdnie par une grammaire (DTD) et analyse par un parseur


le contenu dun document est spare de sa prsentation: feuille de style XSL

Bernd Amann - CNAM, Paris

Introduction XML

27

XML = Syntaxe pour Transfert de Donnes


ASCII du 21e sicle (H.S. Thompson)


ASCII (ISO 646) et UNICODE/ISO 10646: encodage de caractres




XML: encodage/linarisation de donnes XML permet de reprsenter des donnes avec une structure irrgulire, implicite et partielle (semi-structures). les nouvelles techniques dintgration et dinterrogation de donnes semi-structures peuvent tre appliques.

Bernd Amann - CNAM, Paris

Introduction XML

28

Le Web et les Bases de Donnes

WEB
HTML IMAGES SON

BASES DE DONNEES
RELATIONS OBJETS SCHEMAS

XML

Bernd Amann - CNAM, Paris

Introduction XML

29

Notion de balisage structurel

Principe cl de SGML


Ide: sparer la structure logique de la prsentation dun document




Avantages (par rapport HTML): 1. indpendance entre les outils de navigation (browser) et les outils de gestion de donnes (e.g. BD), 2. diffrentes prsentations pour le mme document, 3. indexation et linterrogation structurelle

Bernd Amann - CNAM, Paris

Introduction XML

30

Un document XML
Fichier ofciel.xml:
<Officiel> Ce document contient des informations sur des cinmas. <cinma> <nom> St. Andr des Arts </nom> <adresse> <ville> Paris </ville> <rue> rue St. Andr des Arts </rue> <numro> 13 </numro> </adresse> <sance heure = 18:00 ref_film = &13 /> <sance heure = 20:00 ref_film = &14 /> </cinma> Voici linformation sur le film Brazil : <film film_id = &13 actors = &156 &158 /> <titre> Brazil </titre><anne> 1986 </anne> </film></Officiel>

Bernd Amann - CNAM, Paris

Introduction XML

31

Explications

llment Officiel est la racine du document de contenu mlang




un cinma a un nom, une adresse et zro ou plusieurs sances




une sance contient un attribut ref_film qui permet de rfrencer dautres lments dans le mme document. Remarque : les rfrences ne sont pas types.


les lms sont identis par la valeur de lattribut film_id

Bernd Amann - CNAM, Paris

DTD : Dclaration du Type de Document XML

32

DTD : Dclaration de la Structure dun Document XML

Bernd Amann - CNAM, Paris

DTD : Dclaration du Type de Document XML

33

Dclaration du Type de Document


Fichier ofciel.dtd:
Officiel [ Officiel (#PCDATA | cinma | film)*> cinma (nom, adresse, (sance)*)> nom (#PCDATA) > adresse (ville, rue, (numro)?)> sance EMPTY> sance heure NMTOKEN #REQUIRED ref_film IDREF #REQUIRED> <!ELEMENT film (titre, anne> <!ATTLIST film film_id ID #REQUIRED> actors IDREFS #IMPLIED> <!ELEMENT titre (#PCDATA) > ...]> <!DOCTYPE <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT <!ELEMENT <!ATTLIST

Bernd Amann - CNAM, Paris

DTD : Dclaration du Type de Document XML

34

DTD: Utilisation
On ajoute au dbut du document XML (ofciel.xml): <!DOCTYPE SYSTEM officiel.dtd [ <!ATTLIST salle places NDATA #IMPLIED> ]>


sous-ensemble externe : SYSTEM officiel.dtd




sous-ensemble interne : <!ATTLIST salle places NDATA #IMPLIED>

Bernd Amann - CNAM, Paris

DTD : Dclaration du Type de Document XML

35

Rsum
Un document XML est dni par:


une structure physique : entits externes (chiers); entit document




une structure logique : prologue : 1. instructions dvaluation : e.g. <?xml version=1.0> 2. dclaration du type de document (DTD) : <!DOCTYPE ...> document type dnition : obtenu par le parseur partir de la dclaration de type de document lment racine suivi dautres lments pilogue

Bernd Amann - CNAM, Paris

DTD : Dclaration du Type de Document XML

36

Documents XML valides et bien-forms

document XML bien-form : pas de DTD la structure est imbrique (arborescence)




document XML valide : DTD existe respecte la DTD (grammaire, lment racine, spcications dattributs) respecte lintgrit rfrentielle :
 

toutes les valeurs dattributs de type ID sont distinctes toutes les rfrences sont valides

Bernd Amann - CNAM, Paris

DTD : Dclaration du Type de Document XML

37

DTD: Pourquoi Validation?


Une DTD est une interface entre le producteurs et les consommateurs des donnes :


le producteur peut contrler la qualit des donnes produites




le consommateur peut sparer la vrication syntaxique des donnes (parseur) de la logique de lapplication

Bernd Amann - CNAM, Paris

DTD : Dclaration du Type de Document XML

38

ELEMENT : Dclaration du Type de lment

Syntaxe: <!ELEMENT modle_du_contenu >




Modles du contenu : grammaire (structure) pour le document. EMPTY est un MC : lment vide ANY est un MC : toute combinaison de tous les lments contenu lment : expression rgulire sur les noms dlments
contenu_element cp ::= choice seq ::= [choice | seq] [? | * | +]? [Name | choice | seq] [? | * | +]? ::= ( cp [ | cp ]* ) ::= ( cp [ , cp ]* )

contenu mixte : expression rgulire sur les noms dlments et #PCDATA : contenu_mixed ::= (#PCDATA [| Name]* )* | (#PCDATA)

Bernd Amann - CNAM, Paris

DTD : Dclaration du Type de Document XML

39

ATTLIST : Dclaration des Attributs

Syntaxe : <!ATTLIST lment nom type mode [default] > Types dattributs (type): 1. String : CDATA
!

2. Enumerated : squence de valeurs alternatives spares par 3. ID, IDREF, IDREFS : identication et rfrences 4. ENTITY/ENTITIES : nom dune entit non analyse dclare ailleurs 5. NMTOKEN/NMTOKENS : chane de caractres sans blancs
!

6. NOTATION : une ou plusieurs notations (spares par )

Bernd Amann - CNAM, Paris

DTD : Dclaration du Type de Document XML

40

ATTLIST : Mode
Modes dattributs:
"

#REQUIRED : la valeur doit tre dnie


"

#IMPLIED : la valeur est optionnelle


"

#FIXED : la valeur est constante

Bernd Amann - CNAM, Paris

DTD : Dclaration du Type de Document XML

41

ATTLIST: Exemple

heure NMTOKEN #REQUIRED ref_film IDREF #REQUIRED> <!ATTLIST film film_id ID #REQUIRED actors IDREFS #IMPLIED langue (AN|FR|AL|ES|IT) #IMPLIED> <!ATTLIST adresse ville CDATA #IMPLIED Paris>

<!ATTLIST sance

Bernd Amann - CNAM, Paris

DTD : Dclaration du Type de Document XML

42

Entits gnrales et Entits paramtres


<!DOCTYPE Officiel [ <!ENTITY copyright Copyright B. Amann> <!ELEMENT Officiel (p, ann) > <!ELEMENT p (#PCDATA) > <!ENTITY % text #PCDATA> <!ELEMENT anne (%text;) > ]> <Officiel> <p> %copyright; </p><anne>2000</anne> </Officiel>
#

Entits paramtres : dclaration et utilisation dans DTD.


#

Entits gnrales : dclaration dans DTD et utilisation dans DTD et document.

Bernd Amann - CNAM, Paris

DTD : Dclaration du Type de Document XML

43

Entits externes

Segmentation du document en plusieurs sous-documents


$

Rutilisation de DTDs et de dclarations


$

Rfrences vers donnes non-XML (NOTATION)

Adressage:
$

URL : <!ENTITY % autre SYSTEM http://pariscope.fr/ext.xml >


$

FPI : formal public identier <!ENTITY % autre PUBLIC -//CNAM//Texte libre//FR>

Bernd Amann - CNAM, Paris

DTD : Dclaration du Type de Document XML

44

Formal Public Identier


Un identicateur FPI est garanti unique sil est
%

conforme ISO 9070,


%

enregistr dans un chier catalogue et


%

dbute par +

Bernd Amann - CNAM, Paris

DTD : Dclaration du Type de Document XML

45

NOTATION : entits non-XML


Utilisation:
&

dclaration du format (type = application) pour entits non-XML


&

rfrence une entit de type notation seulement possible comme valeur dattribut

<!DOCTYPE exemple [ <!NOTATION gif SYSTEM /usr/local/bin/xv > <!ENTITY myphoto SYSTEM ./moi.gif NDATA gif > <!ELEMENT person EMPTY > <!ATTLIST person photo NOTATION (gif) #IMPLIED> ]> <person photo=myphoto >

Bernd Amann - CNAM, Paris

DTD : Dclaration du Type de Document XML

46

Domaines nominaux (namespace)

'

Un domaine nominal XML (namespace) est une collection de noms dlments ou noms dattributs (identie par un URI).
'

Utilisation: viter les conits de noms (par exemple, quand on utilise plusieurs DTD externes)

Bernd Amann - CNAM, Paris

DTD : Dclaration du Type de Document XML

47

Domaines nominaux: Exemple

<?xml version=1.0?> <film xmlns:fi=http://www.pariscope.fr/films.dtd> <acteur> <nom> George Clooney </nom> </acteur> </film> <theatre xmlns:th=http://www.comedie.fr/pieces.dtd> <acteur nom=Juliette Binoche /> </theatre>
(

Noms qualis: fi:film, fi:acteur, fi:nom, th:theatre, th:acteur et th:nom

Bernd Amann - CNAM, Paris

DTD : Dclaration du Type de Document XML

48

Problme : comment valider un document XML ?


Un acteur de thtre dans un lm: <?xml version=1.0?> <film xmlns:fi=http://www.pariscope.fr/films.dtd> <acteur xmlns:th=http://www.comedie.fr/pieces.dtd nom=Daniel Auteuil> </acteur> </film> La dnition de llment acteur ne correspond pas la dnition dans lms.dtd bien-form mais pas valide.
)

document

Bernd Amann - CNAM, Paris

DTD : Dclaration du Type de Document XML

49

Domaines nominaux: Utilisation contrle


lments parent
0

Les acteurs de cinma et de thtre sont distingus dans le contexte de leurs document valide :

<!DOCTYPE officiel [ <!ELEMENT officiel (film | theatre)*> <!ELEMENT film (acteur)*> <!ATTLIST film xmlns CDATA #FIXED http://.../films.dtd> <!ELEMENT theatre (acteur)*> <!ATTLIST theatre xmlns CDATA #FIXED http://.../pieces.dtd> ]> <film> <acteur><nom> George Clooney </nom> </acteur></film> <theatre> <acteur nom=Juliette Binoche /> </theatre>

Bernd Amann - CNAM, Paris

DTD : Dclaration du Type de Document XML

50

Autres Caractristiques de XML

instructions dvaluation (processing instructions - PI) : <?application arguments ?> e.g. pour xml: version, encoding, standalone?
1

sections non-interprts <![CDATA X]> : texte X nest pas analys par le parseur
1

sections conditionnelles : <![ENGLISH[....]]>, <![FRANCAIS[....]]>


1

commentaires : <!- comment...


1

->

alias : <!ATTLIST xref to CDATA #REQUIRED XML-ATTRIBUTES to HREF>

Bernd Amann - CNAM, Paris

DTD : Dclaration du Type de Document XML

51

DTD : Quelques remarques

DTD = grammaire (sans contexte)


2

DTD = modle de donnes document XML = arbre ordonn types atomiques limits (#PCDATA, ID, IDREF, ...)
3

XML schema

rfrences non types (IDREF)


3

XML schema

pas de types complexes


3

XML schema

Bernd Amann - CNAM, Paris

Schmas XML

52

XML Schema

Bernd Amann - CNAM, Paris

Schmas XML

53

XML: Syntaxe pour Transfert de Donnes

Problme: DTD sont trop pauvres pour reprsenter des modles de donnes plus riches : la relation lment/sous-lment correspond essentiellement la relation part-of un seul type atomique: #PCDATA une DTD nest pas un document XML
4

Solution: XML Schma

Bernd Amann - CNAM, Paris

Schmas XML

54

Schema XML et DTD: Comparaison

un schma XML est un document XML


5

sparation entre balises et types: diffrents lments peuvent partager le mme type (modles de contenu)
5

43 Types simples, listes et union de types simple


5

constructeurs de types complexes: sequence, choice, group


5

restriction de types par motifs (wildcards)


5

classes dquivalences entre lments


5

mcanisme dextension et rafnement de types


5

mcanismes de documentation

Bernd Amann - CNAM, Paris

Schmas XML

55

Schema XML : Exemple


DTD: ofciel.dtd
<!ELEMENT Officiel (#PCDATA | cinma | film)*> <!ELEMENT cinma (nom, adresse, (sance)*)> XML Schema: ofciel.xsd <xsd:schema xmlns:xsd=http://www.w3.org/2000/10/XMLSchema> <xsd:annotation> <xsd:documentation> Schma pour officiel.com </xsd:documentation> </xsd:annotation> <xsd:element name=Officiel type=OfficielType/> <xsd:complexType name=OfficielType mixed=true> <xsd:choice minOccurs=0 maxOccurs=unbounded> <xsd:element name=cinema type=CinemaType/> <xsd:element name=film type=FilmType/> </xsd:sequence> </xsd:complexType>

Bernd Amann - CNAM, Paris

Schmas XML

56

<xsd:complexType name=CinemaType> <xsd:sequence> <xsd:element name=nom type=xsd:string/> <xsd:element name=adresse type=AdresseType/> <xsd:element name=sance type=SanceType minOccurs=0 maxOccurs=unbounded/> </xsd:sequence> </xsd:complexType> </xsd:schema>

Bernd Amann - CNAM, Paris

Schmas XML

57

XML Schema - Exemple

DTD: Fichier lm.dtd


6

Schma XML: Fichier lm.xsd

Bernd Amann - CNAM, Paris

Schmas XML

58

Types Simples
DTD: un seul type dlment (#PCDATA) et 10 types dattributs Schma XML: 43 types atomiques
7

xsd:string, xsd:byte, xsd:unsignedByte


7

xsd:integer, xsd:long, xsd:float, xsd:double, ...


7

xsd:boolean
7

xsd:time, xsd:timeDuration, xsd:Date, xsd:year, xsd:month, ...


7

xsd:language, xsd:uriReference
7

Types DTD: xsd:ID, xsd:IDREF, xsd:NMTOKEN, ...


7

listes et unions de types simples

Bernd Amann - CNAM, Paris

Schmas XML

59

Dnition de Types Simples

Anne Film: 1956


8

DTD: #PCDATA
8

XML schma : Restriction de type <xsd:simpleType name=anneFilm> <xsd:restriction base=xsd:integer> <xsd:minInclusive value=1900/> <xsd:maxInclusive value=2000/> </xsd:restriction> </xsd:simpleType>

Bernd Amann - CNAM, Paris

Schmas XML

60

Restrictions de Types Simples

longueur (length, minLength, maxLength) des chanes de caractres ou listes


9

par motifs (chanes de caractres, style Perl),


9

numration,
9

intervalles (maxInclusive, maxExclusive, minInclusive, minExclusive) et


9

autres (precision, scale, encoding, period, duration).

Bernd Amann - CNAM, Paris

Schmas XML

61

Restriction de Types Simples par Motifs

Numro de tlphone: +33-(0)-1-34-45-67-89


@

DTD: #PCDATA
@

Schma XML: Similaire aux expressions rgulires de Perl <xsd:simpleType name=numTl> <xsd:restriction base=xsd:string> <xsd:pattern value=+33-(0)-\d(-\d{2}){3}/> </xsd:restriction> </xsd:simpleType>

Bernd Amann - CNAM, Paris

Schmas XML

62

Listes de Valeurs de Type Simple

lment XML: <Annuaire>33-(0)-1-34-45-67-89 33-(0)-3-25-56-98-78</Annuaire>


A

DTD: <!ELEMENT Annuaire #PCDATA> (attribut: NMTOKENS)


A

XML Schma: <xsd:simpleType name=listeNumTl> <xsd:list itemType=numTl/> </xsd:simpleType> <xsd:element name=Annuaire type=listeNumTl/>

Attention: listes de xsd:string : le symbole (espace) est sparateur

Bernd Amann - CNAM, Paris

Schmas XML

63

Restriction de Listes par Longueur


Listes avec 5 numros de tlphone:
B

XML Schma: <xsd:simpleType name=cinqNumTl> <xsd:restriction base=listNumTl> <xsd:length value=5/> </xsd:restriction> </xsd:simpleType>

Bernd Amann - CNAM, Paris

Schmas XML

64

Union de Types Simples

Numros europens: +33-(0)-1-45-67-89 +43-(0)-55-50-24-91


C

DTD: #PCDATA ou NMTOKENS (attributs)


C

XML schma: <xsd:simpleType name=euroNumTl> <xsd:union memberTypes=francTl gerTl belTl .../> </xsd:simpleType>

Bernd Amann - CNAM, Paris

Schmas XML

65

Types Complexes, Elments, Attributs

Constructeur de type: xsd:squence, xsd:choice, xsd:group


D

Dclaration dlments: <xsd:element name type contraintes [value]/> <xsd:element ref contraintes/> Contraintes: minOccurs, maxOccurs, fixed
D

Attributs: <xsd:attribut name use [value]/> Use: required, optional, fixed, prohibited

Bernd Amann - CNAM, Paris

Schmas XML

66

Type Complexe: Exemple

Modle de contenu DTD: (titre, anne)


E

XML Schma:
<xsd:complexType name=FilmType> <xsd:sequence> <xsd:element name=titre type=xsd:string/> <xsd:element name=anne> <xsd:simpleType> <xsd:restriction base=xsd:year> <xsd:maxInclusive value=2000/> </xsd:restriction> </xsd:simpleType> </xsd:element> </xsd:sequence> </xsd:complexType>

Bernd Amann - CNAM, Paris

Schmas XML

67

Types Simples avec Attributs

lment XML: <titre langue=franais>Le Got des Autres</titre>


F

DTD: <!ELEMENT titre #PCDATA> <!ATTLIST titre langue NMTOKEN>

Bernd Amann - CNAM, Paris

Schmas XML

68

XML schma: les types simples (e.g. xsd:string) nont pas dattributs: <xsd:element name=titre> <xsd:complexType> <xsd:simpleContent> <xsd:extension base=xsd:string> <xsd:attribute name=langue type=xsd:string /> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element>

Bernd Amann - CNAM, Paris

Schmas XML

69

Contenu mlang

lment XML:
<Officiel> Cinmas: </Officiel>
H

<cinema> ...

</cinema> Films:

<film> ...

</film>

DTD: <!ELEMENT Officiel (#PCDATA | cinma | film)*>


H

Schma XML (<xsd:choice> peut tre remplac par xsd:sequence):


<xsd:complexType name=OfficielType mixed=true> <xsd:choice minOccurs=0 maxOccurs=unbounded> <xsd:element name=cinema type=CinemaType /> <xsd:element name=film type=FilmType /> </xsd:choice> </xsd:complexType>

Bernd Amann - CNAM, Paris

Schmas XML

70

Contenu Vide

lment XML: <film titre=If anne=1976/>


I

Schma XML: <xsd:element name=film> <xsd:complexType> <xsd:complexContent> <xsd:restriction base=xsd:anyType> <xsd:attribute name=titre type=xsd:string/> <xsd:attribute name=anne type=anneFilm/> </xsd:restriction> </xsd:complexContent> </xsd:complexType> </xsd:element>

Bernd Amann - CNAM, Paris

Schmas XML

71

Groupes: Exemple

DTD: <!ELEMENT A ((B|C)*,D)+>


P

XML schma:
<xsd:element name=A> <xsd:complexType> <xsd:group minOccurs=1 maxOccurs=unbounded> <xsd:sequence> <xsd:group minOccurs=0 maxOccurs=unbounded> <xsd:choice> <xsd:element name=B xsd:type=xsd:string/> <xsd:element name=C xsd:type=xsd:string/> </xsd:choice> </xsd:group> </xsd:sequence> </xsd:sequence> </xsd:complexType> </xsd:element>

Bernd Amann - CNAM, Paris

Schmas XML

72

Groupes dAttributs
Ladresse dun cinma ou dune personne est compose des mmes attributs (partage) : <xsd:element name=cinema> ... <xsd:attributeGroup ref=Adresse/> </xsd:element> <xsd:element name=personne> ... <xsd:attributeGroup ref=Adresse/> </xsd:element> <xsd:attributeGroup name=Adresse> <xsd:attribute name=ville type=xsd:string/> <xsd:attribute name=rue type=xsd:string/> <xsd:attribute name=numro type=xsd:decimal/> </xsd:attribute>

Bernd Amann - CNAM, Paris

Schmas XML

73

Valeurs Nulles

Schma XML: <xsd:element name=heureFilm type=xsd:time nullable=true/>


Q

lment XML: <heureFilm xsi:null=true/>

xsi:null est dni dans le domaine de noms pour des instances (http://www.w3.org/2000/10/XMLSchema-instance).

Bernd Amann - CNAM, Paris

Schmas XML

74

Domaines Nominaux

<schema xmlns=http://www.w3.org/1999/XMLSchema targetNamespace=http://www.officiel.com/namespace xmlns:officiel=http://www.officiel.com/namespace> <element name=cinema> <complexType type=cinemaType content=elementOnly> <element name=nom type=string/> <element ref=officiel:adresse/> <sequence minOccurs=0 maxOccurs=unbounded> <element ref=officiel:seance/> </sequence> </complexType> </element> </schema>

Bernd Amann - CNAM, Paris

Schmas XML

75

lments Locaux Qualis et Non-qualis


Document XML: <?xml version=1.0?> <officiel:Officiel xmlns:officiel=http://www.officiel.com/namespace> <officiel:cinema> <nom>St Andr des Arts</nom> <officiel:adresse> <ville> Paris </ville> <rue> rue St. Andr des Arts </rue> <numro> 13 </numro> </officiel:adresse> </officiel:cinema> </officiel:Officiel>

Bernd Amann - CNAM, Paris

Schmas XML

76

Les lments nom, ville, rue, numro ne sont pas qualis. La clause elementForm=qualified dans le schma permet de forcer la qualication des lments locaux et, comme dans une DTD, il nest plus possible davoir deux lments avec le mme nom.

Bernd Amann - CNAM, Paris

Schmas XML

77

Extension de Types Complexes


Cinmas avec un site Web et un pays (chier webcountry.xsd):
<include schemaLocation=http://www.officiel.com/officiel.xsd /> <complexType name=cybercinemaType> <complexContent> <extension base=officiel:cinemaType> <sequence> <element name=webaddress type=url/> <element name=country type=string/> </sequence> </extension> </complexContent> </complexType>

Bernd Amann - CNAM, Paris

Schmas XML

78

La clause <include> permet dimporter un schma avec le mme domaine nominal cible (target namespaces).
R

Le type <cybercinmaType> est un sous-type du type <cinmaType>.

Bernd Amann - CNAM, Paris

Schmas XML

79

Utilisation de types tendus


Le type dun lment est dni explicitement avec lattribut xsi:type: <officiel:cinema xsi:type=cybercinemaType> <nom>St Andr des Arts</nom> <officiel:adresse> <ville> Paris </ville> <rue> rue St. Andr des Arts </rue> <numro> 13 </numro> </officiel:adresse> <url>http://www.st-andr.com</url> </officiel:cinema>

Bernd Amann - CNAM, Paris

Schmas XML

80

Restriction de Types Complexes


Cinmas avec une trois sances (chier seance.xsd): <include schemaLocation=http://www.officiel.com/officiel.xsd/> <complexType name=sanceobligType> <complexContent> <restriction base=officiel:cinemaType> <complexType content=elementOnly> <sequence minOccurs=1 maxOccurs=3> <element ref=officiel:seance/> </sequence> <element name=nom type=string/> <element ref=officiel:adresse/> </complexContent> </complexType> Dnition original: minOccurs=0 maxOccurs=unbounded.

Bernd Amann - CNAM, Paris

Schmas XML

81

Rednition de types
Cinmas avec une url (chane de caractres) :
<redefine schemaLocation=http://www.officiel.com/officiel.xsd /> <complexType name=cinemaType> <complexContent> <extension base=officiel:cinemaType> <sequence> <element name=webaddress type=url/> </sequence> </extension> </complexContent> </complexType>

Attention: il est possible de crer des conits avec des types drivs du type redni: type cybercinemaType -> deux lments webaddress)

Bernd Amann - CNAM, Paris

Schmas XML

82

Groupes de substitution
Substitution dlments par dautres lments: XML schma: <element name=movieTheatre type=officiel:cinemaType substitutionGroup=officiel:cinma/> Llment movieTheatre peut remplacer cinma.

Bernd Amann - CNAM, Paris

Schmas XML

83

Types et Groupes Abstraits

Schma XML: il est possible de dnir des lments abstraits qui ne peuvent pas tre instantis directement: <complexType name=culturalplaceType abstract=true/> <complexType name=cinemaType> <complexContent> <extension base=culturalplaceType/> ... </complexContent> </complexType> <element name=culturalplace type=officiel:culturalplaceType/>
S

Document XML: le type doit tre spci par lattribut xsi:type: <culturalplace xsi:type=cinemaType/>

Bernd Amann - CNAM, Paris

Schmas XML

84

Valeur unique

Lidenticateur dun lm doit tre unique: <unique name=toto> <selector>film</selector> <field>film_id</field> </unique>
T

Les valeurs des element <selector> et <field> sont des expressions XPath.
T

La valeur de <field> doit tre unique lintrieur de chaque lment slectionn par le slecteur.

Bernd Amann - CNAM, Paris

Schmas XML

85

Cls et Rfrences

Une cl est unique (lmcli attribut cl dune relation): <key name=filmcl> <selector>film</selector> <field>@film_id</field> </key>
U

Rfrence (lmref attribut cl etrangre dune relation) <keyref name=filmref refer=filmcl> <selector>sance</selector> <field>@ref_film</field> </keyref>

Bernd Amann - CNAM, Paris

Schmas XML

86

Adresser des Fragments XML: XPath et XPointer

Bernd Amann - CNAM, Paris

Adressage de Fragments XML : XPath

87

Slectionner des Fragments XML


XPath est utilis par
V

XML Schma pour crer des cls et rfrences


V

XLink pour crer des rfrences (liens) vers des documents/fragments XML
V

XSL pour transformer des documents XML

Bernd Amann - CNAM, Paris

Adressage de Fragments XML : XPath

88

XPath et XPointer

XPath: fond sur une reprsentation arborescente (DOM) du document XML objectif : rfrencer noeuds (lments, attributs, commentaires, ...) dans un document XML
W

XPointer: extension de XPath pour rfrencer des fragments qui ne correspondent pas forcment des noeuds entiers

Bernd Amann - CNAM, Paris

Adressage de Fragments XML : XPath

89

Chemins de Positionnement
Un chemin (de positionnement) est une squence dtapes de positionnement (location step) par rapport un ensemble de noeuds donnes (contexte) : axe::test/axe::test/.../axe::test 1. laxe slectionne un ensemble de noeuds par rapport leur position dans un document (arbre) ou relative un contexte. 2. le test est valu pour chaque noeud dans la slection 3. chaque tape cre un nouveau contexte pour ltape suivante

Bernd Amann - CNAM, Paris

Adressage de Fragments XML : XPath

90

Contexte dvaluation
Un contexte dvaluation est dni par
X

une liste de noeuds,


X

un noeud dans cette liste,


X

un ensemble de liaisons de variables (non utilis dans la version actuelle),


X

un ensemble de fonctions (fonctions de XPath et XPointer),


X

un ensemble de dclarations de domaines de nommage.

Bernd Amann - CNAM, Paris

Adressage de Fragments XML : XPath

91

Chemins absolus
Le contexte dvaluation est choisi dune manire absolue :
Y

/: slectionne toute la ressource (avec le prologue)


Y

id(val): lment avec ID=val


Y

here(): lment qui contient le XPointer


Y

origin(): utilisation avec liens externes XLink

Bernd Amann - CNAM, Paris

Adressage de Fragments XML : XPath

92

XPath: Exemples

La racine du document: /
`

Tous les ls de type film de la racine du document XML : /child::film


`

Tous les ls de type film (dun contexte donn) : child::film


`

Tous les (premiers) ls de type film qui suivent un ls de type sance : child::sance/following-sibling::film[position()=1]

Bernd Amann - CNAM, Paris

Adressage de Fragments XML : XPath

93

XPath: Axes
Axes relatifs un noeud (lment, PI, commentaire, texte, CDATA):
a

child, descendant, ancestor, parent,


a

preceding-sibling, following-sibling,
a

preceding, following,
a

attribute,
a

self

Commentaire: Dans un lment XML, lensemble {self::*, preceding-sibling::*, following-sibling::*, descendant::*, ancestor::*} forme une partition des lments du document XML.

Bernd Amann - CNAM, Paris

Adressage de Fragments XML : XPath

94

XPath : Tests
Tests sur
b

les noms des lments et des attributs


b

le type du noeud (texte, comment, PI, *)


b

la position : [position()=N]
b

le nombre doccurrences : [count(child::acteur) > 1]


b

la structure locale : chemins imbriqus avec connecteurs logiques (qualiers)

Bernd Amann - CNAM, Paris

Adressage de Fragments XML : XPath

95

XPath : Exemples de tests

film: tous les lments film


c

*: tous les lments


c

@titre: tous les attributs titre


c

@*: tous les attributs


c

acteur|actrice: tous les lments acteur et actrice


c

text(): tous les lments qui contiennent du texte


c

id("willis"): llment avec lidenticateur willis (chemin absolu)


c

film[1]: le premier lment lm


c

*[position()=1 and self::film]: llment film sil est le premier lment


c

sance[position()>1]: tous les lments sance sauf le premier


c

film[@titre="Shining"]: les lments film avec lattribut @titre gal Shining

Bernd Amann - CNAM, Paris

Adressage de Fragments XML : XPath

96

XPath : Syntaxe simplie


XPath /child::film/child::acteur /child::cinma/descendant::acteur /descendant::* /descendant::film[@anne=2000] Syntaxe simplie /film/acteur /cinma//acteur //* //film[@anne=2000]

Bernd Amann - CNAM, Paris

Adressage de Fragments XML : XPath

97

XPointer: Extensions de XPath

deux axes nouveaux : range:: et string:: (seulement comme dernire tape de positionnement)
d

deux chemins absolues nouveaux : origin() et here()


d

un nouveau prdicat unique pour vrier si une position est unique (un seul noeud dans le contexte)

Bernd Amann - CNAM, Paris

Adressage de Fragments XML : XPath

98

XPointer: Axes range:: et string::

Slection dune rgion dans le document. Exemple : les trois premiers noeuds ls de llment a23. id("a23")/range::child[1],following-sibling[2]
e

Slection dune sous-chane dans le document (marqueurs sont ignors). Exemple : Slectionne la troisime occurrence de la chane American Beauty : string::3,"American Beauty"

Bernd Amann - CNAM, Paris

Adressage de Fragments XML : XPath

99

Chemins robustes
Problmes : comment crer des chemins/pointeurs robustes (insensibles la modication dun document)?
f

cls : utiliser id(val)


f

localit : position absolue le plus prs possible de la position nale


f

typage : utilisation types dlments et noms dattributs

Bernd Amann - CNAM, Paris

Adressage de Fragments XML : XPath

100

Liens XML: XLink

Bernd Amann - CNAM, Paris

Liens XML: XLink

101

XLink
Recommandation W3C (candidate: Juillet 2000) :
g

spcier des liens indpendamment des donnes (liens externes, bases de liens) (impossible dans HTML)
g

crer des liens multi-directionnels (HTML: unidirectionnel)


g

crer des liens entre deux ressources et plus (HTML: deux ressources)
g

dnir une smantique de parcours (insrer, remplacer, nouvelle fentre, parcours automatique) (HTML: dni par lapplication/browser)

Bernd Amann - CNAM, Paris

Liens XML: XLink

102

XLink Terminologie

Ressource : information ou service qui peut tre rfrenc (document, image, scripte cgi, portail) ressource externe (remote): adresse contient une URI
h

Lien: relation explicite entre deux ou plusieurs ressources


h

Arc: dnition du comportement dun lien: direction de parcours, afchage, ...

Bernd Amann - CNAM, Paris

Liens XML: XLink

103

Adresser des Ressources XML

URL: http://www.ofciel.com/index.xml
i

URL+XPath: http://www.ofciel.com/index.xml#/cinma//lm
i

FPI (formal public identier)


i

IDREF/IDREFS: a123
i

Requtes XML

Bernd Amann - CNAM, Paris

Liens XML: XLink

104

Exemple
Lien simple vers le document brazil.xml. Le document est afch dans une nouvelle fentre : <film xmlns:xlink=http://www.w3.org/1999/xlink> xlink:type=simple xlink:href=brazil.xml xlink:role=film xlink:title=Brazil xlink:show=new xlink:actuate=onRequest> Brazil </film>

Bernd Amann - CNAM, Paris

Liens XML: XLink

105

lments de Lien
Les diffrents types dlments sont distingus par la valeur de lattribut type :
p

simple: liens entre deux ressources (liens HTML)


p

extended: liens complexes entre plusieurs ressources (bases liens). Un lien tendu contient directement les lments de lien suivants : locator: identication de ressources externes arc: rgles de parcours pour deux ressources (from-to) resource: ressources internes title: tiquettes (pour lafchage)

Bernd Amann - CNAM, Paris

Liens XML: XLink

106

Attributs dun lment

Attribut de typage: type dlment de lien


q

Attribut dadressage : href: CDATA (e.g. http://www.ofciel.com)


q

Attributs smantiques: role, arcrole, title


q

Attributs comportementaux : show: (new|replace|embed|undened) actuate: (onload|onRequest|undened)


q

Attributs de parcours : from, to, label

Bernd Amann - CNAM, Paris

Liens XML: XLink

107

Exemple : Lien HTML = Lien XML simple

Dnition de llment A de HTML: <!ELEMENT A ANY> <!ATTLIST A xml:link CDATA #FIXED simple inline CDATA #FIXED true href CDATA #IMPLIED name ID #IMPLIED show (replace|new) #IMPLIED actuate CDATA #FIXED onRequest>
r

Lien HTML: <A HREF=#projet_xml>Projet XML</A> ... <A NAME=projet_xml/>Ce projet a pour but ...

Bernd Amann - CNAM, Paris

Liens XML: XLink

108

Exemple: lien tendu avec arcs


Une base de liens pour des lms : <festival type=extended titel=Festival de Cannes> Les Films: <film type=resource label=f1 href=#id(f12) title=Brazil/> <film type=resource label=f2 href=#id(f13) title=Apocalypse Now/> <film type=resource label=f3 href=#id(f45) title=Marion/> <film_ext type=locator label=f4 href=http://www.cinema.com/#id(Farinelli) show=new/> Les Rgisseurs: <director type=locator label=d1 href=http://www.coppola.org role=director tile=F.F. Coppola /> <go type=arc from=f2 to=d1 title=Director of this Film/> </festival>

Bernd Amann - CNAM, Paris

Liens XML: XLink

109

Contenu et Prsentation: CSS et XSL

Bernd Amann - CNAM, Paris

Afcher du HTML: Feuilles de Style CSS

110

Feuilles de Style CSS

CSS: Cascading Style Sheets


s

Initialement conues pour HTML


s

CSS-1: publi en 1996 par le W3C, CSS-2: mai 1998


s

CSS sapplique parfaitement XML


s

On ne donnera quun aperu de ce langage (la spcication compte 358 pages!)

Bernd Amann - CNAM, Paris

Afcher du HTML: Feuilles de Style CSS

111

Principes de base

Une feuille de style CSS se compose de rgles de style


t

Une rgle est compose dun slecteur et de proprits


t

Syntaxe: selecteur { p1:v1;...;pn:vn}


t

Exemple: titre { font-weight: bold; font-size: 14pt font-family: Garamond; font-style: normal }
t

Attachement dune feuille de style un document <link rel=stylesheet href="mystyle.css" type="text/css">

Bernd Amann - CNAM, Paris

Afcher du HTML: Feuilles de Style CSS

112

Exemple

Document HTML: Samples/ofciel-avec-css.html


u

Feuille de style: Samples/ofciel.css

Bernd Amann - CNAM, Paris

Afcher du HTML: Feuilles de Style CSS

113

Types de mdia

Les feuilles de style CSS permettent de spcier les rgles de ralisation physique de documents sur des supports varis comme les crans dordinateur, les crans miniatures (notepad, tlphone portable), le papier, les terminaux Braille, la synthse vocale
v

Exemple: @media print { article {font-size: } @media screen { article {font-size: } @media screen,print /* rgles communes 10 pt; font-family: Garamond}

12 pt; font-family: Arial} { */}

Bernd Amann - CNAM, Paris

Afcher XML: Feuilles de Style XSL

114

XSL

Working draft W3C (avril 1999)


w

Efforts antrieurs : XSL sest fortement inspir de CSS (extension: XSL permet la transformation de la structure) et de DSSSL (SGML)
w

Une feuille de style XSL utilise deux langages (la syntaxe est XML) : XSLT: pour la transformation de la structure du document Vocabulaire pour la spcication de la prsentation (papier, cran, ...)
x w

CSS

XSLT domaine nominal (namespace) = http://www.w3.org/1999/XSL/Transform

Bernd Amann - CNAM, Paris

Afcher XML: Feuilles de Style XSL

115

Feuille de Style XSL XSL Transformation Document HTML Navigateur Web

Document XML

Feuille de Style XSL

XSL Transformation

Document PDF

Acrobat Reader

Bernd Amann - CNAM, Paris

Afcher XML: Feuilles de Style XSL

116

Example: Ofciel des Spectacles

XML
y

Feuille de Style XSL


y

Rsultat Dynamique
y

Rsultat Stock

Bernd Amann - CNAM, Paris

Afcher XML: Feuilles de Style XSL

117

Fonctions dune Feuille de Style

Gnration de texte

Suppression de contenu (noeuds)

Dplacer texte (noeuds)

Dupliquer texte (noeuds)

Trier

Bernd Amann - CNAM, Paris

Afcher XML: Feuilles de Style XSL

118

Les Composants de XSL

Langage de programmation (avec une syntaxe XML) : variables, fonctions (JavaScript), rcursion, ...

Extension de XPath pour la slection de noeuds et le choix de traitement dun noeud

Rsultat peut ne pas tre bien-form (racine nest pas unique)

Bernd Amann - CNAM, Paris

Afcher XML: Feuilles de Style XSL

119

Structure dune feuille XSL

Une feuille XSL est un ensemble de rgles

Une rgle associe un motif un constructeur ou modle

Le motif dnit la structure laquelle peut sappliquer cette rgle

Le constructeur dnit la structure du sous-arbre gnr lors de lactivation de la rgle

Si plusieurs rgles sappliquent un lment, la plus spcique est retenue

Bernd Amann - CNAM, Paris

Afcher XML: Feuilles de Style XSL

120

Rgles XSL : Exemple


Gnrer une liste HTML avec les titres et les annes de production de lms : <xsl:template match=Officiel> <ol> <xsl:apply-template match=film/> </ol> </xsl:template> <xsl:template match=film> <li><A name=film{@film_id}/> <B><xsl:value-of select=titre/></B> <xsl:value-of select=annee/> </li> </xsl:template>

Bernd Amann - CNAM, Paris

Afcher XML: Feuilles de Style XSL

121

Officiel XSL film film B Brazil LI

OL

LI

- 1986

B Matrix

- 1999

titre Brazil

anne 1986

titre Matrix

anne 1999

Linarisation

<OL><LI><B>Brazil</B>- 1986</LI><LI><B>Matrix</B>- 1999</LI></OL>

Bernd Amann - CNAM, Paris

Afcher XML: Feuilles de Style XSL

122

Rgles XSL : Modle de Traitement

Une liste de noeuds (contexte) est traite pour crer un fragment rsultat

Pour chaque noeud, on : slectionne le motif qui correspond au noeud, value le constructeur (rcursivement), ajoute le fragment gnr pour chaque noeud dans le rsultat

Bernd Amann - CNAM, Paris

Afcher XML: Feuilles de Style XSL

123

Rgles XSL : Rcursion innie


Problme : bien que XSL travaille sur des arbres (sans cycles) il est possible de crer des boucles innies (goto) : <xsl:template match="/"> <xsl:apply-templates select="/"> <xsl:template>

Bernd Amann - CNAM, Paris

Afcher XML: Feuilles de Style XSL

124

Rsolution de conits: Exemple


Cinmas parisien en gras avec la rue et autres cinmas avec le nom de la ville (XML, XSL, rsultat dynamique, rsultat stock) <xsl:template match=cinema[normalize-space(adresse/ville)="Paris"]> <li><B><xsl:value-of select=nom/></B> (<xsl:value-of select=adresse/rue/>)</li> </xsl:template> <xsl:template match=cinema> <li><I><xsl:value-of select=nom/></I> (<xsl:value-of select=adresse/ville/>)</li> </xsl:template>

Bernd Amann - CNAM, Paris

Afcher XML: Feuilles de Style XSL

125

Rsolution de conits

Motif Noeuds et attributs non-qualis

Priorit par defaut 0 -0.25 -0.5 0.5

qualie (par un domaine nominal) non-quali autre

Attribut priority pour les rgles

Les motifs imports sont ignors en faveur de motifs locaux

Une rgle avec plusieurs alternatives ( dans le motif) est traduit en un ensemble de rgles

Sil restent plusieurs rgles possibles : message derreur ou choix dans lordre inverse des dclarations des rgles (?)

Bernd Amann - CNAM, Paris

Afcher XML: Feuilles de Style XSL

126

Selection de Rgles: Modes


Lattribut mode permet de choisir une rgle explicitement. Lexpression suivante choisit la deuxime rgle ( XML, XSL, rsultat dynamique, rsultat stock): <xsl:apply-templates select=//film[@film_id=$ref]/titre mode=crossref/> <xsl:template match="film/titre"> <B><xsl:value-of select=./></B> </xsl:template> <xsl:template match="film/titre" mode=crossref> <I><xsl:value-of select=./></I> </xsl:template>

Bernd Amann - CNAM, Paris

Afcher XML: Feuilles de Style XSL

127

Rgle = Procdure avec Paramtres


La liste des cinmas ( XML, XSL, rsultat dynamique, rsultat stock): <xsl:template match=cinema> <xsl:call-template name=displaycinema> <xsl:with-param name=nom> <xsl:value-of select=nom/> </xsl:with-param> </xsl:call-template> </xsl:template> <xsl:template name=displaycinema> <xsl:param name=nom>Nom inconnu</xsl:param> <li><I><xsl:value-of select=$nom/></I></li> </xsl:template>

Bernd Amann - CNAM, Paris

Afcher XML: Feuilles de Style XSL

128

Structures de controle: for-each, if, choose


La liste des cinmas ( XML, XSL, rsultat dynamique, rsultat stock): <xsl:template match="//Officiel"> <HTML><BODY><H1> La liste des cinmas</H1><ol> <xsl:for-each select=cinema> <li><xsl:choose> <xsl:when test=normalize-space(adresse/ville)="Paris"> <b><xsl:value-of select=nom/></b> (<xsl:value-of select=adresse/rue/>) </xsl:when> <xsl:otherwise> <I><xsl:value-of select=nom/></I> (<xsl:value-of select=adresse/ville/>) </xsl:otherwise> </xsl:choose></li> </xsl:for-each></ol> </BODY></HTML> </xsl:template>

Bernd Amann - CNAM, Paris

Afcher XML: Feuilles de Style XSL

129

Trier
Cinmas par ordre alphabtique (XML, XSL, rsultat dynamique, rsultat stock): <xsl:apply-templates select="cinema"> <xsl:sort data-type="text" select=nom order =ascending/> </xsl:apply-templates>

Bernd Amann - CNAM, Paris

Afcher XML: Feuilles de Style XSL

130

Cls
Les cls sont une

gnralisation du mechanisme ID/IDREF, et permettent un

accs rapide

XML, Feuille de Style XSL, rsultat dynamique, rsultat stock : <xsl:key name=filmkey match=//film use=@film_id/> ... <xsl:variable name=ref select=key("filmkey",string(@ref_film))/> <xsl:choose> <xsl:when test="$ref"> <A href=#film{@ref_film}> <xsl:apply-templates select=$ref mode=crossref/> </A> </xsl:when> <xsl:otherwise><b>Film inconnu</b></xsl:otherwise> </xsl:choose>

Bernd Amann - CNAM, Paris

Afcher XML: Feuilles de Style XSL

131

Gnration dIdenticateurs dObjets


Cration de liens HTML (XML, XSL, rsultat dynamique, rsultat stock): <xsl:for-each select="//cinema"> <a href="#{generate-id(.)}"><xsl:value-of select="nom"/></a> </xsl:for-each> ... <xsl:template match=cinema> <a name="{generate-id(.)}"/> ....

Bernd Amann - CNAM, Paris

Afcher XML: Feuilles de Style XSL

132

Objets de Formatage (FO): Exemple PDF

XML

Feuille de Style XSL

Rsultat Dynamique

Rsultat Stock PDF

Bernd Amann - CNAM, Paris

Afcher XML: Feuilles de Style XSL

133

XML-QL : Un langage de requtes pour XML

Bernd Amann - CNAM, Paris

Interrogation de XML

134

XML-QL

Proposition Workshop W3C, WWW99, Logiciel

Syntaxe XML

Expressions de chemins et motifs

Templates pour la construction du rsultat

Complet dans le sens relationnel (algbre/calcul)

Modle de donnes : graphe avec tiquettes sur les arcs (XML : noeuds tiquets)

Autres langages: XQL, Quilt

Bernd Amann - CNAM, Paris

Interrogation de XML

135

Exemple
Les lms quon peut voir lOdon : where <cinema> <nom> Odon </nom> <seance><film> $T </film> </seance> </cinema> in www.officiel.com/cinemas.xml construct $T Rsultat nest pas bien-form.

Bernd Amann - CNAM, Paris

Interrogation de XML

136

Construction de rsultats
Les cinmas, sances et les lms (relation) : <answer> where <cinema> <nom> $N </> <seance heure=$H> <film> $T </> </seance></cinema> in www.officiel.com/cinemas.xml construct <result> <cinema> $N </> <heure> $H </> <film> $T </> </result> </answer> Transformation de lattribut heure en lment.

Bernd Amann - CNAM, Paris

Interrogation de XML

137

Requtes imbriques : lments optionnels


Les lms avec lheure de prsentation (si connue): <answer> where <cinema> <nom> Odon </> <seance> $S </> </cinema> in www.officiel.com/cinemas.xml, <film> $T </> in $S construct <result> <film> $T </> where <heure> $H$ in $S construct <date> $H </> </result> </answer>

Bernd Amann - CNAM, Paris

Interrogation de XML

138

Requtes imbriques : Regroupement


Chaque lm avec les cinmas o on peut le voir : <answer> where <film> $F </> </film> in www.officiel.com/cinemas.xml, construct <film> $F where <cinema> <nom> $N </> <seance> <film> $F </> </> </cinema> in www.officiel.com/cinemas.xml construct <cinema> $N </cinema> </film> </answer>

Bernd Amann - CNAM, Paris

Interrogation de XML

139

Syntactic Sugaring

where <tag>...</tag> element_as $B in URL construct ... $B est affect par le noeud <tag> ... where <tag> ... </tag> content_as $B in URL construct ... $B est affect par le contenu du noeud <tag> ... <tag> <tag>

Bernd Amann - CNAM, Paris

Interrogation de XML

140

Jointures
Les cinmas qui montrent le mme lm que lOdon : where <cinema> <nom> Odeon </> <seance> <film> $T </> </> </cinema> content_as C1, <cinema> <nom> $N </> <seance> <film> $T </> </> </cinema> content_as C2 in www.officiel.com/cinemas.xml, C1 <> C2 construct <cinema> $N </cinema>

Bernd Amann - CNAM, Paris

Interrogation de XML

141

Interrogation du schma
Les lments avec un attribut id = &123 : <answer> where <$E id = &123> $C </> construct <$E> $C </> </answer>

Bernd Amann - CNAM, Paris

Interrogation de XML

142

Expressions rgulires
Les descendants de Charlemagne : <answer> where <personne><nom|name> $N </> <(enfant|child)*> $E </> </personne> construct <descendant> $E </> </answer> Ne pas confondre avec la smantique horizontale de (enfant|child)* dans une DTD.

Bernd Amann - CNAM, Paris

Interrogation de XML

143

Integration
Les lms avec les cinmas et les critiques : where <film><titre> $T </> <critique> $C </></> in www.cahier.com/films.xml construct <film><titre> $T </> <critique> $C </> ( where <cinema> <nom> $N </> <seance> <film> $T </> </> </> in www.officiel.com/cinemas.xml construct <cinema> $N </>) </film>

Bernd Amann - CNAM, Paris

Interrogation de XML

144

Integration: Fonctions de Skolem


Les lms avec les cinmas et les critiques : {where <film><titre>$T</> <critique> $C </> </> in www.cahier.com/films.xml construct <film ID=filmid($T)> <titre> $T </> <critique> $C </> </film> } {where <cinema> <nom> $N </> <seance> <film> $T </> </> </> in www.officiel.com/cinemas.xml construct <film ID=filmid($T)><cinema> $N </></> }

Bernd Amann - CNAM, Paris

Interrogation de XML

145

Ordre
Deux smantiques :

modle sans ordre

modle avec ordre : le ltrage (pattern matching) dans la clause where est fait sans ordre le rsultat (clause construct) est tri par rapport lordre dans le motif de la clause where

Bernd Amann - CNAM, Paris

Interrogation de XML

146

Ordre : Exemple

where <a><b> $B </b><c> $C </c></a> construct <b> $B </b><c> $C </c>

Document : <a><b>b1<b><c>c1</c><b>b2</b><b>b3</b><c>c2</c>

Rsultat : <b>b1</b><c>c1</c> <b>b1</b><c>c2</c> <b>b2</b><c>c1</c> <b>b2</b><c>c2</c> <b>b3</b><c>c1</c> <b>b3</b><c>c2</c>