Upload
madelaine-cuvelier
View
105
Download
0
Embed Size (px)
Citation preview
CSI 3125, Automne 2001Une introduction au XML*
par Stan Szpakowicz,based sur les sources et inspirations
suivantes: Erik T. Ray, "Learning XML", 1st ed., O’Reilly Robert Eckstein with Michel Casabianca, "XML
Pocket Reference", 2nd ed., O’Reilly the World-Wide Web—thousands of places
Go O'Reilly!
----------------* Et a plein d’autres acronymes
XML, page 2CSI 3525
GML et SGML
Tout a commence avec le GML—Generalized Markup Language, invente en 1969 par Goldfarb, Mosher et Lorie d’IBM afin de permettre aux sous-processus d’edition de texte, de mise en page et d’extraction d’information le partage de documents.
En 1978-1986 GML a ete substantivement elargi, puis standardise par ANSI et ISO en tant que SGML—Standard Generalized Markup Language.
http://www.sgmlsource.com/history/sgmlhist.htm
http://www.oasis-open.org/cover/general.html
XML, page 3CSI 3525
Annotations en SGML
http://www.arbortext.com/data/getting_started_with_SGML/getting_started_with_sgml.html
Procedural markup
Section One
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1
16 pt. Helvetica Bold
12 pt. Helvetica
12 pt. Times Italic
10 pt. Palatino
12 pt. Courier
Descriptive markup
Section One
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
1
chapter head
section head
lead paragraph
paragraph
page number
XML, page 4CSI 3525
HTMLSGML n’est pas seulement un langage d’annotation (markup language). C’est un standard pour la creation de langages d’annotation.
HTML (HyperText Markup Language) est l’un 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/
XML, page 5CSI 3525
XML
XML (Extensible Markup Language) a ete developpe en 1996, et standardise par W3C en 1998. C’est un sous-ensemble du SGML. Le XML fait partie d’une grande (et grandissante) famille de langages interconnectes et cooperatifs: DTD, XSL, XSTL, CSS, XPath, XPointers, XLinks, XML Schema... Et ce n’est que le debut! . [Mais que serait la vie d’un programmateur sans acronymes?]
http://www.w3.org/XML/
XML, page 6CSI 3525
XML en 7 points
1. XML est une methode qui permet de mettre des donnees structurees dans un fichier de texte.
2. XML ressemble a l’HTML mais ce n’est pas de l’HTML.
3. XML est du texte, mais il n’a pas ete concu pour etre lu
4. XML est une famille de technologies 5. XML engendre de tres grand fichiers,
mais ce n’est pas un probleme. 6. XML est nouveau, mais pas si
nouveau.7. XML est gratuit, plateforme-
independent et bien supporte. http://www.w3.org/XML/1999/XML-in-10-points
XML, page 7CSI 3525
XHTML
L’appatition 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. C’est donc tout nouveau!
http://www.w3.org/TR/2001/WD-xhtml1-20011004/
XML, page 8CSI 3525
Mais qu’est ce que le HTML?
XML, page 9CSI 3525
La structure des documents HTML
<html><head>head elements</head><body>body elements</body></html>
A quick checklist• text, images,
multimedia• resource identifiers,
URLs• element placement• fonts, colours• paragraphs, divisors• tables• forms• scripts, applets• frames
document type, title, content
descriptors, ...OPTIONAL
XML, page 10CSI 3525
Liens en HTML
Le pouvoir du HTML reside, naturellement, dans les liens d’HyperText. 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. <a href="http://www.google.com/"><img src="gifs/Logo_25.gif" border="0"></a>
Il y a deux liens ici: une ancre (pointant a une location sur le Web) et l’addresse d’une image (pointant a un fichier local).
XML generalise les liens—voir un peu plus loin.
XML, page 11CSI 3525
HTML de plus pres (1)
<base href="http://www.site.uottawa.ca/~szpak/teaching/3125/"><html><head><title>CSI 3125, Fall 2001: Concepts of Programming Languages</title></head><body background="gifs/3125.gif" bgcolor=#eeeeee text=#000066 link=#0066ff vlink=#9900cc alink=#ff0000><TABLE BORDER=0 CELLSPACING=10 CELLPADDING=0 WIDTH=384><TR><TD VALIGN=TOP ALIGN=LEFT WIDTH="80%"><p align=right><script src="Date.js"></script> <p>
Javascript
XML, page 12CSI 3525
HTML de plus pres (2)
<center><font size=+2>Welcome to the<font color="#AA3322">CSI 3125/3125B</font>Web site!</font><br><hr width=324 size="3"><TABLE BORDER=0 CELLSPACING=10 CELLPADDING=0 WIDTH=352><TR><TD VALIGN=CENTER ALIGN=CENTER><a href="news.html"><img src="gifs/news.gif" width=136 height=34 border=0 alt="[What's new?]"></a></TD>
eight buttons start here
XML, page 13CSI 3525
HTML de plus pres (3)
<TD VALIGN=CENTER ALIGN=CENTER><a href="http://groups.yahoo.com/group/CSI3125Fall2001/"><img src="gifs/forum.gif" width=136 height=34 border=0 alt="[Discussion forum]"></a></TD> </TR><TR><TD VALIGN=CENTER ALIGN=CENTER><a href="syl3125_ToC.html"><img src="gifs/syllabus.gif" width=136 height=34 border=0 alt="[The syllabus]"></a></TD><TD VALIGN=CENTER ALIGN=CENTER><a href="handouts/"><img src="gifs/handouts.gif" width=136 height=34 border=0 alt="[The handouts]"></a></TD> </TR></TABLE>
and two other rows of buttons
XML, page 14CSI 3525
HTML de plus pres (4)
<hr width=324><p>Instructors' email addresses:<p><ahref="mailto:[email protected]">[email protected]</a> <img src="gifs/rtarrow.gif" align=bottom border=0 alt="To "><a href="http://www.site.uottawa.ca/~szpak/"><img src="gifs/home.gif" border=0 align=bottom alt="my home page"></a><p><ahref="mailto:[email protected]">[email protected]</a><p>
XML, page 15CSI 3525
HTML de plus pres (5)
<hr width=324 size="3"><font size=-1>Updated on September 13, 2001</font><hr width=324><form method=get action="http://www.google.com/search"><table bgcolor="#dddddd"><tr><td><a href="http://www.google.com/"><img src="gifs/Logo_25.gif" border="0" alt="google"></a><input type=text name=q size=25 maxlength=256 value=""><input type=submit name=sa value="Go"></td></tr></table></form>
XML, page 16CSI 3525
HTML de plus pres (6)
<br><img src="gifs/macspin.gif" width=176 height=40 alt="[A Spinning Apple]"><!--<hr width=300><applet align=bottom code="gifs/rotate.class" height="72" width="72"></applet><br>--></center></TD></TR></TABLE></body></html>
commented out
XML, page 17CSI 3525
De retour au XML…
Le HTML melange, en un langage, deux des aspects principaux du SGML: l’annotation procedurale d’un document (sa structure) et son annotation descriptive (sa presentation). Par exemple, <head> et <p> sont des elements de structure, alors que <font> et <i> decrivent le format.Dans le monde du XML, les deux aspects ont ete de nouveau separes. Un DTD (Document Type Definition) definie le langage d’annotation, et un document d’XML valide doit etre de ce type. DTD existe depuis le debut du SGML. XML Schema est une nouvelle alternative, pas encore standardisee.
XML, page 18CSI 3525
Un tout petit document en XML...
<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="cd.xsl"?><!DOCTYPE cd SYSTEM "cd.dtd">
<cd type="single"> <title>Revolver, top two</title>
<band>The Beatles</band>
<track> <song>Eleanor Rigby</song> <time>2:45</time> </track>
<track> <song author="Paul and John"> For No One </song> </track></cd>
formatting(discussed
later)
structure
cd.xml
XML, page 19CSI 3525
... son DTD...
<!-- Compact Disk: DTD -->
<!ELEMENT cd (title, band, track+)><!ATTLIST cd type (single | regular) #REQUIRED><!ELEMENT title (#PCDATA)><!ELEMENT band (#PCDATA)><!ELEMENT track (song, time?)><!ELEMENT song (#PCDATA)><!ELEMENT time (#PCDATA)><!ATTLIST song author CDATA "Paul">
cd.dtd
XML, page 20CSI 3525
... 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.
{rebel1}szpak(1)$ ls cd.*cd.dtd cd.xml{rebel1}szpak(2)$ xmlvalid cd.xmlcd.xml is valid
(Vous aussi, vous devrez valider un ou deux documents de XML )
XML, page 21CSI 3525
Simple 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:
Element frequency: 1 <band> 1 <cd> 2 <song> 1 <time> 1 <title> 2 <track>
% 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
XML, page 22CSI 3525
Elements et attributs
Container elements<name attr1 = "val1" attr2 = "val2" ... >content</name>
<song author="Paul and John"> For No One </song>
Empty elements<name attr1 = "val1" attr2 = "val2" ... />
<price amount="11.98" />
XML, page 23CSI 3525
Petits Elements de la Syntaxe du DTD
<!ELEMENT cd (title, band, track+)>Elements of cd in this order, with one or more track.<!ELEMENT title (#PCDATA)>Parsed-character data: entity references resolved.<!ELEMENT track (song, time?)>time is optional.<!ATTLIST cd type (single | regular) #REQUIRED>One of these two values must be present.<!ATTLIST song author CDATA "Paul">Character data, default is Paul.<!ATTLIST song lyricist NMTOKEN #IMPLIED>An identifier (more or less), optional, no default.
XML, page 24CSI 3525
Le XML est plus strict que le HTML
XML est sensible aux majuscule/minuscules. Les valeurs d’attributs doivent etre entre guillemets. Un element a contenu (non vide) doivent avoir un tag
d’ouverture 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 d’un element, les espaces sont
preserves.
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, page 25CSI 3525
Un document est un arbre
<cd type="single"> <title>Revolver, top two</title> <band>The Beatles</band> <track> <song>Eleanor Rigby</song> <time>2:45</time> </track> <track> <song author="Paul and John"> For No One </song> </track></cd>
XML, page 26CSI 3525
Entites en HTML
HTML nous permet de referer a des caracteres qui n’apparaissent pas sur le clavier en utilisant la convention &. Par example:
non-breaking spaceë ëa aà àé é
Ceci a ete grandement etendu en XML. Une entite est une “cellule pour contenu”; une entite peut denoter n’importe quoi: meme un fragment d’annotation. Les entites sont resolues ou remplaces de la meme facon que les macros.
XML, page 27CSI 3525
Entites 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, don’t 5 necessaires pour eviter la confusion avec la syntaxe d’annotation:
& &
' '> >< <" "
XML, page 28CSI 3525
Entites en XML (2)
<!-- Compact Disk: DTD --><!ENTITY % basiccontent "(#PCDATA)"><!ENTITY bestever "The Beatles"><!ELEMENT cd (title, band, track+)><!ATTLIST cd type (single | regular) #REQUIRED><!ELEMENT title %basiccontent;><!ELEMENT band %basiccontent;><!ELEMENT track (song, time?)><!ELEMENT song %basiccontent;><!ELEMENT time %basiccontent;><!ATTLIST song author CDATA "Paul">
cd3.dtd
parameter entity
general entity
references
XML, page 29CSI 3525
Entites en XML (3)
<?xml version="1.0"?><!DOCTYPE cd SYSTEM "cd3.dtd" [ <!ENTITY favourite "For No One"> ]><cd type="single"> <title>Revolver, top two</title> <band>&bestever;</band> <track> <song>Eleanor Rigby</song> <time>2:45</time> </track> <track> <song author="Paul and John"> &favourite; </song> </track></cd> cd3.xml
local entityreferenc
e
reference
XML, page 30CSI 3525
La 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 d’un document XML valide en une autre structure. Par example, en HTML. L’access aux elements est facilite par XPath, un langage riche qui nous permet le deplacement a l’interieur d’un document et l’application de nombreuses conditions (malheureusement, nous n’auront pas le temps de voir le Xpath dans ce cours. )
XML, page 31CSI 3525
Un simple stylesheet (1)
<?xml version="1.0"?><xsl:stylesheet id="cds" version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/><xsl:template match="cd"> <html> <body> <xsl:apply-templates/> </body> </html></xsl:template>
cd.xls
<cd type="single">......</cd>
<html> <body> ------ </body></html>
This is an XML document!
XML, page 32CSI 3525
Un simple stylesheet (2)
<xsl:template match="title"> <h3><xsl:apply-templates/></h3> <br /><br /></xsl:template>
<xsl:template match="band"> <h4><xsl:apply-templates/></h4> <hr /></xsl:template>
<xsl:template match="track"> <p><xsl:apply-templates/></p></xsl:template>
<band>....</band>
<h4>----</h4><hr />
XML, page 33CSI 3525
Un simple stylesheet (3)
<xsl:template match="track"> <p><xsl:apply-templates/></p></xsl:template>
<xsl:template match="song"> <b><xsl:apply-templates/></b> <br /></xsl:template>
<xsl:template match="time"> <i><xsl:apply-templates/></i> <br /></xsl:template>
</xsl:stylesheet>
<song>...</song>
<b>---</b><br />
XML, page 34CSI 3525
Liens en XML, sur un exemple
<elementname xlink:type = "simple" xlink:href = "target" xlink:show = "showhow" xlink:actuate = "showwhen">some content</elementname>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.
/>if element empty
XML, page 35CSI 3525
Un plus grand exemple: checkbook
Cet exemple, ecrit par Erik T. Ray ("Learning XML"), se trouve sur le Web dans les fichiers:
checkbook.dtdcheckbook.xmlcheckbook.xsl
Visiterhttp://www.site.uottawa.ca/~szpak/teaching/3125/handouts/other/perl_xml.htmlEt amusez vous bien.Et maintenant...
XML, page 36CSI 3525
Dans un autre cours
XML Schema (encore plus de controle sur le format des donnees qu’avec les DTDs)
CSS (Cascading Style Sheets—plus ancien mais utile) XSL—Beaucoup 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 d’arbres, etc.) Standards, documents publiques, ressources
sur le Web