Title: CSI 3525, XML, page 1
1XML sources dinspiration
- Erik T. Ray, "Learning XML", 1st ed., OReilly
- Robert Eckstein with Michel Casabianca, "XML
Pocket Reference", 2nd ed., OReilly - Le Web des milliers de sources
2GML et SGML
- Lhistoire commence avec GML Generalized
Markup Language , développé en 1969 par
Goldfarb, Mosher et Lorie dIBM comme une façon
de permettre aux sous-systèmes dédition de
texte, de formatage (formating), et de recherche
de linformation (information retrieval) de
partager des documents. - En 1978-1986 GML est substantiellement élargie et
standardisé par ANSI et ISO pour devenir SGML
Standard Generalized Markup Language . - http//www.sgmlsource.com/history/sgmlhist.htm
3Marquage en SGML
4HTML
- SGML nest pas un seul langage de marquage. Cest
un standard pour créer des langages de marquage. - HTML HyperText Markup Language est un tel
langage qui a eu des débuts modestes. En 1993,
Tim Berners-Lee a basé son premier système de
furetage et de composition pour le Web sur
quelque balises de marquage markup tags .
Cette première version a été augmenté pour
devenir HTML, dont la version courante est HTML
4.01. - Les standards HTML sont tenus à jour par le W3C
(the World-Wide Web Consortium) - http//www.w3.org/MarkUp/
- http//www.w3.org/TR/html401/
5XML
- XML eXtensible Markup Language fut développé
en 1996, et standardisé par le W3C en 1998. Cest
un sous-ensemble de SGML. - XML est lun des membres dune grande et
grandissante famille de langages connexes et
coopérant qui inclue DTD, XSL, XSTL, CSS, XPath,
XPointers, XLinks, XML Schema... - http//www.w3.org/XML/
6XML
- XML permet de structurer des données
- XML ressemble un peu à HTML
- XML est du texte, mais sont but nest pas dêtre
lu - XML est clair (en langage naturel)
- XML est une famille de technologies
- XML est nouveau, mais pas vraiment
- XML emmène HTML au XHTML
- XML est modulaire
- XML sert de base au RDF et au Web Sémantique
- XML est indépendant de la plateforme, compatible
avec plusieurs applications, et ouvertement
disponible. - http//www.w3.org/XML/1999/XML-in-10-points
7XHTML
- Lémergence dXML a induit une reformulation
dHTML. XHTML 1.0 eXtensible HyperText Markup
Language est maintenant en vogue La
reformulation dHTML 4 en XML 1.0. - La plus récente recommandation
- 1er août, 2002 XHTML 1.0, Extensible
HyperText Markup Language (Deuxième édition). - http//www.w3.org/TR/xhtml1
8Quest-ce que HTML?
9Les structures dun document HTML
lthtmlgt ltheadgt head elements lt/headgt ltbodygt body
elements lt/bodygt lt/htmlgt
Type de document, titre, descripteurs, ...
- Identificateurs de ressources
- URLs
- texte, images, multimédia
- Placement déléments
- fonts, couleurs
- paragraphes, diviseurs
- tableaux
- forms
- scripts, applets
- frames
10Liens en HTML
La puissance dHTML, se trouve dans les liens
hypertextes. Un click sur un lien est une requête
pour du contenu une chaîne de caractères, une
image, un document complet, ou un endroit
particulier dans un document. lta
href"http//www.google.com/"gt ltimg
src"gifs/Logo_25.gif" border"0"gt lt/agt Cet
exemple contient deux liens une ancre (qui
pointe sur un endroit sur le Web) et une image
(pointant sur un fichier dimage). XML
généralise les liensvoir plus loin dans les
notes.
11HTML de près (1)
ltbase href"http//www.site.uottawa.ca/szpak/teac
hing/3125/"gt lthtmlgt ltheadgt lttitlegt CSI 3125, Fall
2002 Concepts of Programming Languages lt/titlegt lt
/headgt ltbody background"gifs/3125.gif"
bgcoloreeeeee text000066 link0066ff
vlink9900cc alinkff0000gt ltTABLE BORDER0
CELLSPACING10 CELLPADDING0 WIDTH384gt ltTRgt ltTD
VALIGNTOP ALIGNLEFT WIDTH"80"gt ltp
alignrightgt ltscript src"Date.js"gtlt/scriptgt nbsp
nbspnbspnbspnbspnbsp ltpgt
Javascript
12HTML de près (2)
ltcentergt ltfont size2gt Welcome to the ltfont
color"AA3322"gtCSI 3125lt/fontgt Web
site! lt/fontgt ltbrgt lthr width324 size"3"gt ltTABLE
BORDER0 CELLSPACING10 CELLPADDING0
WIDTH352gt ltTRgt lta href"news.html"gt ltimg
src"gifs/news.gif" width136 height34
border0 alt"What's new?"gtlt/agt lt/TRgt
7 boutons commencent ici
13HTML de près (3)
ltTRgt ltTD VALIGNCENTER ALIGNCENTERgt lta
href"syl3125_ToC.html"gt ltimg src"gifs/syllabus.g
if" width136 height34 border0 alt"The
syllabus"gtlt/agt lt/TDgt ltTD VALIGNCENTER
ALIGNCENTERgt lta href"handouts/"gt ltimg
src"gifs/handouts.gif" width136 height34
border0 alt"The handouts"gtlt/agt lt/TDgt lt/TRgt lt
/TABLEgt
2 autres ranges de boutons
14HTML de près (4)
lthr width324gt ltpgt The instructor's email
address ltpgt lta href"mailtoszpak_at_site.uottawa.ca
"gtszpak_at_site.uottawa.calt/agt nbspnbsp ltimg
src"gifs/rtarrow.gif" alignbottom border0
alt"To "gt lta href"http//www.site.uottawa.ca/sz
pak/"gt ltimg src"gifs/home.gif" border0
alignbottom alt"my home page"gtlt/agt ltpgt lthr
width324 size"3"gt ltfont size-1gtUpdated on
August 6, 2002lt/fontgt lthr width324gt
15HTML de près (5)
ltform methodget action"http//www.google.com/se
arch"gt lttable bgcolor"dddddd"gt lttrgt lttdgt lta
href"http//www.google.com/"gt ltimg
src"gifs/Logo_25.gif" border"0"
alt"google"gtlt/agt ltinput typetext nameq
size25 maxlength256 value""gt ltinput
typesubmit namesa value"Go"gt lt/tdgt lt/trgt lt/tabl
egt lt/formgt
Google
16HTML de près (6)
ltbrgt ltimg src"gifs/macspin.gif" width176
height40 alt"A Spinning Apple"gt lt/centergt lt/
TDgt lt/TRgt lt/TABLEgt lt/bodygt lt/htmlgt
Pas sur le dessin
17De retours à XML...
- HTML englobe, en un seul langage, deux aspects de
SGML le marquage procédurale dun document (sa
structure) et son marquage descriptif (sa
présentation). Par exemple, ltheadgt et ltpgt sont
des éléments de structure, mais ltfontgt et ltigt
décrivent son format. - En XML, les deux aspects sont séparés à nouveau.
Un DTD (Document Type Définition) défini le
langage de marquage, et un document valide XML
doit être de ce type. Les DTD existent depuis les
débuts de SGML. Les XML Schema sont une autre
alternative, standardisé en mai 2001 (version
1.0).
18Un document XML
- lt?xml version"1.0"?gt
- lt?xml-stylesheet type"text/xsl"
- href"cd.xsl"?gt
- lt!DOCTYPE cd SYSTEM "cd.dtd"gt
- ltcd type"single"gt
- lttitlegtRevolver, top twolt/titlegt
- ltbandgtThe Beatleslt/bandgt
- lttrackgt
- ltsonggtEleanor Rigbylt/songgt
- lttimegt245lt/timegt
- lt/trackgt
- lttrackgt
- ltsong author"Paul and John"gt
- For No One
- lt/songgt
formatage (voir plus loin dans les notes)
structure
cd.xml
19... le DTD...
- lt!-- Compact Disk DTD --gt
- lt!ELEMENT cd (title, band, track)gt
- lt!ATTLIST cd type (single regular)
- REQUIREDgt
- lt!ELEMENT title (PCDATA)gt
- lt!ELEMENT band (PCDATA)gt
- lt!ELEMENT track (song, time?)gt
- lt!ELEMENT song (PCDATA)gt
- lt!ELEMENT time (PCDATA)gt
- lt!ATTLIST song author CDATA "Paul"gt
cd.dtd
20... la validation
- La validation dun document XML peut se faire
ainsi - Sur une machine Linux
- Placez le document et son DTD dans le même
répertoire - Invoquez le valideur XML xmllint.
- szpaksite2-1 ls cd.
- cd.dtd cd.xml
- szpaksite2-2 xmllint --valid --noout cd.xml
- szpaksite2-3
- (vous allez devoir valider pas mal de documents
XML dans ce cours ?)
21Éléments et attributs
Contenant déléments ltname attr1 "val1" attr2
"val2" ... gt content lt/namegt ltsong author"Paul
and John"gt For No One lt/songgt
Éléments vide ltname attr1 "val1" attr2 "val2"
... /gt ltprice amount"11.98" /gt
22Explication du DTD
- lt!ELEMENT cd (title, band, track)gt
- UN cd icontient ces elements, dans cet ordre, et
il peut y avoir plus dun track. - lt!ELEMENT title (PCDATA)gt
- Parsed-character data item ou les références
sont résolue. - lt!ELEMENT track (song, time?)gt
- time est optionnel.
- lt!ATTLIST cd type (single regular)
REQUIREDgt - Lune des deux valeurs doit être présente.
- lt!ATTLIST song author CDATA "Paul"gt
- Character data - avec comme valeur par
défaut Paul. - lt!ATTLIST song lyricist NMTOKEN IMPLIEDgt
- Un identificateur (plus ou moin), optionnel, pas
de valeur par défaut.
23XML est plus stricte quHTML
On peut voir un document XML comme un document
HTML ou les balises sont défini par lauteur (et
plus comme nous allons voir). Cependant XML
est beaucoup plus stricte quHTML.
- XML est sensible à la casse (case sensitive).
- Les valeurs des attributs doivent être entre
guillemets. - Un contenant (non-vide) doit avoir une balise de
début et de fin. - Un élément vide doit avoir un slash de
terminaison. - Les balises doivent être imbriquées correctement.
- Les espaces blancs contenu dans les éléments sont
préservés
24Un document est un arbre
- ltcd type"single"gt
- lttitlegtRevolver, top twolt/titlegt
- ltbandgtThe Beatleslt/bandgt
- lttrackgt
- ltsonggtEleanor Rigbylt/songgt
- lttimegt245lt/timegt
- lt/trackgt
- lttrackgt
- ltsong author"Paul and John"gt
- For No One
- lt/songgt
- lt/trackgt
- lt/cdgt
25Entités en HTML
HTML permet de référer aux caractères spéciaux
avec le nbsp espace euml ë 097 a
agrave à eacute é Ceci est étendu par XML.
Une entité est un paramètre substituable par du
contenu" elle peut dénoter nimporte quoi, même
un fragment de marquage. Les Entités sont
résolues, ou remplacées, comme des macros.
26Entités en XML (1)
Il y a des entités générales (définie localement,
ou de façon externe et disponible publiquement)
et des entités paramètres utilisées dans les
DTDs. Il y a aussi des entités prédéfinies pour
des caractères, comme celles pour les caractères
réservés de XML amp apos ' gt gt lt
lt quot "
27Entités in XML (2)
Entité paramètre
- lt!-- Compact Disk DTD --gt
- lt!ENTITY basiccontent "(PCDATA)"gt
- lt!ENTITY bestever "The Beatles"gt
- lt!ELEMENT cd (title, band, track)gt
- lt!ATTLIST cd type (single regular)
- REQUIREDgt
- lt!ELEMENT title basiccontentgt
- lt!ELEMENT band basiccontentgt
- lt!ELEMENT track (song, time?)gt
- lt!ELEMENT song basiccontentgt
- lt!ELEMENT time basiccontentgt
- lt!ATTLIST song author CDATA "Paul"gt
Entité générale
références
cd3.dtd
28Entités in XML (3)
- lt?xml version"1.0"?gt
- lt!DOCTYPE cd SYSTEM "cd3.dtd"
- lt!ENTITY favourite "For No One"gt
- gt
- ltcd type"single"gt
- lttitlegtRevolver, top twolt/titlegt
- ltbandgtbesteverlt/bandgt
- lttrackgt
- ltsonggtEleanor Rigbylt/songgt
- lttimegt245lt/timegt
- lt/trackgt
- lttrackgt
- ltsong author"Paul and John"gt
- favourite
- lt/songgt
- lt/trackgt
- lt/cdgt
Entité locale
référence
référence
cd3.xml
29La philosophie des stylesheet
- Laspect de la présentation, en XML, est
implémenté de façon élégante et générale par la
transformation des structures. Une stylesheet
définie un modèle qui permet de transformer les
éléments dun document XML valide en dautre
structures, par exemple, en HTML. - Laccès aux éléments est facilité par XPath, un
langage qui permet de se déplacer dans un
document en appliquant diverse conditions. (Nous
ne pourrons en parler plus dans ce cours)
30Une stylesheet (1)
lt?xml version"1.0"?gt ltxslstylesheet id"cds"
version"1.0" xmlnsxsl"http//www.w3.org/1999/X
SL/Transform"gt ltxsloutput method"html"/gt ltxslt
emplate match"cd"gt lthtmlgt ltbodygt
ltxslapply-templates/gt lt/bodygt
lt/htmlgt lt/xsltemplategt
ltcd type"single"gt ...... lt/cdgt
lthtmlgt ltbodygt ------ lt/bodygt lt/htmlgt
cd.xls
Ceci est un document XML!
31Une stylesheet (2)
ltxsltemplate match"title"gt lth3gtltxslapply-temp
lates/gtlt/h3gt ltbr /gtltbr /gt lt/xsltemplategt ltxsl
template match"band"gt lth4gtltxslapply-templates/
gtlt/h4gt lthr /gt lt/xsltemplategt ltxsltemplate
match"track"gt ltpgtltxslapply-templates/gtlt/pgt lt/x
sltemplategt
ltbandgt .... lt/bandgt
lth4gt ---- lt/h4gt lthr /gt
cd.xls
32Une stylesheet (3)
ltxsltemplate match"track"gt ltpgtltxslapply-templ
ates/gtlt/pgt lt/xsltemplategt ltxsltemplate
match"song"gt ltbgtltxslapply-templates/gtlt/bgt
ltbr /gt lt/xsltemplategt ltxsltemplate
match"time"gt ltigtltxslapply-templates/gtlt/igt
ltbr /gt lt/xsltemplategt lt/xslstylesheetgt
ltsonggt ... lt/songgt
ltbgt --- lt/bgt ltbr /gt
cd.xls
33Liens en XML, un exemple
ltelementname xlinktype "simple" xlinkhref
"target" xlinkshow "showhow"
xlinkactuate "showwhen" gtsome
content lt/elementnamegt
/gt si lélément est vide
target est une ressource privée ou
publique. showhow est new, embed ou replace.
(En HTML ouvrir un nouvelle fenêtre, englobe une
image,suit un lien dans la même
fenêtre.) showwhen est onLoad ou onRequest.
34exemple checkbook
Un exemple, venant dErik T. Ray ("Learning
XML"), trouvé sur le site web du
cours checkbook.dtd checkbook.xml checkbook.xs
l Visitez http//www.site.uottawa.ca/szpak/teachi
ng/3125/handouts/other/perl_xml.html
35Ce quil reste à apprendre
- XML Schema (permet plus de contrôle sur le format
que les DTDs) - CSS Cascading Style Sheets
- XSL
- Les Namespaces
- XSLT Extensible Style Language for
Transformations - XPath (situer des objets dans un document)
- XLink, XPointer (liens entre documents)
- Outils XML(analyseur syntaxiques, validateurs,
- Standards, documents publiques sur XML,ressources
Web
36Validation XML
Outils XML/XSL en Linux
- Trois étapes simples pour valider un document
XML - ssh dans la machine Linux site2.
- Mettez le document et son DTD dans le même
dossier. - Invoquer le validateur XML xmlvalid.
ls cd.cd.dtd cd.xml xmlvalid cd.xmlcd.xml
is valid(il y aura des messages derreur, sinon
J)
37XML parsing
Outils XML/XSL en Linux
ls cd.cd.dtd cd.xml xmllint cd.xml(il y
aura des messages derreur si le document nest
pas valide)xmllint a beaucoup doptions. Afin
de les decouvrir, taper
xmllintPour encore plus doptions, taper man
xmllint
- Un autre outil XML en Linux
- ssh dans la machine Linux site2.
- Mettez le document et son DTD dans le même
dossier. - Invoquer le processeur XML xmllint.
38Statistiques XML
Outils XML/XSL en Linux
dbstat cd.xmlNode frequency 2 PI
nodes 8 element nodes 0 comment
nodes 2 attribute nodes 19 text nodes
0 CDMS nodes 32 total nodesElement
frequency 1 ltbandgt 1 ltcdgt 2
ltsonggt 1 lttimegt 1 lttitlegt 2
lttrackgt
- Vous pouvez aussi avoir des informations sur les
documents XML valides. Le programme Perl dbstat,
poste sur le site web du cours le fait pour nous.
Souvenez-vous quil faut rendre le programme
exécutable.
39Traitement XSL
Outils XML/XSL en Linux
- Et puis il y a le processeur XSL xsltproc, qui a
aussi beaucoup doptions. Pour les voirs, taper - xsltprocEt pour encore plus doptions,
taper man xsltproc
Vous pouvez parser (et valider) un fichier
XSL xsltproc cd.xsl(il y aura des messages
derreur si le fichier nest pas valide)
40Traitement XSL
xsltproc cd.xmllthtmlgtltbodygt lth3gtRevolver,
top twolt/h3gtltbrgtltbrgt lth4gtThe
Beatleslt/h4gtlthrgt ltpgt ltbgtEleanor
Rigbylt/bgtltbrgt ltigt245lt/igtltbrgt lt/pgt ltpgt
ltbgt For No One lt/bgtltbrgt
lt/pgtlt/bodygtlt/htmlgt
- Vous pouvez aussi exécuter le processeur XSL sur
un fichier XML, selon un stylesheet, et obtenir
le résultatpar exemple, un fichier HTML.