csi 3525, xml, page 1 xml sources dinspiration: erik t. ray, "learning xml", 1 st ed.,...
Post on 04-Apr-2015
109 Views
Preview:
TRANSCRIPT
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
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
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
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/
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/
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
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
CSI 3525, XML, page 8
Qu’est-ce que HTML?
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
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.
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> <p>
Javascript
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
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
CSI 3525, XML, page 14
HTML de près (4)
<hr width=324><p>The instructor's email address:<p><ahref="mailto:szpak@site.uottawa.ca">szpak@site.uottawa.ca</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><hr width=324 size="3"><font size=-1>Updated on August 6, 2002</font><hr width=324>
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>
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
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).
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
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
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 )
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>
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.
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.
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>
CSI 3525, XML, page 25
Entités en HTML
HTML permet de référer aux caractères spéciaux avec le ‘&’ :
espace
ë ë
a a
à à
é é
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.
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:
& &
' '
> >
< <
" "
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
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
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)
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!
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
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
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>
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
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
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
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
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
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
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
top related