XML sources d’inspiration :

40
CSI 3525, XML, page 1 XML sources d’inspiration: Erik T. Ray, "Learning XML", 1 st ed., O’Reilly Robert Eckstein with Michel Casabianca, "XML Pocket Reference", 2 nd ed., O’Reilly Le Web — des milliers de sources

description

XML sources d’inspiration :. Erik T. Ray, "Learning XML", 1 st ed., O’Reilly Robert Eckstein with Michel Casabianca, "XML Pocket Reference", 2 nd ed., O’Reilly Le Web — des milliers de sources. GML et SGML. - PowerPoint PPT Presentation

Transcript of XML sources d’inspiration :

Page 1: XML sources d’inspiration :

CSI 3525, XML, page 1

XML

sources d’inspiration:

Erik T. Ray, "Learning XML", 1st ed., O’Reilly

Robert Eckstein with Michel Casabianca, "XML Pocket Reference", 2nd ed., O’Reilly

Le Web — des milliers de sources

Page 2: XML sources d’inspiration :

CSI 3525, XML, page 2

GML et SGML

• L’histoire commence avec GML — « Generalized Markup Language », développé en 1969 par Goldfarb, Mosher et Lorie d’IBM comme une façon de permettre aux sous-systèmes d’édition de texte, de formatage (formating), et de recherche de l’information (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

Page 3: XML sources d’inspiration :

CSI 3525, XML, page 3

Marquage en SGML

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

Page 4: XML sources d’inspiration :

CSI 3525, XML, page 4

HTML

• SGML n’est pas un seul langage de marquage. C’est 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/

Page 5: XML sources d’inspiration :

CSI 3525, XML, page 5

XML

• XML « eXtensible Markup Language » fut développé en 1996, et standardisé par le W3C en 1998. C’est un sous-ensemble de SGML.

• XML est l’un des membres d’une 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/

Page 6: XML sources d’inspiration :

CSI 3525, XML, page 6

XML

1. XML permet de structurer des données2. XML ressemble un peu à HTML3. XML est du texte, mais sont but n’est pas d’être lu4. XML est clair (en langage naturel)5. XML est une famille de technologies6. XML est nouveau, mais pas vraiment7. XML emmène HTML au XHTML8. XML est modulaire9. XML sert de base au RDF et au Web Sémantique10. XML est indépendant de la plateforme, compatible avec

plusieurs applications, et ouvertement disponible.

http://www.w3.org/XML/1999/XML-in-10-points

Page 7: XML sources d’inspiration :

CSI 3525, XML, page 7

XHTML

• L’émergence d’XML a induit une reformulation d’HTML. XHTML 1.0 « eXtensible HyperText Markup Language » est maintenant en vogue: La reformulation d’HTML 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

Page 8: XML sources d’inspiration :

CSI 3525, XML, page 8

Qu’est-ce que HTML?

Page 9: XML sources d’inspiration :

CSI 3525, XML, page 9

Les structures d’un document HTML

<html><head>

head elements

</head><body>

body elements

</body></html>

• Identificateurs de ressources

• URLs• texte, images,

multimédia• Placement d’éléments• fonts, couleurs• paragraphes, diviseurs• tableaux• forms• scripts, applets• frames

Type de document, titre,

descripteurs, ...OPTIONEL

Page 10: XML sources d’inspiration :

CSI 3525, XML, page 10

Liens en HTML

La puissance d’HTML, 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.

<a href="http://www.google.com/"><img src="gifs/Logo_25.gif" border="0"></a>Cet exemple contient deux liens: une ancre (qui pointe sur un endroit sur le Web) et une image (pointant sur un fichier d’image).

XML généralise les liens—voir plus loin dans les notes.

Page 11: XML sources d’inspiration :

CSI 3525, XML, page 11

HTML de près (1)<base href="http://www.site.uottawa.ca/~szpak/teaching/3125/"><html><head><title>CSI 3125, Fall 2002: 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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<p>

Javascript

Page 12: XML sources d’inspiration :

CSI 3525, XML, page 12

HTML de près (2)

<center><font size=+2>Welcome to the<font color="#AA3322">CSI 3125</font>Web site!</font><br><hr width=324 size="3"><TABLE BORDER=0 CELLSPACING=10 CELLPADDING=0 WIDTH=352><TR><a href="news.html"><img src="gifs/news.gif" width=136 height=34 border=0 alt="[What's new?]"></a></TR>

7 boutons commencent ici

Page 13: XML sources d’inspiration :

CSI 3525, XML, page 13

HTML de près (3)

<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>

2 autres ranges de boutons

Page 14: XML sources d’inspiration :

CSI 3525, XML, page 14

HTML de près (4)

<hr width=324><p>The instructor's email address:<p><ahref="mailto:[email protected]">[email protected]</a>&nbsp;&nbsp;<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><hr width=324 size="3"><font size=-1>Updated on August 6, 2002</font><hr width=324>

Page 15: XML sources d’inspiration :

CSI 3525, XML, page 15

HTML de près (5)

<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>

Google

Page 16: XML sources d’inspiration :

CSI 3525, XML, page 16

HTML de près (6)

<br><img src="gifs/macspin.gif" width=176 height=40 alt="[A Spinning Apple]">

</center>

</TD></TR></TABLE>

</body>

</html>

Pas sur le dessin

Page 17: XML sources d’inspiration :

CSI 3525, XML, page 17

De retours à XML...

• HTML englobe, en un seul langage, deux aspects de SGML: le marquage procédurale d’un document (sa structure) et son marquage descriptif (sa présentation). Par exemple, <head> et <p> sont des éléments de structure, mais <font> et <i> 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).

Page 18: XML sources d’inspiration :

CSI 3525, XML, page 18

Un document 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>

formatage(voir plus loin dans les

notes)

structure

cd.xml

Page 19: XML sources d’inspiration :

CSI 3525, XML, page 19

... le 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

Page 20: XML sources d’inspiration :

CSI 3525, XML, page 20

... la validation

La validation d’un 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.

szpak|site2-1: ls cd.*

cd.dtd cd.xml

szpak|site2-2: xmllint --valid --noout cd.xml

szpak|site2-3:

(vous allez devoir valider pas mal de documents XML dans ce cours )

Page 21: XML sources d’inspiration :

CSI 3525, XML, page 21

Éléments et attributs

Éléments vide

<name attr1 = "val1" attr2 = "val2" ... />

<price amount="11.98" />

Contenant d’éléments

<name attr1 = "val1" attr2 = "val2" ... >

content

</name>

<song author="Paul and John">

For No One

</song>

Page 22: XML sources d’inspiration :

CSI 3525, XML, page 22

Explication du DTD<!ELEMENT cd (title, band, track+)>UN cd icontient ces elements, dans cet ordre, et il peut y avoir plus d’un track.<!ELEMENT title (#PCDATA)>« Parsed-character data »: item ou les références sont résolue.<!ELEMENT track (song, time?)>time est optionnel.<!ATTLIST cd type (single | regular) #REQUIRED>L’[une des deux valeurs doit être présente.<!ATTLIST song author CDATA "Paul">« Character data » - avec comme valeur par défaut: Paul.<!ATTLIST song lyricist NMTOKEN #IMPLIED>Un identificateur (plus ou moin), optionnel, pas de valeur par défaut.

Page 23: XML sources d’inspiration :

CSI 3525, XML, page 23

XML est plus stricte qu’HTML

• 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

On peut voir un document XML comme un document HTML ou les balises sont défini par l’auteur (et plus — comme nous allons voir). Cependant XML est beaucoup plus stricte qu’HTML.

Page 24: XML sources d’inspiration :

CSI 3525, XML, page 24

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>

Page 25: XML sources d’inspiration :

CSI 3525, XML, page 25

Entité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 n’importe quoi, même un fragment de marquage. Les Entités sont résolues, ou remplacées, comme des macros.

Page 26: XML sources d’inspiration :

CSI 3525, XML, page 26

Entité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; >

&lt; <

&quot; "

Page 27: XML sources d’inspiration :

CSI 3525, XML, page 27

Entités in 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

Entité générale

références

Entitéparamètre

Page 28: XML sources d’inspiration :

CSI 3525, XML, page 28

Entités in 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

Entité locale

référence

référence

Page 29: XML sources d’inspiration :

CSI 3525, XML, page 29

La philosophie des stylesheet

• L’aspect 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 d’un document XML valide en d’autre structures, par exemple, en HTML.

• L’accè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)

Page 30: XML sources d’inspiration :

CSI 3525, XML, page 30

Une 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>

Ceci est un document XML!

Page 31: XML sources d’inspiration :

CSI 3525, XML, page 31

Une 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 />

cd.xls

Page 32: XML sources d’inspiration :

CSI 3525, XML, page 32

Une 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 />

cd.xls

Page 33: XML sources d’inspiration :

CSI 3525, XML, page 33

Liens en XML, un exemple

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.

/>si l’élément est vide

<elementname xlink:type = "simple" xlink:href = "target" xlink:show = "showhow" xlink:actuate = "showwhen">some content</elementname>

Page 34: XML sources d’inspiration :

CSI 3525, XML, page 34

exemple: checkbook

Un exemple, venant d’Erik T. Ray ("Learning XML"), trouvé sur le site web du cours:

checkbook.dtd

checkbook.xml

checkbook.xsl

Visitez

http://www.site.uottawa.ca/~szpak/teaching/3125/handouts/other/perl_xml.html

Page 35: XML sources d’inspiration :

CSI 3525, XML, page 35

Ce qu’il 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

Page 36: XML sources d’inspiration :

CSI 3525, XML, page 36

Validation XML

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.xml

cd.xml is valid

(il y aura des

messages d’erreur,

sinon )

Outils XML/XSL en Linux

Page 37: XML sources d’inspiration :

CSI 3525, XML, page 37

XML parsing

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.

% ls cd.*cd.dtd cd.xml% xmllint cd.xml(il y aura des messages d’erreur si le document n’est pas valide)

xmllint a beaucoup d’options. Afin de les decouvrir, taper: % xmllint

Pour encore plus d’options, taper % man xmllint

Outils XML/XSL en Linux

Page 38: XML sources d’inspiration :

CSI 3525, XML, page 38

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 qu’il faut rendre le programme exécutable.

% 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 <band> 1 <cd> 2 <song> 1 <time> 1 <title> 2 <track>

Statistiques XML

Outils XML/XSL en Linux

Page 39: XML sources d’inspiration :

CSI 3525, XML, page 39

Et puis il y a le processeur XSL xsltproc, qui a aussi beaucoup d’options. Pour les voirs, taper:

% xsltproc

Et pour encore plus d’options, taper:

% man xsltproc

Vous pouvez parser (et valider) un fichier XSL:

% xsltproc cd.xsl

(il y aura des messages d’erreur si le fichier n’est pas valide)

Traitement XSL

Outils XML/XSL en Linux

Page 40: XML sources d’inspiration :

CSI 3525, XML, page 40

Vous pouvez aussi exécuter le processeur XSL sur un fichier XML, selon un stylesheet, et obtenir le résultat—par exemple, un fichier HTML.

% xsltproc cd.xml<html><body> <h3>Revolver, top two</h3><br><br>

<h4>The Beatles</h4><hr>

<p> <b>Eleanor Rigby</b><br> <i>2:45</i><br> </p>

<p> <b> For No One </b><br> </p></body></html>

Traitement XSL