Vous êtes sur la page 1sur 81

Introduction XML

Pr. Rachida AJHOUN Juin 2005

Objectif
Pourquoi XML ? Savoir utiliser les outils associs quelles circonstances puis-je lutiliser? Comment concevoir et dvelopper une application en utilisant la technologie XML

XML dcrit les donnes


XML : eXtensible Markup Language permet de
dcrire les informations de faon :
les prsenter les transmettre les transformer

Le domaine d'application de XML va de l'change


de documents la gestion de contenu, le commerce lectronique ou mme l'interoprabilit de systmes d'information htrognes.

Historique
SGML: Standard Generalized Markup Language
(ISO 8879), 1974
Description de la structure dun type de document Les documents de ce type respecte la structure

DSSSL: Document Style Semantics and


Specification Language

SPDL: Standard Page Description Langage


Formatage des documents SGML +(DSSSL)

Feuille de style est associe un type de document

Historique
Diffusion du Web (1990) Web volue et HTML montre ses limites Utiliser la technologie pour dautres fins Janvier 1998, adoption de la premire
version de XML par le W3C
Naissance de XML (1997) Faciliter laccs linformation Naissance de HTML

HTML vs XML
Document HTML: les informations sur un livre
<BODY> <UL> <LI> XML: le guide de lutilisateur </LI> <LI> E.R.Harold </LI> <LI> Eyrolles </LI> <LI> 1999 </ LI> </UL> </BODY>
6

HTML vs XML
Document XML

<titre> XML: le guide de lutilisateur </titre> <auteur> E.R.Harold </auteur> <dition> Eyrolles </dition> <annee> 1999 </annee>
lLisibilit:

donnes auto-documentes entre linformation et la prsentation lTraitement par dautres applications


lSparation
7

En quelques mots
HTML possde un jeu de balises fixes XML n'a pas de balises prdfinies mais permet
de se dfinir ses propres balises. HTML mlange le contenu et la prsentation (amliorations possibles cependant avec CSS) Des liens trop simples XML ne dcrit que du contenu pur Pour la prsentation on pourra utiliser du XSL ou gnrer du HTML+CSS grce des outils comme XSLT

Aperu gnral
Que signifie XML ?
eXtensible: une infinit de balises; Markup: identifier les # lments dun document au moyen de balises; Language: respecter un certain nombre de rgles.

XML est un meta-langage de description XML dcrit la structure et la smantique, par


laspect

XML est une collection de spcifications


XML est en fait une collection de spcifications et de
"vocabulaires" associs, bass sur la mme syntaxe. Les trois parties les plus importantes sont les suivantes :
XML 1.0 Recommendation - c'est la spcification de base du langage extensible de balisage XML qui dcrit en dtail la synta xe du mta-langage XML Linking Language (XLink) et XPointer - ces deux documents du W3C dcrivent diffrentes faons, assez complexes, d'exprimer les schmas de relations entre documents et sections de documents; Extensible Style Language (XSL) - XSL dcrit comment les documents XML peuvent tre prsents sur diffrents priphriques d'affichage et plus gnralement transforms
10

Cycle de vie dun document XML

XSL

XML transform

Navigateur

XML B.F. & valide

CSS

HTML

Autres applications
API Text/pdf

Transformation

Rsultat

Utilisation
11

Structure dun document XML

12

<?xml version="1.0" encoding ="UTF -8"?> <!DOCTYPE parc-machine SYSTEM "comp.dtd "> <?xml-stylesheet type="text/xml" href="comp .xsl"?>

Prologue Type de doc. IT Commentaire

<!-- ce document decrit le parc-machine --> <parc-machine> <machine idf="mach001"> <modele>HP-PC</modele> <service>23/02/2000</service> <ip>212.217.30.100</ip> <systeme> <nom>Windows</nom> <version>2000Profesional</version> </systeme> <ram unite="Mo">256 </ram> <disque unite="G0">20</disque> <processeur>Intel PentiumIII</processeur> <horloge>700Mhz</horloge> <administrateur src="photo.jpg"> F. H.</administrateur> </machine> <machine> .. </machine> </parc-machine>

Les lments

13

Composantes dun document XML


Prologue: Une dclaration dun document XML l Instructions de traitements: fournissent de linformation une application XML l Dfinition optionnelle de type de document l Rfrences aux entits l lments du document l Commentaires (facultatif)
l

N.B: un document XML a lextension .xml


14

Prologue
<?xml version="1.0" encoding="UTF-8"?>

Version="1.0" : version de la spcification XML utilise. Encoding="UTF-8": le jeu de caractres utilis


<?xml version="1.0" encoding="UTF-8" standalone="no"?>

Standalone: indiquant la prsence de dclaration externes ncessaires au traitement du document

15

Elments

Composantes de base dun document XML Identifis par un nom Un nom XML valide est compos de chiffres, lettres,

tirets, blancs souligns, deux points et un point. Un nom XML doit commencer par une lettre ou un blanc soulign Contenu:
Textuel: <nom>Windows</nom> lments: <systeme> <nom>Windows< /nom>
</systeme> Une hirarchie dlments <version>2000Profesional< /version>

Mixte: textuel + lments Vide: <ip/> Rfrences des entits, des sections littrales et des 16 IT

Principe de balisage
Mcanisme pour :
Reprer des lments dans un texte Structurer Rappeler le type dun lment

Balisage redondant:
Tout lment est prcde dune balise de dbut <titre> Suivi dune balise de fin </titre>
17

Les balises

Servent dcrire un lment


<nom>Windows</nom>

Toute balise rencontr est analyse


Contrairement HTML qui ignore les balises non valides

Les balises XML sont sensibles la


casse
Contrairement HTML

18

Attributs

contient des informations sur llment = paires nom/valeur associes un lment


<ram UNITE="Mo" >256 </ram>

Un lment peut avoir plusieurs


attributs
<auteur NE="1910" MORT="2000 ">

les valeurs dattributs:

Un nombre, une chane de caractres, une adresse,

Attributs prdfinis: xml:lang, xml:space


19

Les rgles syntaxiques du langage XML


R1: le document doit commencer par une dclaration
XML R2: attention la capitalisation des noms et des attributs R3: les valeurs des attributs doivent tre quottes " " R4: les balises non vides doivent tre apparies R5: les balises vides doivent tre fermes R6: les lments ne doivent pas se chevaucher R7: un lment principal doit enfermer tous les autres R8: ne pas utiliser les caractres < et & seuls
20

10

Analyseur
Gnralits
XML permet de dfinir la structure du document Cela permet de :
dfinir sparment la prsentation de ce document, de rcuprer les donnes prsentes pour les utiliser.

La rcupration des donnes dfinies dans le


document ncessite un outil appel analyseur syntaxique (parser),

21

Analyseur
Qu'appelle-t-on un analyseur ?
L'analyseur syntaxique est un outil permettant de parcourir un document et d'en extraire des informations. Dans le cas de XML (parseur XML), l'analyseur permet de crer une structure hirarchique contenant les donnes du document XML. On distingue deux types de parseurs XML : les parseurs validants permettant de vrifier qu'un document XML est
conforme sa DTD ou schema les parseurs non validants se contentant de vrifier que le document XML est bien form (c'est--dire respectant la syntaxe XML de base)

22

11

Analyseur
Les analyseurs XML sont galement diviss selon l'approche
qu'ils utilisent pour traiter le document. Deux types d'approches : Hirarchique : les analyseurs utilisant cette technique construisent une structure hirarchique contenant des objets reprsentant les lments du document, dont les mthodes permettent d'accder aux proprits. La principale API utilisant cette approche est DOM (Document Object Model) Base sur un mode vnementiel permettent de ragir des vnements (comme le dbut d'un lment, la fin d'un lment) et de renvoyer le rsultat l'application. SAX (Simple API for XML) est la principale API utilisant l'aspect vnementiel
23

Exemples des parseurs


Parseur IE (Microsoft): intgrer au navigateur
IE5.5

Xerces (Apache):

http://msdn.microsoft.com/downloads/default.asp open source, Ecrit en Java, C++, Perl http://xml.apache.org crit en C ftp://ftp.jclark.com/xml/expat.html
24

Expat (James Clark):

12

Entits Les lments contenus dans la racine peuvent


provenir de sources (fichiers, SGBD,) Les units de stockage pour les composants du document sont des entits Llment racine et ses sous-lments peuvent contenir des rfrences dautres entits. Le processeur XML regroupe toutes les entits formant le document pour un traitement de lensemble
25

Entits Entits se subdivisent en deux catgories:


Analysables: contiennent un texte XML bien form Non-analysables: contiennent du texte nonXML ou des donnes binaires.
Internes : dfinies dans lentit document elle-mme Externes: elles dpendent dune source de donnes externe au document XML

Ils sont de deux types:

26

13

Entits internes
Entit interne correspond une version abrg
dun texte long ou difficile saisir
<!ENTITY nom "texte associ" >

Exemple: <!ENTITY email "NOM@ufr.ac.ma" >

La rfrence se fait par le prfixe & et en rajoutant la fin du nom un point-virgule : &email;

Entits prdfinies: lt, gt, amp, apos et quot


reprsentent respectivement les caractres <, >, &, ", '.

27

Entits externes

Entits externes sont dfinies lintrieur de


la DTD au moyen de la dclaration <!ENTITY.>
<!ENTITY nom SYSTEM "URI">

Exemple:
<!DOCTYPE parc- machine [ <!ENTITY lab01 SYSTEM "http://www.ufr.ma/lab01.xml" > ]>

Une rfrence lentit lab01 linclusion du


fichier lab01.xml dans le document principal. La rfrence : &lab01; 28

14

Section CDATA: section littrale


CDATA signifie "Character data" = donnes
textuelles Intrt: Insrer du texte non interprt par le processeur XML
Exemple de codes XML
<! [CDATA [ Texte non analys, ]]>

La syntaxe:

Note: on ne peut pas imbriquer deux sections CDATA


29

Entits non-XML

Dclaration du format de lentit: NOTATION Rfrence se fait dans une valeur


dattribut Exemple:
<!DOCTYPE exemple [ <! NOTATION vrml SYSTEM " /usr/local/bin/cosmo"> <!ENTITY labyrinthe SYSTEM " ./modeles/lab.vrml" NDATA vrml > ]> <exemple> <graph3D att=labyrinthe/> </exemple>

30

15

Instructions de traitement

Insrer des informations non destines un

processeur XML dans un document XML; Encadre des caractres <? et ?> Une IT peut apparatre nimporte o dans le document XML, sauf dans une balise ou une section CDATA

31

Rfrence la feuille de style


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

La feuille de style XSL est rfrence par le URL


en utilisant lattribut href Un processeur XSL sur le client ou le serveur reoit les documents XML et XSL en entre et gnre le document de sortie (HTML, XML modifi,)

32

16

Document bien form et valide

Il existe deux types de document XML


langage XML Valide: bien form + conforme une grammaire (DTD ou schma)

Bien form: respecte les rgles syntaxiques du

33

Dclaration de type de document

Dclaration de type de document: Cette dclaration contient la DTD (DTD


interne) ou une adresse URL (DTD externe) DTD interne:
<!DOCTYPE parc-machine [ <! declarations -- > ]> <!DOCTYPE ElementRacine Et se termine par >

34

17

Dclaration de type de document

DTD externe:
DTD prive:
<!DOCTYPE ElementRacine SYSTEM "URLDTD">
Ex: <!DOCTYPE parc-machines SYSTEM "http://www.ufr.ac.ma/dtd/parc. dtd">

DTD publique:
<!DOCTYPE ElementRacine PUBLIC "NomDTD" "URLDTD"> Exemple de noms de DTD (URN) : //W3C//DTD XHTML 1.0 Strict//EN

35

Espaces de noms
Problme: des noms dlments ou des noms
De mlanger du vocabulaire XML provenant de plusieurs
grammaires

dattributs identiques ambiguts Les espaces de noms (namespaces) permettent:


Didentifier de manire unique les balises XML

Recommandation: www.w3.org/TR/REC-xmlnames

36

18

Espaces de noms

La dfinition dun espace de noms peut se

faire dans nimporte quelle balise ouvrante dlments dun document XML Syntaxe: xmlns:prefixe= URI Exemple : xmlns:reseau=
"http://www.ufr.com/xml/reseau"

37

Liens en XML

38

19

Introduction
Un lien exprime une relation entre des ressources XLink et XPointer proposent une structure
gnralis, efficace et compacte, pour reprsenter des liens internes ou externes un document XLink se limite la dfinition abstraite des ressources, units dinformation ou de service adressables par un lien. XPointer introduit des mthodes sophistiques pour localiser les ressources Spcifications de XLink : Juin 2001 Specifications de Xpointer: Dcembre 2002
39

XLink
Xlink propose deux types de liens: simples et
tendus Le lien simple introduit une relation entre deux ressources, le texte contenant le lien en question et sa destination. Le lien tendu permet de dfinir des liens plus complexes (pointant vers des ressources multiples, relation entre les liens) Espace de noms: http://www.w3.org/1999/xlink

40

20

Exemple: liens simples


<article xmlns:xlink="http://www.w3.org/1999/xlink" > <titre> initiation a XML </titre> <auteur xlink:href= auteurHome.xml" xlink:type="simple" xlink:show="replace" xlink:actuate="OnRequest" xlink:title="Homepage">nom prenom</auteur> ... <texte> <image> <img src="photo.gif" xlink:href="Details.xml" xlink:type="simple" xlink:show="replace" xlink:actuate="OnRequest" xlink:title="details" /> </image> </texte> </article>
41

Attribut xlink:type

Valeurs possibles simple

Signification

xlink:href une URL new replace


xlink:show

destination (unique) du lien le document destination apparatra dans une nouvelle fentre le document destination apparatra dans la mme fentre que le document courant (comportement similaire aux liens HTML) le document destination apparatra dans le document courant, la place de l'lment constituant le lien (comportement similaire aux balises HTML <img> et <object >) l'application traitant le document choisira le traitement appropri le document destination apparatra ds le chargement du document courant (comportement similaire aux balises HTML <img> et <object >) le document destination apparatra quand l'utilisateur activera le lien (gnralement en "cliquant" dessus) l'application traitant le document choisira le moment appropri le texte fourni pourra servir d'indice supplmentaire, par exemple en tant affich quand la souris se trouve sur l'lment contenant le lien
42

embed undefined onLoad


xlink :actuate

onRequest undefined

xlink:title

une chane de caractres

21

XLink: Liens tendus


associent un nombre arbitraire de ressources la dfinition d'un lien tendu peut se faire dans un

fichier spar des ressources qu'il associe. dans un lien tendu, la dsignation de l'emplacement des ressources est spar du mcanisme de "traverse" un lien tendu est compos des lments suivants:

localisation des ressources distances (lments de type locator) mcanisme de traverse (lments de type arc) tiquetage pour faciliter l'utilisation du lien par une personne ressources locales associes par le lien (lments de type
(lments de type title) resource)

un lien tendu est dfini sur n'importe quel lment XML


auquel on rajoute l'attribut xlink:type="extended"
43

Attribut
xlink:type

Valeur extended

Signification dfinition de l'lment englobant formant un lien tendu adresse d'un document dcrivant le rle du lien tendu (le lien tendu, comme n'importe quel autre lment d'un document XML, peut tre considr comme une ressource composant un autre lien tendu) donne un commentaire sur le lien tendu dans son ensemble

xlink:role

URI une chane de caractres

xlink:title

44

22

Attribut
xlink:type (obligatoire ) xlink:href (obligatoire ) xlink:label

Valeur
Locator

Signification
dfinition d'un sous-lment dun lien tendu. Ce sous-lment sert dfinir un point d'attache (point de dpart ou d'arrive ) pour les arcs du lien emplacement d'une ressource externe; peut dsigner un fragment d'un document XML (en utilisant XPointer)

Un URL

identificateur

l'identificateur utilis ici peut tre utilis comme valeur de l'attribut xlink:from ou xlink :to d'un autre lment pour crer un arc entre l'lment courant et cet autre lment URL renvoie une ressource exploitable par lapplication pour dterminer le rle de la ressource donne un commentaire sur la ressource externe dsigne par l'lment courant

Xlink:role

Un URL

Xlink:title

une chane de caractres

45

Attribut
xlink:type (obligatoire ) xlink:from arc

Valeur

Signification
tablissement dun arc entre deux des ressources associes au lien tendu, lune constituant le point de dpart et lautre le point darrive l'identificateur utilis ici doit tre dfini dans un autre lment laide de lattribut xlink:label. Il indique alors que cet autre lment est le point de dpart de larc spcifie par llment courant l'identificateur utilis ici doit tre dfini dans un autre lment laide de lattribut xlink:label. Il indique alors que cet autre lment est le point darrive de larc spcifie par llment courant Idem liens simples Idem liens simples

xlink:to

Xlink:show Xlink:actuat e Xlink:title Xlink:arcrol e une chane de caractres Un URL

Idem liens simples Renvoie une ressource exploitable par lapplication pour dterminer le rle de larc

46

23

Attribut
xlink:type (obligatoire ) xlink:label

Valeur
ressource identificateur

Signification
dfinition d'une ressource locale englobe dans le lien tendu l'identificateur utilis ici peut tre employ comme valeur de l'attribut xlink:from ou xlink :to d'un autre lment pour crer un arc entre l'lment courant et cet autre lment URL renvoie une ressource exploitable par lapplication pour dterminer le rle de la ressource donne un commentaire sur la ressource externe dsigne par l'lment courant

Xlink:role Xlink:title

URL Une chane de caractres

Attribut
xlink:type (obligatoire )

Valeur
titre

Signification
Le contenu de cet lment peut servir la place de lattribut xlink:title de llment englobant, permettant ainsi de ne pas tre limit du texte simple. Plusieurs lments de ce type peuvent tre prsents dans le mme lment englobant, par exemple pour fourni r des traductions dans diffrentes langues du mme contenu. 47

Exemple
La photo de l'article pris comme exemple prcdemment pourrait avoir un lien tendu qui permettra d'accder plein d'informations diffrentes la concernant (photographe, date de prise, agrandissement, copyright, etc.)
<image xlink:type="extended" xlink:title="informations disponibles" > <img src="..." xlink:type=" resource" xlink:role="depart " /> <res xlink:type=" locator" xlink:href="..." xlink:role="photographe" /> <res xlink:type=" locator" xlink:href="DetailsPhoto382.xml#DatePrise" xlink:role="date" /> <res xlink:type=" locator" xlink:href="Photo382Big.jpg" xlink:role="agrandissement" /> <res xlink:type=" locator" xlink:href="Copyright.xml" xlink:role="copyright" /> <vers xlink:type="arc" xlink:from="depart" xlink:to="photographe" xlink:title="prise par" xlink:show="new" xlink:actuate="onRequest " /> <vers xlink:type="arc" xlink:from="depart" xlink:to="date" xlink:title="date de la prise" xlink:show="embed" xlink:actuate="onLoad" /> <vers xlink:type="arc" xlink:from="depart" xlink:to="copyright" "xlink:title="" xlink:show="replace" xlink:actuate="onRequest" /> <vers xlink:type="arc" xlink:from="depart" xlink:to="agrandissement" xlink:title="version 1280x1024 pixels" xlink:show="replace" xlink:actuate="onRequest" /> </image>
48

24

CSS Cascading Style Sheet


Pr. Rachida Ajhoun

49

Feuilles de style
Style est un ensemble de caractristiques principalement
visuelles, qui peut sappliquer une balise (HTML ou XML) de faon modifier lapparence visuelle de cette balise Feuille de style:
Une liste de rgles. Chaque rgle dcrit les lments du document auxquels elle sapplique. sparer le style d'un document de son contenu

Sans modifications, un mme document peut tre prsent


de diffrentes faons :
Selon le lecteur Selon les caractristiques de l'appareil de restitution

50

25

CSS
Le W3C a cre un groupe de travail feuille de style
pour grer les problmes spcifiques la prsentation
Rpondre aux insuffisances de HTML

CSS- Cascading Style Sheet :1995 Peut tre associ avec plusieurs langages de
description de contenu: HTML, XML http://www.w3.org/TR/#Recommendations

51

Intgration des feuilles de styles CSS


Association feuille de style et document XML:
<?xml version="1.0"?> <?xml-stylesheet type="text/css" href="URIcss.css"?> <racine> </racine>

La directive @import
Permet dimporter une feuille CSS dans une autre feuille CSS Ex: @import url (http://www.w3.org/basicstyle.css)

52

26

CSS - Principes
Une feuille de style CSS est un ensemble de
rgles. Chaque rgle est constitue de:

les commentaires CSS ont le mme format que


les commentaires du langage C:
/* ceci est un commentaire */

Slecteur {proprit: valeur; proprit: valeur;}

53

Slecteurs CSS
Rgles de style simple Slecteurs contextuels
lment+ {proprit:valeur +} Permettent de slectionner des lments par rapport leur contexte de situation (lien de parent)
Livre titre {font-size: 14pt}

54

27

Slecteurs CSS
Pseudo-lments
ne correspondent pas des lments mais des
rgions du document qui ont besoin un formatage particulier: first-line: la premire ligne dun document first-letter: la premire lettre dun lment CSS2 rajoute des nouveaux pseudo-lments comme : first-child, lang, first, left, right,..

55

Slecteurs CSS
Slection par identificateur
Permet de slectionner un seul lment dans le document machine#mach010 {font-weight: bold}

Classes dlments
Permettent de slectionner un nb limit dlments de mme classe (pas tous). livre.second {color: blue} <livre CLASS="second", .>

56

28

rsolution des conflits


Les principales rgles de priorit sont:
Rgle 1: les rgles du rdacteur ont priorit sur celles du lecteur: CSS1 Rgle 2: les rgles du lecteur ont priorit sur celles du rdacteur si une dclaration !important est associ la proprit concern cot lecteur. Titre {color:red !important font-size:14pt} Rgle 3: lorsque plusieurs rgles sont en comptition, la rgle la plus spcifique est prioritaire Rgle 4: lorsque plusieurs rgles avec un mme degr de spcification sont en comptition, la dernire rgle est utilise 57

Les proprits
Chaque proprit de style est compose de
Un nom: mot rserv (font-size, color, display,) des valeurs: plusieurs possibilits (12pt, 75%, blue ou #CC0033, block,) 1. Un nom et une valeur:
titre {color: red} texte {background: blue; color: yellow}

2.

Certains proprits attendent plusieurs valeurs:


CD {display: block; padding: 1cm 1cm 1cm 1cm}

3. Certaines proprits acceptent une valeur prise dans une liste de valeurs possibles
titre {font-family: Helvetica, times }
58

29

Les valeurs de proprits


Une valeur de proprit peut concerner
Une mesure Une adresse URL, absolue ou relative Un code de couleur Un mot rserv (none, italic, serif,)

59

Les units de mesure disponibles avec CSS:


absolue :
unit points picas Centimtres pouces millimtres Abrviation pt pc cm in mm exemple font -size:12pt text -indent :2pc text -indent :4cm text -indent :1in text -indent :10mm

Valeurs de mesure

relative :
em: text -indent:4em ex: line-heigh:3e x px: text -indent: 30p x % : font-size :90%
60

30

Les valeurs de couleurs


Sappliquent :color, background-color et border-color Les valeurs de ces proprits peuvent tre identifies de 2
manires: Par nom: il existe 16 noms de couleurs prdfinis aqua, black, blue, ,white, yellow Par les composants RGB de la couleur (3 formes)
Couleur Rouge primaire Bleu primaire Vert primaire Blanc RGB en dcimal Rgb(255,0,0) Rgb(0,0,255) Rgb(0,255,0) Rgb(255,255,255 ) RGB en hexa #FF 0000 #0000FF #00FF 00 #FFFFFF RGB en % Rgb (100% ,0% ,0% ) Rgb(100% ,0% , 0% ) Rgb(100% ,0% , 0% ) Rgb(100% ,0% , 0% )

61

Les autre valeurs


Adresse URL
Certains proprits (background-image, list-styleimages, list-style) acceptent des valeurs de type URL
Catalog {background-image: url ("http://www.test.com/images/livre.gif")}

Les mots rservs


De nombreuses proprits CSS attendent une valeur exprime sous la forme de un ou plusieurs mots rservs.
p {display:block; border-left-style: dashed}

62

31

Classifications
La proprit display permet de dterminer le
type dun lment. Elle peut prendre les 4 valeurs (pour le CSS1):
Block: les lments sont spars entre eux par un saut

de ligne Inline: les lments ne sont pas spars du reste du texte List-item: les lments sont de type block auxquels sont associs des symboles dnumration None: pas de visualisation. Utile pour les metainformations
63

Liste dlments
Les proprits permettent de contrler le formatage des lments de la liste. list-style-type: le type de puce. 9 valeurs sont possibles
Disc (par defaut), circle, square, decimal, lower-roman, upperroman, lower-alpha, upper-alpha, none

list-style-image: permet de choisir une image de type


bitmap comme puce. list-style-position: permet de contrler la position du texte par rapport la puce. list-style: offre un raccourci permettant linitialisation simultane des 3 proprits prcdentes.

64

32

La gestion des espaces


Les proprits lies la gestion des
espaces
white-space: Les valeurs possibles sont: normal: tous les espaces successifs sont ramens
un blanc, les sauts de ligne sont ignors et ils ne sont utiliss que lorsque toute la largeur de la page est prise pre: tous les espaces sont reproduits tels quels nowrap: les espaces successifs sont ramens un blanc, les sauts de lignes sont, eux, pris en compte

65

Les proprit darrire-plan


Les proprits darrire plan ne sont pas
hrites Les 5 proprits darrire plan sont
Background-image Background-color Background-attachement Background-position: Background-repeat:
Repeat (defaut), repeat-x (horizontal), repeat-y (vertical), no-repeat.
66

1. 2. 3. 4. 5.

33

Les proprits de police


CSS1 gre 5 proprits de base pour les polices
1. font-family:
(times, Courrier,) normal, italic, oblique normal (par dfaut), small-caps

2. font-style: 3. font-variant:

4. font-size: 5. font-weight:
bold, bolder, lighter, 100 (trs maigre), 200, ., 900 (trs gras)

67

Les proprits de texte


word-spacing letter-spacing text-decoration: vertical-align:

underline, overline, link-through, blink et none. baseline (par dfaut), sub, super, top, text-top,
middle, bottom et text-bottom. Ou utiliser un pourcentage / la position de base.

68

34

Les proprits de texte


text-transform text-align
none (par default), capitalize (en majuscule la 1re lettre de
tous les mots dune phrase), uppercase, lowercase.

text-indent line-height

left (par defaut), right, center, justify.

69

Les botes

70

35

Les boites
Les marges:margin Lespacement externes: padding Les tailles des boites
Idem que pour les marges width et height: en absolu ou relatif Margin-top, margin-bottom, margin-left, marginright

71

Les boites
Les bordures des boites
Par dfaut les bordures sont invisibles La proprit border-style: none, dotted, dashed, solid, double, groove, ridge,
inset et outset

La proprit border-width : thin, medium et thick

72

36

Les boites
Les bordures des boites (suite)
La proprit border-color Les proprits border = initialisation simultane des diffrentes proprits pour les diffrentes bordures (border-top, border-right, border-bottom, borderleft)

73

Les boites
Les proprits float et clear
float permet de prciser comment se positionne llment / texte qui coule autour none: boite et texte qui suit indpendants left, right: le texte qui suit coule autour de la boite clear permet de contrler les conditions de voisinage entre lments None: valeur par dfaut Left, right, both

74

37

Les proprits de contrle du pointeur de la souris


la proprit cursor
les valeurs sont possibles: auto: le choix est laiss au browser Crosshair, Default, hand, move, e-resize, ne-resize, nw-

resize, se-resize, sw-resize, s-resize, w-resize Text, wait, help

75

Exemple
document {display: block; font-family: Courrier; font-size: 30pt; backgroundimage: url("css.gif")} titre {display: block; font-weight:bold; color:blue; text-align:center} titreparagraphe {display: block; color: red; font-size: 75%;font-weight:bold} sousparagraphe titreparagraphe {display: block; color: green; font-size: 60%; font-weight:bold} contenu {display: block; font-size: 50%; text-align:justify}
76

38

XSL eXtensible Style language


Pr. Rachida AJHOUN

77

Introduction
Les multiples cas de transformation
Formatage Rutilisation de document Adaptation aux appareils de prsentation Conversion de format, par exemple XML vers HTML,text, pdf,

78

39

XSL
XSL (eXtensible Style Language) est
constitu de deux langages:
Un langage de transformation XSLT Un langage de formatage XSL-FO

Ces deux langages sont des applications


XML

79

XSLT
XSL Transformation
XSLT 1.0 Novembre 1999 Permet de transformer un document XML gnrique en un document XML spcifique Sadapte au profil de lutilisateur Degr de confidentialit, langue, prcision, intrts
diffrents,

Sadapte lenvironnement
Type du navigateur, document multimdia,

Utilise Xpath pour reprer et manipuler des portions de documents


XML

80

40

XSLT
XSLT permet dappliquer des rgles de
transformation sur un document XML donn en entre et de gnrer en sortie un document XML, HTML ou text issu de cette transformation
Document XML

Processeur XSLT

Document XML/HTML Text..

XSL1

XSL2
81

Structure de XSLT

Toutes les instructions XSL appartiennent lespace de noms xsl: URI= http://www.w3.org/1999/XSL/Transform Llment racine= xsl:stylesheet Un document XSLT a la forme suivante:
<?xml version="1.0" ?> <xsl:stylesheet xmlns:xsl=http://www.w3.org/1999/XSL/Transform version="1.0"> </xsl:stylesheet> N.B: Attribut version est obligatoire.

Association entre XML et une feuille de style XSL <?xml- stylesheet type=text/xsl href=URIxsl.xsl?>
82

41

Principe de fonctionnement de XSLT


Convertir un arbre en un autre arbre Une transformation XSLT consiste en une srie de rgles La transformation se fait en associant des motifs (patterns)
des modles (templates) Pattern: Contexte structural dans l'arbre source Expression XPath Template: Un fragment du rsultat produire pour le pattern correspondant Quand le pattern est reconnu dans le document source, le template correspondant est engendr dans le document rsultat

83

XPath
Objectifs Adopte une syntaxe non-XML, qui permet son
Reprer des parties d'un document XML, Manipuler les suites de caractres, les nombres et les boolens

utilisation lintrieur des attributs XML XPath modlise un document XML comme un arbre de nuds XPath permet de calculer une valeur de type chane de caractres (appele valeur textuelle du nud) pour chaque type de nud.
84

42

XPath
Racine

PI: xml-styleSheet

EI: parc-machine

EI:machine

comment

EI:systeme

EI:disk

PI:audio

texte

att

7 types de nuds utiliss par XPath: racine, lment, texte, attribut, espace de noms, instruction de traitement et commentaire
85

XPath

Il existe un ordre associ au document,

dfini pour tous les nuds. Il correspond lordre dans lequel apparat chaque nud dans la prsentation XML. La construction syntaxique principale de XPath est lexpression dont lvaluation peut donner 4 types dobjets:
Un ensemble de nuds Un boolen (vrai ou faux) Un nombre (virgule flottante) Une chane de caractres
86

43

XPath

Le chemin de localisation slectionne un

ensemble de nuds relativement un nud de contexte, dit nud contextuel La syntaxe de base est similaire au mcanisme dadressage utilis dans les systmes de fichiers

87

XPath: syntaxe de base


Symbole
/A/B //A |

Rle
Slectionne tous les elts B fils de lelt A Slectionne tous les elts A Permet de combiner les requtes Slectionne tous les enfants du nud contextuel Slectionne tous les attributs appartenant <A>

Exemple
/parcmachine/machine/systeme //systeme /parcmachine/machine/systeme | //ip /parc-machine/*

A/@*

Machine/@*
88

44

XPath: syntaxe complexe

Chemins de localisation plus spcifiques 3 niveaux diffrents:


Prdicats Test de nuds Fonctions

89

Prdicats
Objectif: raffiner la slection sur des lments obtenus
par une requte simple. On peut effectuer un test sur le nom dun lment, son contenu ses attributs, sa position dans larbre
Rle
i eme lment de la slection identifie le dernier lment de la slection Identifie tout lment A enfant du nud contextuel et possdant un lment enfant B Identifie tout lment A enfant du nud contextuel et possdant un attribut att

Symbole
[i] [last()] A[B]

Exemple
//machine[2] //machine[last()] Machine [clock]

A[@att]

Machine [@photo]

90

45

Prdicats
A[B=val1] Identifie tout lment A Parc-machine[machine=machine1] enfant du nud contextuel et possdant un lment enfant B ayant la valeur val1

A[.=val1]

Identifie tout lment A Machine[.=machine1] enfant du nud contextuel et possdant comme valeur val1

A[@att=att0]

Condition sur les attributs

//machine[@id=mach005]

91

Prdicats
Attention
cest llment A qui est slectionn et non B ou att. [ ] nagissent que comme filtre.

possible de faire des prdicats plus complexes en utilisant and et or. Exemple: //A[B=val1 and @att=att0 ]

92

46

Test de nuds

Un test de nud peut se faire en utilisant des fonctions


Fonction
Text() Comment() Node

Rle
Permet de tester quun nud est textuel. Permet de tester quun nud est de type commentaire Permet de tester quun nud est un nud (quel que soit son type)

ProcessingPermet de tester quun nud est de type IT. instruction(string) Cette fonction peut prendre en paramtre une chane de caractres: le nom de lIT
93

Fonctions
1- applicables aux ensembles de nuds
fonction count(slection) name() id(identificateur) Rle Donne le nombre dlment correspondant la slection Retourne le nom dun lment Retourne les elts dont lidentificateur est donn en argument Retourne ladresse URI de lespace de noms du nud contextuel Exemple //cd [count (morceau)=10] //*[name()=titre] //*[id(mach001)]

namespace-uri()

94

47

Fonctions

Fonctions applicables aux chanes de


caractres
Fonction Rle
Renvoie vrai si la premire chane commence par la deuxime Renvoie vrai si la premire chane contient la deuxime

Exemple
//*[starts-with(name(), t)]

starts-with(string1, string2)

contains(string1, string2)

//*[contains(name(), t)]

string-length(string)

Retourne la taille de //*[stringla chane de caractre length(name()) &gt; 5] donne en argument


95

Instruction xsl:template
Les composants les plus importants dune XSLT sont les rgles du modle dfinies par des lments xsl:template Chaque lment de ce type possde un attribut match qui permet de spcifier quel nud du document dentre le modle doit tre appliqu
<xsl: template match=expression XPath>

Le contenu de llment xsl:template est le modle qui doit tre instanci. Le modle peut contenir du texte qui apparatra, tel quel en sortie et/ou des instructions XSL qui permettront de transfrer en sortie des donnes, depuis le document en entre.
96

48

Modles XSLT

Exemple 1
<xsl:template match="Titre"> <h1> XML pour les dbutants </h1> </xsl:template>

Source : <Titre>Introduction</Titre> Rsultat : <h1> XML pour les dbutants </h1>


97

Instruction xsl:apply-templates
Le processeur XSL ne parcourt pas de lui mme larbre que reprsente le document XML pour chercher toutes occurrences adapts aux diffrents modles Le modle du nud slectionn peut lui mme contenir des lments xsl:apply-templates pour chercher des correspondances dans ses descendants
<xsl:apply-templates select=expression XPath>

Lattribut select peut prendre comme valeur le nom dun lment de larbre en entre. Dans ce cas, seul cet lment est slectionn. Sans attribut select, tous les sous lments, textes, comm., IT sont slectionns
98

49

Exemple
<xsl: templates match=/> <HTML> <HEAD> <TITLE> Exemple de feuille de style XSLT </TITLE> </HEAD> <BODY> <xsl:apply-templates/> </BODY> </HTML> </xsl: template>
99

<xsl:template match=nom> <P>Nom rencontre </P> </ xsl:template>

Instruction xsl:value-of
Rcuprer la valeur dun nud en entre et de la
renvoyer en sortie Llment vide xsl:value-of permet de rcuprer la valeur dun nud en entre et de la renvoyer en sortie.
<xsl:value-of select=expression XPath/>

Lattribut select permet de spcifier le nud dont


il faut rcuprer la valeur. Lattribut select peut prendre comme valeur une expression XPath de slection de nuds

100

50

Exemple
<xsl: template match=/> <HTML> <HEAD> <TITLE> Exemple de feuille destyle XSLT </TITLE> </HEAD> <BODY> <xsl:apply-templates/> </BODY> </HTML> </xsl: template>

<xsl:template match=nom> <P><xsl:value-of select=./> </P> </ xsl:template>

101

Instruction xsl:for-each
Elle permet de traiter, tour tour, chacun des
lments slectionns par son attribut select. Lattribut select est obligatoire
<xsl:for-each select=expression XPath>

Exemple:

<xsl:template match=noms > <xsl:for-each select=nom> <P><xsl:value-of select=./> </P> </ xsl:for-each> </ xsl:template>
102

51

Rgles modles implicites


1- <xsl: template match="*|/"> <xsl:apply-template/> </xsl:template > 2- <xsl:template match="text()|@*"> <xsl:value-of select="."/> </xsl:template > 3- <xsl:template match=processing-instruction|comment()/>

N.B: tant donn lexistence de ces rgles implicites, lassociation dune feuille de style vide un document XML provoque la copie des donnes #PCDATA de lentre vers la sortie

103

Modles de valeurs dattributs


Lorsque des attributs sont gnrs en sortie,
leurs valeurs sont prcises grce des modles de valeurs dattributs Un modle de valeur dattribut permet de copier des donnes tires du contenu dun lment valeur dattributs dfinies dans la feuille de style. Un modle dattribut est compos dune expression entre accolades: {expression XPath}

104

52

Exemple
<IMAGE TYPE=gif> <PATH>/user/local/images</PAT H> <NOM>ciel</NOM> <IMAGE>
Document source

<IMG SRC=/user/local/images/ciel.gif></IMG> <xsl:template match= IMAGE> <IMG SRC= {PATH}/{NOM}.{@TYPE} > </IMG> </xsl:template>

Document gnrer

105

Gnration des donnes en sortie Il est possible, grce XSLT, de contrler les

types dlments gnrs en sortie Les instructions xsl:element, xsl:attribute, xsl:processing-instruction, xsl:comment et xsl:text permettent la gnration des diffrentes composantes dun document XML Les instructions xsl:number, xsl:copy, xsl:sort, xsl:if, xsl:choose, permettent de contrler plus finement larbre de sortie
106

53

Gnration dlments
Linstruction xsl:element permet dinsrer un lment
dans le document en sortie La forme gnrale est:
<xsl:element name ={nom} namespace={uri} use-attribute-sets=noms> contenu de lelement </xsl:element>

La valeur des attributs name et namespace peut tre


calcule grce un modle dattribut

107

Gnration dattributs
Linstruction xsl:attribute permet dinsrer dans le
document en sortie des attributs et leurs valeurs. La forme gnrale est:
<xsl:attribute name ={nom} namespace={uri}> valeur de lattribut </xsl:attribut>

La valeur des attributs name et namespace peut tre


calcule grce un modle dattribut Cration de groupe dattributs: attribute-set

108

54

Gnration dinstructions de traitement et commentaire


Linstruction xsl:processing- instruction permet dinsrer dans le
document en sortie une instruction de traitement

La forme gnrale est:


<xsl: processing-instruction name={nom}> valeur de linstruction de traitement </xsl: processing-instruction>

Linstruction xsl:comment permet dinsrer dans le document en


sortie un commentaire

La forme gnrale est:


<xsl: comment> contenu du commentaire </xsl:comment>

109

Gnration de texte
Linstruction xsl:text permet dinsrer du texte
dans le document de sortie La forme gnrale est:
le texte insrer </xsl: text> <xsl: text disable-output-escaping= yes | no>

Prserve les espaces en sortie Permet dinsrer les meta-caractres < et &
sous cette forme si disable-outputescaping=yes.

110

55

Copie de nuds

Linstruction xsl:copy permet de copier le

nud courant vers la sortie Les sous-lments, les attributs et le contenu ne sont pas copis automatiquement Linstruction xsl:copy-of permet de copier des sections de larbre source dans larbre de sortie
111

Tri des lments en sortie


Linstruction xsl:sort permet de trier les
lments gnrs en sortie Cette instruction peut apparatre en tant qulment des instructions xsl:apply-templates et xsl:for-each
<xsl:sort select=expression XPath order=ascending ou descending data-type=text ou number>

Si on utilise plusieurs instructions xsl:sort, le tri


est dabord ralis selon la 1ere cl, puis la 2ieme,.
112

56

Dfinition de variables
La dfinition de variable se fait par linstruction
xsl:variable
<xsl:variable name=nom-variable> contenu de la variable </xsl:variable>

Pour utiliser une variable, il faut rajouter le signe $


en prfixe de son nom. La valeur dune variable peut comporter du texte, des balises ou dautres instructions XSLT

113

Instruction de test
Linstruction xsl:if permet de contrler ce qui est
gnr en sortie en fonction dune condition
<xsl:if test=expression boolenne> Contenu </xsl:if>

Linstruction xsl:choose permet de contrler ce


<xsl:choose> <xsl:when test=expression boolenne1> <xsl:when test=expression boolenne2> <xsl:otherwise> </xsl:choose>

qui est gnr en sortie en fonction de plusieurs conditions

114

57

Types de documents en sortie


Un processeur XSLT peut gnrer du texte dans 3
formats de sortie: XML, HTML ou text Par dfaut la sortie est considre comme du code XML sauf si le premier lment racine en sortie est HTML Linstruction xsl:output permet de contrler le format de sortie
<xsl:output methode=xml ou html ou text version=version encoding=encoding standalone=yes ou no Omit-xml-declaration=yes ou non/>

115

Outils
Xalan du projet apache Saxon de Mozilla
xml.apache.org/xalan users.iclway.co.uk/mhkay/saxon www.jclarck.com/xml/xt.html
msdn.microsoft.com/downloads/webtechnology/xml/msxml.asp

XT de James Clarck:

MSXML accompagant IE

116

58

JavaScript & XML


Gnrer du HTML => HTML dynamique Insertion du code JavaScript Modifier la feuille de style:
<script type=" text/javascript "> <![CDATA [ (EMPLACEMENT DU CODE) ]]> </script>

117

XSL: utilisation du DOM


Accder aux fichiers XML et XSL:
Var XMLsource= new Object ; Var XSLsource= new Object ; XMLsource=document.XMLDocument ; XSLsource=document.XSLDocument ;

Slection des lments dans un fichier XML:


Mthode selectNodes (expression XPath)
XMLsource.documentElement .selectNodes(livre/auteur/@nom);
118

59

XSL: utilisation du DOM


Modifier un lment de la feuille XSL:
Collection_element =XSLsource.documentElement . selectNodes("xsl:for-each[@select=livre]" ); Element =collection_element [0]; Element .setAttribute(" select ", auteur/@nom)

Modifier un lment de la feuille XSL: proprit innerHTML


Document.body.innerHTML= XMLsource.transformNode(XSLsource);
119

XSL-FO: Langages de feuille de style XSL-FO -XSL Formatting Objects


Un langage XML permettant de prciser comment formater (en vue dun affichage, dune impression ,) un document XSL-FO offre un mode de prsentation des donnes en de nombreux points similaire CSS, et par certains aspects plus sophistiqus

120

60

XSL-FO

Les instructions de formatage proposes

et non disponibles avec CSS sont par exemple: la prsentation du texte de droite gauche ou de haut en bas, les notes de bas de page, les notes dans les marges, Conu pour une prsentation dans le cadre du Web, impression, conversion en diffrents formats graphiques,
121

XSL-FO

Les spcifications de XSL-FO: 15 octobre


2001 le produit FOP (apahe) est assez proche de ces spcifications

122

61

Exemple
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> <fo:layout-master-set> <fo:simple-page-master> <fo:region-body/> </fo:simple-page-master> </fo:layout-master-set> <fo:page-sequence> <fo:flow> <fo:block font-size="14pt" font-weight="bold"> Annuaire pages blanches </fo:block> <fo:block font-size="12pt"> nom:toto toto telephone :061010203 </fo:block> <fo:block font-size="12pt"> nom:zoro zoro telephone:061020100 </fo:block> </fo:flow> </fo:page-sequence> </fo:root>

123

Grammaire XML DTD vs XML-Schema


Pr. Rachida AJHOUN

124

62

Intrts
Dfinition dune classe de document ( rapport
technique, bon de commande, article de revue,) Possibilit de cration de document XML sur un modle de document donn Permet de dfinir une structure avec des lments (balises et attributs) respecter
Avec souplesse Imposer des rgles de structure prcises DTD: plus simple et moins complte XML-Schema: plus complexe et plus complte
125

2 approches:

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE parc-machine SYSTEM "comp.dtd"> <?xml-stylesheet type="text/xml" href="comp.xsl"?> <!-- ce document d crit les machines de lENSIAS --> <parc-machine> <machine idf="mach001"> <modele>HP-PC</modele> <service>23/02/2000</service> <ip>212.217.30.100</ip> <systeme> <nom>Windows</nom> <version>2000Profesional</version> </systeme> <ram unite="Mo">256 </ram> <disque unite ="G0">20</disque> <processeur>Intel PentiumIII</processeur> <horloge>700Mhz</horloge> <administrateur src="photo.jpg "> F. H.</administrateur> </machine> <parc-machine>
126

63

DTD: Document Type Definition

127

Principe
Une dclaration de type de document dfinit:
Le nom des types dlments, leur contenu et dans quel ordre dautres lments peuvent y apparatre Les attributs ventuels et leur valeurs par dfaut Le nom des entits qui peuvent tre utilises

DTD peut tre interne ou externe Les documents XML valides doivent respecter les
rgles donnes dans la DTD Dans une DTD, tout ce qui nest pas expressment autorise est interdit Une DTD peut contenir des commentaires

128

64

Rappel: Dclaration de type de document


Dclaration de type de document:
<!DOCTYPE ElementRacine Et se termine par >

Cette dclaration contient la DTD (DTD interne) ou une adresse URL (DTD externe) DTD interne:
<!DOCTYPE parc-machine [ <! declarations -- > ]>

129

Rappel: Dclaration de type de document


DTD externe : DTD prive :
<!DOCTYPE ElementRacine SYSTEM "URLDTD">
Ex: <!DOCTYPE computers SYSTEM "http://www.ensias..ma/dtd/computers.dtd">

DTD publique:
<!DOCTYPE ElementRacine PUBLIC "NomDTD" Exemple de noms de DTD (URN) : //W3C//DTD XHTML 1.0 Strict//EN "URLDTD">

130

65

DTD: Document Type Definition


<?xml version="1.0" encoding="UTF-8"?> <!NOTATION gzip SYSTEM gzip.exe> <! la DTD du document parc-pachine -- > <!ELEMENT parc-machine (machine+)> <!ELEMENT machine (modele, service, ip, systeme, ram, disk, processor, clock?, administrator)> <!ATTLIST machine idf ID #REQUIRED > <!ELEMENT modele (#PCDATA)> <!ELEMENT service (#PCDATA)> <!ELEMENT ip (#PCDATA)> <!ELEMENT systeme (nom,version)> <!ELEMENT nom (#PCDATA)> <!ELEMENT version (#PCDATA)> <!ELEMENT ram (#PCDATA)> <!ATTLIST ram unite CDATA #REQUIRED> <!ELEMENT administrator (#PCDATA)> <!ATTLIST administrator src CDATA #IMPLIED>

Prologue, notations, des entits commentaire

Type dlments Liste des attributs

131

Dclaration de type dlment


Toute dclaration de type dlment respecte un
des quatre formats suivants:
<!ELEMENT NOM (CONTENU) > <!ELEMENT NOM (CONTENU- MIXTE) > <!ELEMENT NOM ANY > <!ELEMENT NOM EMPTY >

ANY: llment peut contenir des donnes textuelles ou tout autre lment dfini dans la DTD EMPTY: llment est vide. Il ne peut contenir ni sous-lments ni donnes textuelles, mais il peut avoir des attributs.
132

66

Dclaration de type dlment


Spcification du contenu
#PCDATA: (Parsed Character data). Ne peut contenir que des

Contenu mixte: peut contenir la fois des


caractres et dautres lments:
<!ELEMENT DATE (#PCDATA|DATEUNIX|DATEFR)*>

ELEMENT?: zro ou une fois le sous-lment ELEMENT ELEMENT+: au moins une fois le sous-lment ELEMENT ELEMENT*: zro ou plusieurs fois le sous-lment ELEMENT

donnes textuelles analysables. (ELEMENT1, ELEMENT2, ): squence, lordre dapparition doit tre respect dans le document XML (ELEMENT1| ELEMENT2| ): choix

133

Description des attributs

La description des attributs se fait au moyen


dune dclaration de liste dattributs (ATTLIST) La syntaxe est la suivante:

<!ATTLIST lment Nom-Attribut Type Valeur-par-dfaut> ou <!ATTLIST lment Nom-Attribut Type #FIXED Valeur> ou <!ATTLIST lment Nom-Attribut Type #IMPLIED> ou <!ATTLIST lment Nom-Attribut Type #REQUIRED>
<!ATTLIST machine idf ID #REQUIRED > <!ATTLIST ram unite CDATA #REQUIRED>

Exemple:

Note: * lordre des dclarations dattributs na pas dimportance * si un mme attribut est dclar plusieurs fois, seule la premire est prise en compte.
134

67

Types dattributs
CDATA: des donnes textuelles
<!ATTLIST ram unite CDATA #REQUIRED> <ram unite=Mo>....</ram>

NMTOKEN: un nom XML valide


<!ATTLIST photo Nom NMTOKEN #REQUIRED> <photo Nom= terre ...>....</photo>

NMTOKENS: plusieurs noms XML spars par des espaces


<!ATTLIST photo Nom NMTOKENS #REQUIRED> <photo Nom= la terre ...>....</photo>

(val1|val2|): une liste des valeurs possibles pour lattribut, chaque valeur doit correspondre un nom XML valide.
<!ATTLIST photo Type (GIF|JPEG|PNG) GIF> <photo Type= GIF ...>....</photo>

ID: un identificateur unique dun lment. Cest un nom XML valide


<!ATTLIST machine idf ID #REQUIRED > 135

Types dattributs
IDREF: lattribut peut prendre comme valeur la valeur dun attribut de type ID dun lment du document.
<!ATTLIST personne ref IDREF #IMPLIED >

<machine idf="mach001"> </machine> <personne ref="mach001" ></personne>

IDREFS: lattribut peut prendre comme valeur une liste de valeurs dattributs ID de plusieurs lments du document.
<!ATTLIST personne ref IDREFS #IMPLIED >

<machine idf="mach001"> </machine> <machine idf="mach002"> </machine> <personne ref="mach001 mach002" ></personne>

ENTITY: lattribut peut prendre comme valeur le nom dune entit gnrale externe non-analysable. Ce type dattribut sert rfrencer des donnes binaires externes (images, fichiers sons,) ENTITIES: lattribut peut prendre comme valeur les noms de plusieurs entits gnrales externes non-analysables. NOTATION (N1|N2|): lattribut peut prendre comme valeur le nom dune notation.
<!NOTATION GIF SYSTEM "image/gif" > <!ATTLIST CD IMAGE NOTATION GIF #REQUIRED 136

68

Valeurs par dfaut des attributs


Il est possible de donner une valeur par dfaut
un attribut

La signification de ces mots cls est la suivante:


#REQUIRED: lattribut doit tre tjs prsent lorsque llment est utilis. Il ny a pas de valeur par dfaut
<!ATTLIST edition date CDATA #REQUIRED>

<!ATTLIST edition type (papier|electronique) "papier" >

#IMPLIED: lattribut correspondant est optionnel. Celui ci ne prendra aucune valeur par dfaut
<!ATTLIST edition version CDATA #IMPLIED>

#FIXED valeur: lattribut correspondant est optionnel. Cela revient dfinir une valeur constante.
<!ATTLIST edition new NMTOKEN #FIXED "yes">
137

Entits paramtres
entits mais dfinies et utilises lintrieur
de la DTD (jamais dans le document XML) Diffrence:
de lentit

la rfrence commence par le signe % La dfinition commence par % suivi dun espace et du nom

Exemples:

1- <!ENTITY % TYPE (CD|DVD)> <!ATTLIST DISQUE GENRE %TYPE;> 2- <!ENTITY % text (#PCDATA)> <!ELEMENT NOM %text;>

138

69

Entits paramtres externes


Le but: permettre la construction de DTD complexes
par la mise en commun de plusieurs DTD. Pour relier entre 2 DTDs, la syntaxe est la suivante:
Pour une DTD prive:
<!ENTITY % nom SYSTEM "URI %nom;

Pour une DTD publique:


<!ENTITY % nom PUBLIC "NomDTD" "URI"> %nom;

N.B: URI est ladresse de la DTD inclure

139

Sections conditionnelles
Intrt: raliser de versions diffrencies pour
des catgories diffrentes de lecteurs Il est possible de rendre inoprante ou non une partie dune DTD en lencapsulant dans une section IGNORE ou INCLUDE Utile dans le cas de DTD partage entre des documents qui ne font pas exactement le mme usage
<! [ IGNORE dclarations ignorer ] > <! [ INCLUDE dclarations inclure ..
]>
140

70

Exemple
<!ENTITY % confidentiel 'INCLUDE' > <!ENTITY % public 'IGNORE' > <!ELEMENT rapport (titre, auteurs, chapitre+) > <!ELEMENT titre (#PCDATA) > <!ELEMENT auteurs (#PCDATA)> <![ %confidentiel; [ <!ELEMENT chapitre (commentaires* , tc, intro, section1+) > <!ELEMENT commentaires (#PCDATA) > ]]> <![ %public; [ <!ELEMENT chapitre (tc, intro, section1+) > ]]> <!ELEMENT tc ANY > <!ELEMENT intro ANY > <!ELEMENT section1 ANY >

141

Limites des DTDs



Elles ne sont pas extensibles ( la diffrence de XML) Une seule DTD peut tre associe chaque document Elles sont incompatibles avec les espaces de noms XML Typage trs faible: pas de possibilits de distinguer des types, tels nombres entiers, nombres rels et chanes de caractres Pas dhritage des objets Une syntaxe non XML Pas de prise en charge des API de XML Outils peu nombreux assez anciens et onreux .

142

71

Schemas XML

143

Schemas XML
Pour rsoudre ces problmes, le consortium W3C a
dfini la notion de schema. Les spcifications de XML Schema sont finalises depuis le mois de Mai 2001:
http://www.w3.org/TR/xmlschema-0/ (Primer) http://www.w3.org/TR/xmlschema-1/ (Structures) http://www.w3.org/TR/xmlschema-2/ (Datatypes)

144

72

Motivations pour Schemas XML


Schemas XML apportent des amliorations / DTDs:
Amliorer les types 44+ versus 10 Crer un type personnel Exemple: bas sur le type string et respecte cette forme ddd-dddd. Ecrire avec la mme syntaxe que les documents XML Moins de syntaxe se rappeler

145

Syntaxe
Un schema est contenu dans un lment de
genre:
<xsd:schema xmlns:xsd=http://www.w3.org/2001/XMLSchema> </xsd:schema>

Le prfixe xsd (XML-Schema Definition) est

gnralement utilis Pour chaque lment et attribut, il faudra dfinir llment correspondant dans le schma
146

73

Description des lments


Chaque lment du document XML est dcrit par la balise
xsd:element Lattribut name de xsd:element contient le nom de llment <xsd:element name=machine> </xsd:element> Les lments composs de sous-lments devront inclure une balise xsd:complexType
147

Description des lments


Dans la balise xsd:complexType, la liste des souslments sera dcrit lintrieur dun des lments suivants compositeur:
xsd:sequence dfinit une liste ordonne de souslments xsd:choice dfinit un groupe dlments dont un seul devra tre prsent xsd:all dfinit un ensemble non ordonn dlments

A lintrieur de ces balises, chaque sous-lment est


dcrit par une balise xsd:element

148

74

Exemple
<xsd:element name= ETUDIANT> <xsd:complexType> <xsd:sequence> <xsd:element name=NOM type=xsd:string/> <xsd:element name=PRENOM type=xsd:string minOccurs=0 maxOccurs=3 /> </xsd:sequence> </xsd:complexType> </xsd:element >
149

Types
Lattribut type indique le type de llment Il peut prendre une valeur parmi toute une srie de
types prdfinis comme:
string, boolean, float, decimal, integer, PositiveInteger, nonPositiveInteger, negativeInteger, nonNegativeInteger, timeDuration,date,uriReference,.

Dfinir des types personnels par restriction ou


extension:
Simples Complexes
150

75

Type Simple: simpleType


Application dune facette au type prdfini:
chaque facette sapplique 1 ou plusieurs types prdfinis Le temps: period, Duration Types ordonns: maxInclusive, minInclusive Tous: enumeration Tous: pattern
<xsd:simpleType name=" nom-element"> <xsd:restriction base=" type-predefini"> Dfinition de la facette <xsd:restriction> </xsd: simpleType>
151

Type simple: exemples

pour dfinir un type de donnes reprsentant une chane de caractres acceptant un maximum de 32 caractres.
<xsd:simpleType name=NOM> <xsd:restriction base=xsd:string> <xsd:maxLength value=32/> </ xsd:restriction> </ xsd:simpleType >

pour dfinir un numro ISBN comme une chane de 10 caractres numriques


<xsd:simpleType name=TypeISBN> <xsd:restriction base=xsd:string> <xsd:pattern value=[0-9] {10}/> </ xsd:restriction> </ xsd:simpleType >

152

76

Type Complexe: complexType


Dclaration dun elt:
un ou + attributs et/ou lments

<complexType name="nom-elet" content="type-contenu"> dclaration des elts et/ou attributs </complexType>

Content= elementOnly|textOnly|empty|mixed Content=elementOnly est par dfaut

153

Type Complexe: exemple


Dfinir un type de donnes systme:
<systeme > <nom>Windows</nom> <version>2000Profesional</version> </systeme > <xsd:complexType name=TypeSysteme> <xsd:sequence> <xsd:element name=nom type=xsd:string/> <xsd:element name=version type=xsd:string/> <xsd:sequence> </xsd:complexType>

Utiliser dans une dclaration: <xsd:element name =systeme type=TypeSysteme/>


154

77

Dclaration des attributs


Les attributs des lments doivent tjs tre dclars
lintrieur de la balise xsd:element.

La dfinition dattributs se fait grce llment xsd:attribute .


<xsd:attribute name = unite type=xsd:string use=optional/>

Lattribut use peut prendre les valeurs suivantes:


Prohibited: lattribut ne doit pas apparatre Optional: lattribut est optionnel Required: lattribut doit apparatre Fixed: lattribut ne peut prendre quune seule valeur Default : lattribut peut ne pas tre dfini, auquel cas il prendra une valeur par dfaut (dfinie avec lattribut value)
155

commenant!
Convertir parc-machine.dtd vers un Schma XML
<!ELEMENT parc-machine (machine)+> <!ELEMENT machine (modele, service, ram, systeme, disk)> <!ELEMENT modele(#PCDATA)> <!ELEMENT service(#PCDATA)> <!ELEMENT ram(#PCDATA)> <!ATTLIST ram unite CDATA #REQUIRED> <!ELEMENT systeme(#PCDATA)> <!ELEMENT disk(#PCDATA)>

parc.-machine.dtd
156

78

ELEMENT ATTLIST #PCDATA ID NMTOKEN ENTITY CDATA ram disk modele systeme Parc-machine service machine

Cest le vocabulaire fournit par la DTD pour dfinir votre Nouveau vocabulaire

157

http://www.w3.org/2001/XMLSchema complexType element sequence schema string integer boolean

http://www.ensias.ma (targetNamespace)

Parc-machine service machine ram disk modele systeme

Cest le vocabulaire fournit par XML Schemas pour dfinir votre Nouveau vocabulaire Une diffrence entre les Schemas XML et les DTDs est que le vocabulaire des Schemas XML est associ un namespace. Par consquent, le nouveau vocabulaire que vous dfinissiez doit tre associ un namespace.
158

79

<?xml version="1.0 "? > <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema " targetNamespace="http://www.ensias.ac.ma" xmlns="http://www.ensias.ac.ma" elementFormDefault="qualified"> <xsd:element name="parc- machine"> < xsd:complexType> < xsd:sequence> <xsd:element ref="machine" minOccurs="1 " maxOccurs="unbounded"/> </ xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="machine"> < xsd:complexType> < xsd:sequence> <xsd:element ref="modele" minOccurs="1 " maxOccurs= "1"/> <xsd:element ref="service" minOccurs="1 " maxOccurs= "1"/> <xsd:element ref="ram" minOccurs="1 " maxOccurs= "1"/> <xsd:element ref="systeme " minOccurs="1" maxOccurs="1 "/> <xsd:element ref="disk" minOccurs="1" maxOccurs= "1"/> </ xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="modele " type="xsd:string"/> <xsd:element name="service" type="xsd:string"/> <xsd:element name="ram" type="xsd:string"/> < xsd:attribute name="unite type ="xsd:string use= required /> < xsd:element name="systeme " type="xsd:string "/> <xsd:element name="disk" type="xsd:string "/> </xsd:schema > Parc-machine.xsd 159

<? xml version="1.0 "?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.ensias.ac.ma" xmlns=" http://www.ensias.ac.ma" elementFormDefault="qualified"> <xsd:element name= parc-machine"> < xsd:complexType> <xsd:sequence> <xsd:element ref= machine"minOccurs="1" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name= machine"> < xsd:complexType> <xsd:sequence> <xsd:element ref= modele" minOccurs="1" maxOccurs="1"/> <xsd:element ref= service" minOccurs="1" maxOccurs="1"/> <xsd:element ref= ip" minOccurs="1" maxOccurs="1"/> <xsd:element ref= systeme" minOccurs="1" maxOccurs="1"/> <xsd:element ref= disk" minOccurs="1" maxOccurs="1"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name= modele" type="xsd:string"/> <xsd:element name= service" type="xsd:string"/> <xsd:element name= ip" type="xsd:string"/> <xsd:element name= systeme" type="xsd:string"/> <xsd:element name= disk" type="xsd:string"/> </xsd:schema>

<!ELEMENT parc- machine (machine)+>

<!ELEMENT machine (modele, service, ip, systeme , disk)>

<!ELEMENT modele (#PCDATA)> <!ELEMENT service (#PCDATA)> <!ELEMENT ip (#PCDATA)> <!ELEMENT systeme (#PCDATA)> <!ELEMENT disk (#PCDATA)> 160

80

Rfrence un schma dans un document XML


<?xml version="1.0"?> 1 <parc-machine xmlns ="http://www.ensias. ma" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.ensias.ma 2 parc-machine.xsd"> <machine> <modele>HP-PC</modele> <service>23/02/2000</service> <ram unite= Mo>256</ram> <systeme>Windows</systeme> <disk>20Go</disk> </machine> ... </parc-machine> 1. Dclaration de lespace de noms par dfaut. 2. Pour associer un document XML un schema dfinissant un espace de noms, on utilise lattribut schemaLocation. Si non on utilise lattribut noNamespaceSchemaLocation 3. Espace de nommage xsi correspond aux instances de documents XML respectant les contraintes dfinies dans un document XML-Schema .
161

Outils
XSV: XML Schema Validator permet de vrifier les
schmas (w3.org) Microsoft XML Parser: dll pouvant tre utilises par certaines applications (microsoft.com) Schema Quality Checker: Utilitaire java pour vrifier les schmas (ibm.com) Intgrer dans des outils: XMLSPY

162

81

Vous aimerez peut-être aussi