Title: CSI 3125, Automne 2001
1- CSI 3125, Automne 2001
- Une introduction au XML
- par Stan Szpakowicz,
- based sur les sources et inspirations suivantes
- Erik T. Ray, "Learning XML", 1st ed., OReilly
- Robert Eckstein with Michel Casabianca, "XML
Pocket Reference", 2nd ed., OReilly - the World-Wide Webthousands of places
Go O'Reilly!
---------------- Et a plein dautres acronymes ?
2GML et SGML
- Tout a commence avec le GMLGeneralized Markup
Language, invente en 1969 par Goldfarb, Mosher et
Lorie dIBM afin de permettre aux sous-processus
dedition de texte, de mise en page et
dextraction dinformation le partage de
documents. - En 1978-1986 GML a ete substantivement elargi,
puis standardise par ANSI et ISO en tant que
SGMLStandard Generalized Markup Language. - http//www.sgmlsource.com/history/sgmlhist.htm
- http//www.oasis-open.org/cover/general.html
3Annotations en SGML
http//www.arbortext.com/data/getting_started_with
_SGML/getting_started_with_sgml.html
4HTML
- SGML nest pas seulement un langage dannotation
(markup language). Cest un standard pour la
creation de langages dannotation. - HTML (HyperText Markup Language) est lun de ces
langages. HTML a eu un debut modeste. En 1993,
Tim Berners-Lee a base son premier systeme de
browsing et d authoring pour le Web avec un
tout petit nombre de markup tags. La version
presente de HTML (version 4.01) a ete grandement
elargie, mais HTML est reste un seul langage. - Les standards de HTML sont maintenus par W3C (the
World-Wide Web Consortium) - http//www.w3.org/MarkUp/
- http//www.w3.org/TR/REC-html40/
5XML
- XML (Extensible Markup Language) a ete developpe
en 1996, et standardise par W3C en 1998. Cest un
sous-ensemble du SGML. Le XML fait partie dune
grande (et grandissante) famille de langages
interconnectes et cooperatifs DTD, XSL, XSTL,
CSS, XPath, XPointers, XLinks, XML Schema... Et
ce nest que le debut! ?. Mais que serait la vie
dun programmateur sans acronymes? - http//www.w3.org/XML/
6XML en 7 points
- XML est une methode qui permet de mettre des
donnees structurees dans un fichier de texte. - XML ressemble a lHTML mais ce nest pas de
lHTML. - XML est du texte, mais il na pas ete concu pour
etre lu - XML est une famille de technologies
- XML engendre de tres grand fichiers, mais ce
nest pas un probleme. - XML est nouveau, mais pas si nouveau.
- XML est gratuit, plateforme-independent et bien
supporte. - http//www.w3.org/XML/1999/XML-in-10-points
7XHTML
- Lappatition du XML a incite la re-reflexion du
HTML. Le nouveau "best thing since sliced bread"
est le XHTML 1.0 The Extensible HyperText Markup
Language, Une Reformulation du HTML 4 en XML 1.0. - Le nouveau document (en progres) du W3C (2nd ed.)
du standard XHTML 1.0 est appearu le 4 Oct.,
2001. Cest donc tout nouveau! - http//www.w3.org/TR/2001/WD-xhtml1-20011004/
8Mais quest ce que le HTML?
9La structure des documents HTML
lthtmlgt ltheadgt head elements lt/headgt ltbodygt body
elements lt/bodygt lt/htmlgt
document type, title, content descriptors, ...
O P T I O N A L
- A quick checklist
- text, images, multimedia
- resource identifiers, URLs
- element placement
- fonts, colours
- paragraphs, divisors
- tables
- forms
- scripts, applets
- frames
10Liens en HTML
Le pouvoir du HTML reside, naturellement, dans
les liens dHyperText. Un click sur un lien est
une requete pour un contenu specifique une
chaine, une image, un nouveau document, un
endroit spcial dans un document. lta
href"http//www.google.com/"gt ltimg
src"gifs/Logo_25.gif" border"0"gt lt/agt Il y a
deux liens ici une ancre (pointant a une
location sur le Web) et laddresse dune image
(pointant a un fichier local). XML generalise
les liensvoir un peu plus loin.
11HTML de plus pres (1)
ltbase href"http//www.site.uottawa.ca/szpak/teac
hing/3125/"gt lthtmlgt ltheadgt lttitlegt CSI 3125, Fall
2001 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 plus pres (2)
ltcentergt ltfont size2gt Welcome to the ltfont
color"AA3322"gtCSI 3125/3125Blt/fontgt Web
site! lt/fontgt ltbrgt lthr width324 size"3"gt ltTABLE
BORDER0 CELLSPACING10 CELLPADDING0
WIDTH352gt ltTRgt ltTD VALIGNCENTER
ALIGNCENTERgt lta href"news.html"gt ltimg
src"gifs/news.gif" width136 height34
border0 alt"What's new?"gtlt/agt lt/TDgt
eight buttons start here
13HTML de plus pres (3)
ltTD VALIGNCENTER ALIGNCENTERgt lta
href"http//groups.yahoo.com/group/CSI3125Fall200
1/"gt ltimg src"gifs/forum.gif" width136
height34 border0 alt"Discussion
forum"gtlt/agt lt/TDgt lt/TRgt ltTRgt ltTD
VALIGNCENTER ALIGNCENTERgt lta href"syl3125_ToC.h
tml"gt ltimg src"gifs/syllabus.gif" width136
height34 border0 alt"The syllabus"gtlt/agt lt/T
Dgt 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
and two other rows of buttons
14HTML de plus pres (4)
lthr width324gt ltpgt Instructors' email
addresses 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 lta href
"mailtoawilliam_at_site.uottawa.ca"gtawilliam_at_site.uo
ttawa.calt/agt ltpgt
15HTML de plus pres (5)
lthr width324 size"3"gt ltfont size-1gtUpdated on
September 13, 2001lt/fontgt lthr width324gt ltform
methodget action"http//www.google.com/search"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 plus pres (6)
ltbrgt ltimg src"gifs/macspin.gif" width176
height40 alt"A Spinning Apple"gt lt!-- lthr
width300gt ltapplet alignbottom
code"gifs/rotate.class" height"72"
width"72"gtlt/appletgt ltbrgt --gt lt/centergt lt/TDgt lt/TR
gt lt/TABLEgt lt/bodygt lt/htmlgt
commented out
17De retour au XML
- Le HTML melange, en un langage, deux des aspects
principaux du SGML lannotation procedurale dun
document (sa structure) et son annotation
descriptive (sa presentation). Par exemple,
ltheadgt et ltpgt sont des elements de structure,
alors que ltfontgt et ltigt decrivent le format. - Dans le monde du XML, les deux aspects ont ete de
nouveau separes. Un DTD (Document Type
Definition) definie le langage dannotation, et
un document dXML valide doit etre de ce type.
DTD existe depuis le debut du SGML. XML Schema
est une nouvelle alternative, pas encore
standardisee.
18Un tout petit document en 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
- lt/trackgt
structure
formatting (discussed later)
cd.xml
19... son 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... Et sa validation
- Il y a trois etapes toutes simples pour valider
un document XML - Log in to any Linux machine
- Have the document and its DTD in the same
directory. - Invoke the XML validator xmlvalid.
- rebel1szpak(1) ls cd.
- cd.dtd cd.xml
- rebel1szpak(2) xmlvalid cd.xml
- cd.xml is valid
- (Vous aussi, vous devrez valider un ou deux
documents de XML ?)
21Simple statistiques
- Vous pouvez aussi voir un certain nombre d
informations sur un document XML valide. Le
program dbstat (en Perl et poste sur le site Web
du cours) le fait pour vous
dbstat cd.xml Node frequency 2 PI
nodes 8 element nodes 0 comment
nodes 2 attribute nodes 19 text nodes
0 CDMS nodes 32 total nodes ?
? Element frequency 1 ltbandgt 1 ltcdgt
2 ltsonggt 1 lttimegt 1 lttitlegt 2
lttrackgt
22Elements et attributs
Container elements ltname attr1 "val1" attr2
"val2" ... gt content lt/namegt ltsong author"Paul
and John"gt For No One lt/songgt Empty
elements ltname attr1 "val1" attr2 "val2" ...
/gt ltprice amount"11.98" /gt
23Petits Elements de la Syntaxe du DTD
- lt!ELEMENT cd (title, band, track)gt
- Elements of cd in this order, with one or more
track. - lt!ELEMENT title (PCDATA)gt
- Parsed-character data entity references
resolved. - lt!ELEMENT track (song, time?)gt
- time is optional.
- lt!ATTLIST cd type (single regular)
- REQUIREDgt
- One of these two values must be present.
- lt!ATTLIST song author CDATA "Paul"gt
- Character data, default is Paul.
- lt!ATTLIST song lyricist NMTOKEN IMPLIEDgt
- An identifier (more or less), optional, no
default.
24Le XML est plus strict que le HTML
Un document XML est un peu comme un document HTML
mais avec des tags sur-mesure (et bien plus,
comme vous allez le voir ci-dessous) , mais
souvenez-vous du fait que le XML est beaucoup
plus controlle que le HTML.
- XML est sensible aux majuscule/minuscules.
- Les valeurs dattributs doivent etre entre
guillemets. - Un element a contenu (non vide) doivent avoir un
tag douverture et de fermeture. - Un element vide doit avoir une bar oblique
finale. - Les tags doivent etre correctement encapsules
(voir la page suivante) - Dans le contenu dun element, les espaces sont
preserves.
25Un 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
26Entites en HTML
HTML nous permet de referer a des caracteres qui
napparaissent pas sur le clavier en utilisant la
convention . Par example nbsp non-breaking
space euml ë 097 a agrave à eacute é
Ceci a ete grandement etendu en XML. Une entite
est une cellule pour contenu une entite peut
denoter nimporte quoi meme un fragment
dannotation. Les entites sont resolues ou
remplaces de la meme facon que les macros.
27Entites en XML (1)
Nous avons des entites generales (ou bien
definies localement, ou bien externes et
disponibles publiquement) et des entites
parametriques utilisees dans les DTDs. Nous avons
aussi des entites de caracteres predefinies,
dont 5 necessaires pour eviter la confusion avec
la syntaxe dannotation amp apos ' gt
gt lt lt quot "
28Entites en XML (2)
parameter entity
- 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
general entity
references
cd3.dtd
29Entites en 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
local entity
reference
reference
cd3.xml
30La philosophie du stylesheet
La presentation des documents XML se fait de
maniere elegante et generale par transformation
de structure. Un stylesheet definie des
templates qui peuvent transformer les elements
dun document XML valide en une autre structure.
Par example, en HTML. Laccess aux elements est
facilite par XPath, un langage riche qui nous
permet le deplacement a linterieur dun document
et lapplication de nombreuses conditions
(malheureusement, nous nauront pas le temps de
voir le Xpath dans ce cours. ?)
31Un simple 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
This is an XML document!
32Un simple 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
33Un simple 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
34Liens en XML, sur un exemple
ltelementname xlinktype "simple" xlinkhref
"target" xlinkshow "showhow"
xlinkactuate "showwhen" gtsome
content lt/elementnamegt target is any local or
public resource. showhow is new, embed or
replace. (In HTML open a new window, embed a
graphic, follow a link in the same
window.) showwhen is onLoad or onRequest.
/gt if element empty
35Un plus grand exemple checkbook
Cet exemple, ecrit par Erik T. Ray ("Learning
XML"), se trouve sur le Web dans les fichiers
checkbook.dtd checkbook.xml checkbook.xsl Visi
ter http//www.site.uottawa.ca/szpak/teaching/312
5/handouts/other/perl_xml.html Et amusez vous
bien. Et maintenant...
36Dans un autre cours ?
- XML Schema (encore plus de controle sur le format
des donnees quavec les DTDs) - CSS (Cascading Style Sheetsplus ancien mais
utile) - XSLBeaucoup de details
- Namespaces
- XSLT (Extensible Style Language for
Transformations) - XPath (trouver des objects dans des documents)
- XLink, XPointer (liens entre documents)
- XML tools (parsers, verificateurs de syntaxe,
validateurs, processeurs darbres, etc.) - Standards, documents publiques, ressources sur le
Web