XML sources dinspiration Erik T Ray Learning XML

  • Slides: 40
Download presentation
XML sources d’inspiration: § Erik T. Ray, "Learning XML", 1 st ed. , O’Reilly

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 1

GML et SGML • L’histoire commence avec GML — « Generalized Markup Language »

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 soussystè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 2

Marquage en SGML 16 pt. Helvetica Bold chapter head Procedural markup Descriptive markup 12

Marquage en SGML 16 pt. Helvetica Bold chapter head Procedural markup Descriptive markup 12 pt. Helvetica Section One aaaaaaaaaaaaaaaaaaaa aaaaaaaa 12 pt. Times Italic aaaaaaaaaaaaaaaaaaaa aaaaaaaaaa 10 pt. Palatino 1 12 pt. Courier section head Section One aaaaaaaaaaaaaaaaaaaa aaaaaaaa lead paragraph aaaaaaaaaaaaaaaaaaaa aaaaaaaaaa paragraph 1 page number 3

HTML • SGML n’est pas un seul langage de marquage. C’est un standard pour

HTML • SGML n’est pas un seul langage de marquage. C’est un standard pour créer des langages de marquage. • HTML « Hyper. Text 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 W 3 C (the World. Wide Web Consortium): – http: //www. w 3. org/Mark. Up/ – http: //www. w 3. org/TR/html 401/ 4

XML • XML « e. Xtensible Markup Language » fut développé en 1996, et

XML • XML « e. Xtensible Markup Language » fut développé en 1996, et standardisé par le W 3 C 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. w 3. org/XML/ 5

XML 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. XML permet de

XML 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. XML permet de structurer des données XML ressemble un peu à HTML XML est du texte, mais sont but n’est 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. w 3. org/XML/1999/XML-in-10 -points 6

XHTML • L’émergence d’XML a induit une reformulation d’HTML. XHTML 1. 0 « e.

XHTML • L’émergence d’XML a induit une reformulation d’HTML. XHTML 1. 0 « e. Xtensible Hyper. Text Markup Language » est maintenant en vogue: La reformulation d’HTML 4 en XML 1. 0. • La plus récente recommandation: • 1 er août, 2002 : XHTML 1. 0, « Extensible Hyper. Text Markup Language » (Deuxième édition). – http: //www. w 3. org/TR/xhtml 1 7

Qu’est-ce que HTML? 8

Qu’est-ce que HTML? 8

Les structures d’un document HTML O P T I O N E L <html>

Les structures d’un document HTML O P T I O N E L <html> <head> head elements </head> <body> body elements </body> </html> 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 9

Liens en HTML La puissance d’HTML, se trouve dans les liens hypertextes. Un click

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

HTML de près (1) <base href="http: //www. site. uottawa. ca/~szpak/teaching/3125/"> <html> <head> <title> CSI

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=#0066 ff vlink=#9900 cc alink=#ff 0000> <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 11

HTML de près (2) <center> <font size=+2> Welcome to the <font color="#AA 3322">CSI 3125</font>

HTML de près (2) <center> <font size=+2> Welcome to the <font color="#AA 3322">CSI 3125</font> Web site! </font> 7 boutons commencent ici <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> 12

HTML de près (3) <TR> <TD VALIGN=CENTER> <a href="syl 3125_To. C. html"> <img src='data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20415%20289%22%3E%3C/svg%3E' data-src="gifs/syllabus.

HTML de près (3) <TR> <TD VALIGN=CENTER> <a href="syl 3125_To. C. html"> <img src="gifs/syllabus. gif" width=136 height=34 border=0 alt="[The syllabus]"></a> </TD> <TD VALIGN=CENTER> <a href="handouts/"> <img src="gifs/handouts. gif" width=136 height=34 border=0 alt="[The handouts]"></a> </TD> </TR> 2 autres ranges de boutons </TABLE> 13

HTML de près (4) <hr width=324> <p> The instructor's email address: <p> <a href="mailto:

HTML de près (4) <hr width=324> <p> The instructor's email address: <p> <a href="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> 14

HTML de près (5) <form method=get action="http: //www. google. com/search"> <table bgcolor="#dddddd"> <tr> <td>

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 15

HTML de près (6) <img src='data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%20415%20289%22%3E%3C/svg%3E' data-src="gifs/macspin. gif" width=176 height=40 alt="[A Spinning Apple]"> </center> </TD>

HTML de près (6) <img src="gifs/macspin. gif" width=176 height=40 alt="[A Spinning Apple]"> </center> </TD> </TR> </TABLE> Pas sur le dessin </body> </html> 16

De retours à XML. . . • HTML englobe, en un seul langage, deux

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). 17

Un document XML <? xml version="1. 0"? > <? xml-stylesheet type="text/xsl" formatage href="cd. xsl"?

Un document XML <? xml version="1. 0"? > <? xml-stylesheet type="text/xsl" formatage href="cd. xsl"? > (voir plus loin dans les notes) <!DOCTYPE cd SYSTEM "cd. dtd"> <cd type="single"> <title>Revolver, top two</title> <band>The Beatles</band> structure <track> <song>Eleanor Rigby</song> <time>2: 45</time> </track> <song author="Paul and John"> For No One </song> </track> </cd> cd. xml 18

. . . le DTD. . . <!-- Compact Disk: DTD --> <!ELEMENT cd

. . . le DTD. . . <!-- Compact Disk: DTD --> <!ELEMENT cd <!ATTLIST cd <!ELEMENT <!ELEMENT <!ATTLIST title band track song time song (title, band, track+)> type (single | regular) #REQUIRED> (#PCDATA)> (song, time? )> (#PCDATA)> author CDATA "Paul"> cd. dtd 19

. . . la validation La validation d’un document XML peut se faire ainsi:

. . . 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|site 2 -1: ls cd. * cd. dtd cd. xml szpak|site 2 -2: xmllint --valid --noout cd. xml szpak|site 2 -3: (vous allez devoir valider pas mal de documents XML dans ce cours ) 20

Éléments et attributs Contenant d’éléments <name attr 1 = "val 1" attr 2 =

Éléments et attributs Contenant d’éléments <name attr 1 = "val 1" attr 2 = "val 2". . . > content </name> <song author="Paul and John"> For No One </song> Éléments vide <name attr 1 = "val 1" attr 2 = "val 2". . . /> <price amount="11. 98" /> 21

Explication du DTD <!ELEMENT cd (title, band, track+)> UN cd icontient ces elements, dans

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

XML est plus stricte qu’HTML On peut voir un document XML comme un document

XML est plus stricte qu’HTML 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. • 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 23

Un document est un arbre <cd type="single"> <title>Revolver, top two</title> <band>The Beatles</band> <track> <song>Eleanor

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> <song author="Paul and John"> For No One </song> </track> </cd> 24

Entités en HTML permet de référer aux caractères spéciaux avec le ‘&’ :  

Entités en 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. 25

Entités en XML (1) Il y a des entités générales (définie localement, ou de

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: & & &apos; ' > > < < " " 26

Entités in XML (2) Entité paramètre <!-- Compact Disk: DTD --> <!ENTITY % basiccontent

Entités in XML (2) Entité paramètre <!-- Compact Disk: DTD --> <!ENTITY % basiccontent "(#PCDATA)"> Entité <!ENTITY bestever "The Beatles"> <!ELEMENT cd (title, band, track+)> générale <!ATTLIST cd type (single | regular) #REQUIRED> <!ELEMENT title %basiccontent; > références <!ELEMENT band %basiccontent; > <!ELEMENT track (song, time? )> <!ELEMENT song %basiccontent; > <!ELEMENT time %basiccontent; > <!ATTLIST song author CDATA "Paul"> cd 3. dtd 27

Entités in XML (3) <? xml version="1. 0"? > <!DOCTYPE cd SYSTEM "cd 3.

Entités in XML (3) <? xml version="1. 0"? > <!DOCTYPE cd SYSTEM "cd 3. dtd" [ <!ENTITY favourite "For No One"> ] > Entité locale <cd type="single"> <title>Revolver, top two</title> <band>&bestever; </band> <track> référence <song>Eleanor Rigby</song> <time>2: 45</time> </track> <song author="Paul and John"> &favourite; référence </song> </track> cd 3. xml </cd> 28

La philosophie des stylesheet • L’aspect de la présentation, en XML, est implémenté de

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

Une stylesheet (1) <? xml version="1. 0"? > <xsl: stylesheet id="cds" version="1. 0" xmlns:

Une stylesheet (1) <? xml version="1. 0"? > <xsl: stylesheet id="cds" version="1. 0" xmlns: xsl="http: //www. w 3. org/1999/XSL/Transform"> <xsl: output method="html"/> <xsl: template match="cd"> <html> <body> <xsl: apply-templates/> </body> </html> </xsl: template> Ceci est un document XML! <cd type="single">. . . </cd> <html> <body> -----</body> </html> cd. xls 30

Une stylesheet (2) <xsl: template match="title"> <h 3><xsl: apply-templates/></h 3> </xsl: template> <xsl: template

Une stylesheet (2) <xsl: template match="title"> <h 3><xsl: apply-templates/></h 3> </xsl: template> <xsl: template match="band"> <h 4><xsl: apply-templates/></h 4> <hr /> </xsl: template> <band>. . </band> <xsl: template match="track"> <p><xsl: apply-templates/></p> </xsl: template> <h 4> ---</h 4> <hr /> cd. xls 31

Une stylesheet (3) <xsl: template match="track"> <p><xsl: apply-templates/></p> </xsl: template> <xsl: template match="song"> <b><xsl:

Une stylesheet (3) <xsl: template match="track"> <p><xsl: apply-templates/></p> </xsl: template> <xsl: template match="song"> <b><xsl: apply-templates/></b> </xsl: template> <xsl: template match="time"> <i><xsl: apply-templates/></i> </xsl: template> </xsl: stylesheet> <song>. . . </song> <b> --</b> cd. xls 32

Liens en XML, un exemple <elementname xlink: type = "simple" xlink: href = "target"

Liens en XML, un exemple <elementname xlink: type = "simple" xlink: href = "target" xlink: show = "showhow" xlink: actuate = "showwhen" >some content /> </elementname> 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 on. Load ou on. Request. 33

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

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 34

Ce qu’il reste à apprendre… • XML Schema (permet plus de contrôle sur le

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 35

Outils XML/XSL en Linux Validation XML Trois étapes simples pour valider un document XML:

Outils XML/XSL en Linux Validation XML Trois étapes simples pour valider un document XML: • ssh dans la machine Linux site 2. • 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 is valid (il y aura des messages d’erreur, sinon ) 36

Outils XML/XSL en Linux XML parsing Un autre outil XML en Linux: % ls

Outils XML/XSL en Linux XML parsing Un autre outil XML en Linux: % ls cd. * cd. dtd cd. xml % xmllint cd. xml (il y aura des messages d’erreur si le document n’est pas valide) • ssh dans la machine Linux site 2. xmllint a beaucoup • Mettez le document et son DTD dans le même dossier. d’options. Afin de les decouvrir, taper: % xmllint • Invoquer le processeur XML xmllint. Pour encore plus d’options, taper % man xmllint 37

Outils XML/XSL en Linux Statistiques XML Vous pouvez aussi avoir des informations sur les

Outils XML/XSL en Linux Statistiques XML 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. Souvenezvous 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 1 1 2 frequency: <band> <cd> <song> <time> <title> <track> 38

Outils XML/XSL en Linux Traitement XSL Et puis il y a le processeur XSL

Outils XML/XSL en Linux Traitement XSL 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: 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) % man xsltproc 39

Traitement XSL Vous pouvez aussi exécuter le processeur XSL sur un fichier XML, selon

Traitement XSL 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> <h 3>Revolver, top two</h 3> <h 4>The Beatles</h 4> <hr> <p> <b>Eleanor Rigby</b> <i>2: 45</i> </p> <b> For No One </b> </p> </body></html> 40