La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Introduction à XML Généralités.

Présentations similaires


Présentation au sujet: "Introduction à XML Généralités."— Transcription de la présentation:

1 Introduction à XML Généralités

2 Introduction XML (Extensible Markup Language) : standard W3C pour le balisage de données. Son origine date des années 80. Il est issu comme le HTML d’un langage très général appelé SGML (Standard Generalized Markup Language) dont il a hérité des principales caractéristiques tout en étant plus simple à mettre en œuvre.

3 Quelques aspects de XML
Le contenu du document et sa mise en forme sont séparés (contrairement à HTML). Pratique : on peut associer plusieurs mises en forme alternatives pour un même contenu. Chaque document XML peut avoir une DTD (document Type Definition) ou un schéma associé qui définissent sa structure. Les balises n’ont pas de sémantique prédéfinies (contrairement à HTML où chaque balise a un sens et un effet sur la mise en forme qui est connu).

4 XML - Exemple La structure d’un document XML est arborescente. <livre> <titre>Les Misérables</titre> <auteur> <prénom>Victor</prénom> <nom>Hugo</nom> </auteur> <nb_tomes>3</nb_tomes> </livre> A chaque balise ouverte, correspond une balise fermée (ex. <livre> et </livre>). Chaque élément peut être vu comme un nœud d’un arbre. livre a pour sous-élément (pour « enfants ») auteur, titre et nb_tomes. Auteur a pour enfant prénom et nom.

5 XML - Exemple Arbre XML (pour exemple précédent) : livre titre auteur
Nb_tomes Les misérables prénom nom 3 Victor Hugo

6 XML exemple L’exemple suivant montre l’utilisation d’XML dans un texte narratif: <biographie><auteur>Victor Hugo</auteur> est un écrivain français né à Besançon en <date>1802</date>. Il a écrit un grand nombre de livres, beaucoup considérés comme des <emphase>chef d’œuvres</emphase> de la littérature française. Parmi ses romans : <titre>Les misérables</titre>, <titre>Notre Dame de Paris</titre>.</biographie> Dans cet exemple, XML est utilisé sous forme assez libre. Biographie comprend un certain nombre de sous éléments (auteur, date,…) mais aussi des données textuelles non structurées.

7 XML – Mise en oeuvre Pour l’utilisation d’XML comme langage de présentation de données sur le web, deux documents au moins sont nécessaires. Le premier contient les données proprement dites. Le deuxième va contenir les informations nécessaires à sa mise en forme. En pratique, cela revient à définir des feuilles de styles (CSS, XSLT ou XSL-FO ou….) pour transformer les données en un format présentable (HTML voire PDF). Un fichier supplémentaire peut être ajouté pour définir les balises que le document peut utiliser et les relations entre celles-ci. Il prend la forme d’une DTD ou d’un Schéma.

8 Structure d’un document XML - Prologue
En dehors des données présentées sous une forme arborescente (comme dans l’exemple précédent). Chaque document XML contient un prologue. <?xml version="1.0" encoding="ISO " standalone="yes"?> Les informations fournies dans cette déclaration sont de trois sortes : version : version du XML utilisée dans le document, 1.0 ici. encoding : jeu de codage de caractères utilisé. Le jeu de caractère standard pour la France est le ISO Par défaut, sa valeur est UTF-8; standalone : la valeur yes, indique que le processeur de l'application n'attend aucune déclaration de type de document extérieure au document. Sinon, le processeur attend une référence de déclaration de type de document.

9 Structure d’un document XML
On peut aussi trouver des instructions de traitement au début du document. Par exemple: <?xml-stylesheet type="text/xsl" href="biblio.xsl"?> L’instruction ne sert pas pour le document proprement dit mais sera interprétée par l’application à laquelle elle est destinée (ici xml-stylesheet le processeur de feuilles de style du XML). L’attribut type indique de quel type de feuille de style il s’agit (XSL ou CSS). L’attribut href donne l’URL (« l’emplacement »)  du fichier de feuille de style.

10 Exemple <?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet href="Film.xsl" type="text/xsl"?> <FILMS> <FILM Annee='1979'> <TITRE>Alien</TITRE> <GENRE>Science-fiction</GENRE><PAYS>USA</PAYS> <ROLES><ROLE><PRENOM>Sigourney</PRENOM><NOM>Weaver </NOM><INTITULE>Ripley</INTITULE></ROLE></ROLES> <RESUME> Près d'un vaisseau spatial échoué sur une lointaine planète, des Terriens en mission découvrent de bien étranges "oeufs". Ils en ramènent un à bord, ignorant qu'ils viennent d'introduire parmi eux un huitième passager particulièrement féroce et meurtrier.</RESUME> </FILM></FILMS>

11 XML - Structure Tout document XML se présente sous la forme d’un arbre d’éléments. Il contient une racine, des nœuds et des feuilles (appelés éléments). La racine : chaque document contient une unique racine (document element). Elle englobe tous les autres : <FILMS> dans l’exemple précédent. Les éléments : Ils peuvent contenir du texte ou d’autres éléments (ses enfants). <ROLE> <PRENOM>Sigourney</PRENOM><NOM>Weaver </NOM><INTITULE>Ripley</INTITULE> </ROLE>

12 XML - Structure Les attributs: tout élément peut contenir un ou plusieurs attributs. Chaque attribut se compose d’un nom et d’une valeur. Par exemple : <FILM Annee='1997‘/> Les entités : elles peuvent être prédéfinies ou définies par l’utilisateur dans la DTD (et seront utilisables dans le fichier XML ou la DTD). Les entités prédéfinies sont : & (pour &), < (pour <), > (pour >), " (pour «  ), &aquot; (pour ‘). Elles permettent de ne pas interpréter les caractères spéciaux et réservés d’XML.

13 XML - Structure Les sections CDATA: une section CDATA peut contenir toute sorte de suite de caractères. Sert à définir des blocs de parties qui ne devront pas être analysés par le processeur XML. Elle est mise en œuvre par <![CDATA[ et ]]> . Ce qui est entre ces deux balises ne sera pas interprété (pratique pour mettre du code XML en exemple et « échapper » un texte contenant pleins de caractères spéciaux réservés). Par exemple : <Introduction à <![CDATA[<XML>]]>> Les commentaires : comme en HTML. Par exemple : <!-- Ce qui suit ne sera pas affiché par le processeur XML -->

14 XML - Structure Les règles de base à respecter sont :
Toutes les balises portant un contenu non vide doivent être fermées; Les balises n'ayant pas de contenu doivent se terminer par />; Les noms d'attributs sont en minuscules; Les valeurs d'attributs doivent être entre guillemets; La casse (majuscules/minuscules) doit être respectée pour toutes les occurrences de noms de balises. XML est sensible à la casse! Un document respectant ces critères est dit bien formé (well formed). D’autres règles peuvent être ajoutées à l’aide d’un DTD.

15 Les DTD (Document Type Definition)
Introduction à XML Les DTD (Document Type Definition)

16 Introduction Bien que XML soit un langage très flexible, il est nécessaire parfois de préciser la structure d’un document. Garantir qu’un document suit bien les règles d’une application spécifique (format d’échange de données dans un protocole, par exemple). Dire ce qu’il est possible ou pas possible de trouver dans un document. Ex : tel élément peut être suivi de tel autre. Spécifier que certains éléments doivent avoir des attributs obligatoires. Ex : tout élément employé doit avoir un attribut no_secu. C’est grâce aux DTD que l’on peut spécifier la structure du document.

17 Introduction Une DTD devra donner la liste de tous les éléments, attributs et entités qu’utilise le document (ainsi que leur contexte). Un document XML sera dit valide, s’il obéit à sa DTD. Le principe général est que tout ce qui n’est pas interdit est autorisé. Une DTD peut déclarer plein de choses sur la structure du document mais a des limites. Elle ne peut rien dire sur : la longueur du document, le nombre d’occurrences des éléments, le détails des données textuelles, quel est le sens d’un élément, …

18 <!DOCTYPE élt.racine déclarations>
Type de DTD Les DTD peuvent être de deux sortes : interne ou externe. Une DTD est interne lorsqu’elle se trouve à l’intérieur du document XML qu’elle décrit. Elle est externe lorsqu’elle se trouve dans un autre fichier. Dans ce dernier cas, le document XML contient une référence à ce fichier. Dans tous les cas, une déclaration de type de document est de la forme : <!DOCTYPE élt.racine déclarations> élt.racine : nom de l’élément racine du document XML. déclarations : donne la liste des déclarations de la DTD si elle est interne ou l’adresse de fichier la contenant si elle est externe.

19 Type de DTD - Exemple Soit le (détail de) document XML suivant :
<liste.cd>   <cd>     <interprete>Keith Jarret</interprete>     <titre>The Köln Concert</titre>     <specif type="Live" nb_cd="1"/>   </cd>   <cd>     <interprete>Pink Floyd</interprete>     <titre>The Wall</titre>     <specif type="Live" nb_cd="2"/>   </cd> </liste.cd>

20 Type de DTD - Exemple Une DTD interne pourrait avoir la forme suivante : <!DOCTYPE liste.cd[   <!ELEMENT liste.cd (cd)*>     <!ELEMENT cd (interprete, titre, specif)>       <!ELEMENT interprete (#PCDATA)>       <!ELEMENT titre (#PCDATA)>       <!ELEMENT specif (#PCDATA)>        <!ATTLIST specif           type (B.O.F.|Live|Compilation) #IMPLIED           nbcd CDATA "1"         > ]>

21 Type de DTD - Exemple Une DTD externe prendrait la forme suivante :
<!DOCTYPE liste.cd SYSTEM "listecd.dtd"> Où le fichier listecd.dtd (qui ici doit être dans le même répertoire) contiendrait : <?xml version="1.0" encoding="ISO "?> <!ELEMENT liste.cd (cd+)>   <!ELEMENT cd (interprete, titre, specif)>   <!ELEMENT interprete (#PCDATA)>   <!ELEMENT titre (#PCDATA)>    <!ELEMENT specif (#PCDATA)>       <!ATTLIST specif         type (B.O.F.|Live|Compilation) #IMPLIED         nbcd CDATA "1"       >

22 Type de DTD – remarque Dans la déclaration de DTD, on peut trouver les mots clés SYSTEM ou PUBLIC. SYSTEM : indique que la DTD est à usage privé et se trouve (la plupart du temps) sur le serveur. Elle peut être exprimée sous la forme d’une adresse http, d’une adresse relative ou du nom du fichier dtd si celui ci est dans le même répertoire. PUBLIC : fait référence à une DTD publique accessible à tous. Exemples : une DTD pour HTML ou SVG (Scalable Vector Graphics) sur le site du W3C. Dans ce cas, l’adresse fournie est une URL (ou URI).

23 Déclaration d’éléments
Elle est de la forme : <!ELEMENT nom modèle_contenu> Nom : peut être n’importe quelle nom XML autorisé. Modèle_contenu : décrit quels sous éléments (et dans quels ordre) l’élément peut avoir. Le modèle de contenu le plus simple est #PCDATA qui indique que l’élément ne contient que des données textuelles. Exemple : <!ELEMENT titre (#PCDATA)>

24 Déclaration d’éléments - séquence
On indique la présence de sous éléments par le parenthèsage. Cela permettra aussi de combiner les différents types de déclarations sans ambiguïté. Exemple : <!ELEMENT coordonnées (numéro_portable)> indique que l’élément coordonnées ne contient qu’un seul sous élément numéro_portable (qui devra être défini aussi). Pour indiquer que l’on peut trouver une liste ordonnée (séquence) de sous-éléments, on utilise la virgule comme séparateur. Exemple : <!ELEMENT nom (prénom, nom_famille)>. Dans ce cas, la présence du prénom et du nom de famille dans cet ordre doit être nécessaire pour que l’élément nom soit bien formé.

25 Déclaration d’éléments - nombre
Le nombre de sous-éléments peut être contrôlé à l’aide des trois caractères spéciaux suivant : ? Autorise zéro ou un élément * Autorise zéro ou plusieurs éléments + Autorise un ou plusieurs éléments Exemple : <!ELEMENT nom (prénom, deuxième_prénom?, nom_famille+)>. Un prénom, éventuellement un deuxième prénom, au moins un (voire plusieurs) noms de famille. Exemple : <!ELEMENT nom (prénom+, surnom*, nom_famille)>. Au moins un prénom, éventuellement (zéro ou) plusieurs surnoms, un nom de famille.

26 Déclaration d’éléments - choix
On peut avoir des alternatives dans la liste des sous-éléments d’un élément donné. On exprime les choix par une barrre verticale « | ». Exemple : <!ELEMENT petit_chiffre (un | deux | trois | quatre | cinq)>. L’élément petit_chiffre peut avoir comme sous-élément soit un, soit deux, etc…, soit cinq (ces éléments restent à définir). Exemple : <!ELEMENT nom ((prénom+, surnom*, nom_famille) | (prénom, deuxième_prénom?, nom_famille+)) >. Cette déclaration présente la structure de nom comme un choix entre les deux possibilités définies au transparent précédent.

27 Déclaration d’éléments - Mixte
Dans certains documents, notamment les document narratif, le contenu peut être mixte, mélangeant élément structuré et texte. Exemple : <biographie><auteur>Victor Hugo</auteur> est un écrivain français né à Besançon en <date>1802</date>. Il a écrit un grand nombre de livres, beaucoup considérés comme des <emphase>chef d’œuvres</emphase> de la littérature française. </biographie> L’élément biographie pourrait se définir comme suit : <!ELEMENT biographie (#PCDATA | auteur | emphase | date )* > Il contient n’importe quel nombre d’éléments auteur, emphase, date dans n’importe quel ordre, entrecoupé éventuellement de données textuelles.

28 Déclaration d’éléments – vide, ANY
On peut spécifier que certains éléments ne contiennent aucun contenu. Ils auront éventuellement, par contre, des attributs (voir après). On utilise le mot clé EMPTY. Exemple : <!ELEMENT specif EMPTY> A contrario, on peut aussi vouloir dire qu’un élément existe, qu’il peut avoir du contenu sans vouloir spécifier la nature de ce qu’il contient. On utilise le mot clé ANY. Exemple : <!ELEMENT qquechose ANY> Peut-être utile au début de la conception d’une DTD, lorsqu’on ne connaît pas forcement la nature de l’élément mais que l’on souhaite pouvoir valider le document quand même.

29 Déclaration d’attributs
Une DTD doit déclarer aussi tous les attributs autorisés dans un document XML à valider. Principalement, il faut renseigner le type de l’attribut et une déclaration par défaut qui indique son caractère obligatoire ou pas. On peut décrire tous les attributs d’un élément donné dans la même déclaration. Déclaration d'un attribut « attr » (de l’élément « elt ») avec une valeur par défaut : <!ATTLIST elt attr CDATA "valeur"> Si la valeur est omise dans le document XML, il n’y aura pas d’erreur, car l'attribut est ajouté par le processeur avec la valeur par défaut.

30 Déclaration d’attributs - défauts
Déclaration d'un attribut requis : <!ATTLIST elt attr CDATA #REQUIRED> Cette fois, l’attribut requis doit être présent dans le document XML sous peine de provoquer une erreur. Déclaration d'un attribut optionnel : <!ATTLIST elt attr CDATA #IMPLIED> Déclaration d'un attribut avec une valeur fixe : <!ATTLIST elt attr CDATA #FIXED "valeur">

31 Déclaration d’attributs – Types possibles
Les types d’attributs possibles sont au nombre de 10 : CDATA, ENUMERATION, NMTOKEN, NMTOKENS, ENTITY, ENTITYS, ID, IDREF, IDREFS, NOTATION. CDATA : peut contenir n’importe quelle chaîne de caractère comme valeur de l’attribut. Exemple : <!ATTLIST nom CDATA #IMPLIED> ENUMERATION : indique que l’attribut prend sa valeur dans une liste donnée in extenso. Il n’y a pas de mots clés. Exemple : <!ATTLIST cd type (live | studio | best_of) > Dans ce cas, le nœud XML suivant sera valide : <cd type = ‘‘live’’>

32 Déclaration d’attributs – Types possibles
NMTOKEN (resp. NMTOKENS) : unité lexicale nominale (resp. liste de … ) suite de caractères numériques, alphanumériques et de ponctuation (voir doc du langage pour détails). ID : doit contenir un nom XML qui est unique dans le document. Aucun autre attribut de type ID ne peut avoir la même valeur dans le document (analogie avec les « clés » du modèle relationnel). IDREF (resp. IDREFS) : fait référence à un attribut de type ID (resp. liste d’attributs) d’un élément du document. Sert à établir des relations plusieurs-à-plusieurs entre élément dans le document. ENTITY, ENTITIES (référence à des entités non analysés), NOTATION (contient le nom d’une notation déclarée). Cf doc du langage.

33 Déclaration d’entités
On l’a vu, XML possède 5 types d’entités prédéfinies : & (pour &), < (pour <), > (pour >), " (pour «  ), &aquot; (pour ‘). On peut en définir d’autre dans une DTD. Pourquoi ? Principalement pour éviter de réécrire des parties revenant souvent (mot particulier, morceaux de code, …). Se fait par la commande : <!ENTITY mot définition> Exemple : <!ENTITY super ‘‘superexatrordinairemegatop’’> L’appel dans le fichier se fait par : &super; Les entités peuvent aussi contenir des balises. Exemple : <!ENTITY super ‘<a href=‘‘index.html’’> accueil </a>’>

34 Déclaration d’entités
Pour éviter des déclarations trop compliquées et illisibles, on peut utiliser des entités générales externes analysées. Principe : on stocke dans un fichier externe la partie à insérer (la définition de l’entité). C’est le client qui se chargera de l’inclusion. Exemple : <!ENTITY super SYSTEM ‘‘ Chaque occurrence de &super; sera remplacé par le contenu du fichier dont l’adresse est donnée. Noter l’utilisation du mot clé SYSTEM.

35 <!NOTATION jpeg SYSTEM ‘‘image/jpeg’’>
Notations Sur l’exemple suivant : <!ENTITY super SYSTEM ‘‘ NDATA jpeg> qui fait référence à un fichier qui n’est pas en XML, la déclaration NDATA indique le type de la donnée. Toutefois, cette indication n’a pas de valeur en soi, elle identifie une notation que l’on doit trouver dans le document : <!NOTATION jpeg SYSTEM ‘‘image/jpeg’’> Le type MIME image/jpeg est associé au mot « jpeg ». Il est possible de définir des entités paramètres (cf. doc du langage).

36 Exemple <!NOTATION jpeg SYSTEM ‘image/jpeg' > <!ENTITY moi
SYSTEM " NDATA jpeg > <!ELEMENT LETTRE (DATE, ADRESSE, SALUTATION, CONTENU) > <!ATTLIST LETTRE moi ENTITY #IMPLIED> <!ELEMENT DATE (#PCDATA) > <!ELEMENT ADRESSE (#PCDATA|BR)* > <!ELEMENT SALUTATION (#PCDATA) > <!ELEMENT CONTENU (#PCDATA) > <!ELEMENT BR (EMPTY) >


Télécharger ppt "Introduction à XML Généralités."

Présentations similaires


Annonces Google