Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
Objectif
Pourquoi XML ? Savoir utiliser les outils associs quelles circonstances puis-je lutiliser? Comment concevoir et dvelopper une application en utilisant la technologie XML
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
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:
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.
XSL
XML transform
Navigateur
CSS
HTML
Autres applications
API Text/pdf
Transformation
Rsultat
Utilisation
11
12
<?xml version="1.0" encoding ="UTF -8"?> <!DOCTYPE parc-machine SYSTEM "comp.dtd "> <?xml-stylesheet type="text/xml" href="comp .xsl"?>
<!-- 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
Prologue
<?xml version="1.0" encoding="UTF-8"?>
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
18
Attributs
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.
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
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
12
26
13
Entits internes
Entit interne correspond une version abrg
dun texte long ou difficile saisir
<!ENTITY nom "texte associ" >
La rfrence se fait par le prfixe & et en rajoutant la fin du nom un point-virgule : &email;
27
Entits externes
Exemple:
<!DOCTYPE parc- machine [ <!ENTITY lab01 SYSTEM "http://www.ufr.ma/lab01.xml" > ]>
14
La syntaxe:
Entits non-XML
30
15
Instructions de traitement
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
32
16
33
34
17
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
Recommandation: www.w3.org/TR/REC-xmlnames
36
18
Espaces de noms
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
Attribut xlink:type
Signification
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
onRequest undefined
xlink:title
21
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)
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
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
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
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
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
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
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
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:
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
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.
3. Certaines proprits acceptent une valeur prise dans une liste de valeurs possibles
titre {font-family: Helvetica, times }
58
29
59
Valeurs de mesure
relative :
em: text -indent:4em ex: line-heigh:3e x px: text -indent: 30p x % : font-size :90%
60
30
61
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
64
32
65
1. 2. 3. 4. 5.
33
2. font-style: 3. font-variant:
4. font-size: 5. font-weight:
bold, bolder, lighter, 100 (trs maigre), 200, ., 900 (trs gras)
67
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
text-indent line-height
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
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
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
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
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,
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
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
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
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
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
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
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]
//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
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
Exemple
//*[starts-with(name(), t)]
starts-with(string1, string2)
contains(string1, string2)
//*[contains(name(), t)]
string-length(string)
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>
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
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/>
100
50
Exemple
<xsl: template match=/> <HTML> <HEAD> <TITLE> Exemple de feuille destyle XSLT </TITLE> </HEAD> <BODY> <xsl:apply-templates/> </BODY> </HTML> </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
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
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>
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>
108
54
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
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
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>
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>
114
57
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
117
59
120
60
XSL-FO
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
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
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
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
Cette dclaration contient la DTD (DTD interne) ou une adresse URL (DTD externe) DTD interne:
<!DOCTYPE parc-machine [ <! declarations -- > ]>
129
DTD publique:
<!DOCTYPE ElementRacine PUBLIC "NomDTD" Exemple de noms de DTD (URN) : //W3C//DTD XHTML 1.0 Strict//EN "URLDTD">
130
65
131
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
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
<!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>
(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>
Types dattributs
IDREF: lattribut peut prendre comme valeur la valeur dun attribut de type ID dun lment du document.
<!ATTLIST personne ref IDREF #IMPLIED >
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
#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
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
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
145
Syntaxe
Un schema est contenu dans un lment de
genre:
<xsd:schema xmlns:xsd=http://www.w3.org/2001/XMLSchema> </xsd:schema>
gnralement utilis Pour chaque lment et attribut, il faudra dfinir llment correspondant dans le schma
146
73
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,.
75
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 >
152
76
153
77
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.ensias.ma (targetNamespace)
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 modele (#PCDATA)> <!ELEMENT service (#PCDATA)> <!ELEMENT ip (#PCDATA)> <!ELEMENT systeme (#PCDATA)> <!ELEMENT disk (#PCDATA)> 160
80
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