Introduction à XML Généralités.

Slides:



Advertisements
Présentations similaires
Données structurées et XML
Advertisements

XML.
D.U Introduction à XML Université Paris II & LRI Michel de Rougemont 1.Introduction à XML 2.DTD 3.XSL : style.
Transformation de documents XML
DTD Sylvain Salvati
Les espaces de nommage XML par Philippe Poulard 1
Données structurées et XML
XHTML EXtensible HyperText Markup Language. HTML et XML HTML (HyperText Markup Language) et XML (eXtensible Markup Language) sont deux spécifications.
le langage les éléments
Les fonctions de XPath et XSLT
Domaines nominaux XSLT
Nicolas Singer Maître de conférence, université Champollion
Tutoriel XSLT F. Sajous ERSS – 01/04/2005.
TP 3-4 BD21.
Manipulation d’XML avec XSL
CREATION DE FEUILLE DE STYLE pour structuré le document XML
Adamou Mahamane Sidi Maman Bachir
Etude des Technologies du Web services
XML-Family Web Services Description Language W.S.D.L.
HTML.
Algorithmique et Programmation
Cours 16 LA BIBLIOGRAPHIE
Initiation à la conception de systèmes d'information
Xml/xslt : Extensible Stylesheet Language Transformation réalisé par: saÏd NAÏM.
Les instructions PHP pour l'accès à une base de données MySql
Bases de données lexicales
Introduction à la structuration des documents: les techniques M2: Gestion des connaissances.
XML: Syntaxe XML, DTD et Schémas
Notions sur le XML Réfs : manuel p 149. Introduction Le XML (eXtensible Markup Language) est un standard d'échange de données. Il fait partie comme le.
Structures de données IFT-2000
Rappel (très) succint d’éléments techniques (XML, DTD, XSL, PHP)
STAF 2X XSL/FO Glaus & Ruckstuhl Mars © Glaus & Ruckstuhl TECFA Programme du 18 et 19 mars Revision XML Introduction à XSL/FO (intérêts et.
Les feuilles de style CSS
1 GPA435 Systèmes d’exploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D. Chapitre 8 Filtres UNIX.
Initiation à XML Sebti Foufou.
Chapitre 3 La normalisation du modèle relationnel
Exporter – Graver - Présenter  C'est grâce aux collections que "Exporter graver présenter" prend tout son sens  On peut y exporter un ensemble d'images,
Javascript 1° PARTIE : LES BASES
8 - XML Cours XML.
Le Langage XML Belkhir Abdelkader Laboratoire LSI USTHB
1 Programmation Web II 2 ème année Licence Appliquée IAG Faculté des Sciences Economiques et de Gestion de Nableul Université 7 novembre à Carthage Années.
Le langage XHTML 420-S4W-GG Programmation Web Client
Passer au CSS et autres... Quelle différence entre ces deux pages ? Si vous regardez uniquement le contenu, aucune. Tout se joue sur la mise en forme.
Paradigmes des Langages de Programmation
XSL eXtensible Stylesheet Language Historique 1999: XSLT 1.0 et XPATH 1.0 : versions supportées par la plupart des outils depuis février 2007 XSLT 2.0.
Le site-en-kit pour les locales 2. Créer des pages.
XML-schema. Pourquoi XML-schema Les DTD : Pas de typage, peu de contraintes sur les contenus nombre d'apparitions d'un élément à choisir entre 0 et 1.
LE HTML ISN Terminale S Un peu d’histoire …
Le langage XML.
XPath XML Path UP Web Année universitaire
Programmation Web : Introduction à XML
Technologies web et web sémantique TP3 - XML. XML eXtensible Markup Language (langage extensible de balisage) – Caractéristiques: méta-langage = un langage.
Copyright © 2005 Yves MARCOUX1 Concepts XML de base Yves MARCOUX EBSI - Université de Montréal.
Initiation à XML Antonin Benoît DIOUF eXtensible Markup Language.
S'initier au HTML et aux feuilles de style CSS Cours 5.
MJ. Blin et M. CsernelPoleInfo31 XML et ses environnements Documents XML bien formés Prologue Arbre d'éléments Attributs Commentaires Entités internes.
Introduction à XML Yves Bekkers. Plan Introduction - structurer l’information Les langages à balises - un peu d’histoire XML - concepts de base Outils.
Soutenance du mémoire de synthèse
Initiation au JavaScript
Module : Langage XML (21h)
Modélisation des documents: DTD et Schéma
1. Introduction 2. DTD 3. Schémas
Document Type Definition (DTD) Plan 2.1Introduction 2.2Déclaration de Document Type 2.3Déclaration d’élément Type 2.3.1Séquences, Choix, indicateurs d’Occurrence.
eXtensible Markup Language. Généralités sur le XML.
Introduction à MathML Par Katia Larrivée UQO Le 18 mars 2004.
Initiation aux bases de données et à la programmation événementielle
XML : un métalangage pour la description de documents structurés XML a été défini par le consortium W3 en fonction de 2 objectifs: Compenser les limitations.
Le langage XML Documents bien formés Un document XML est dit bien formé lorsque le document est correct sans toutefois posséder une DTD. Le prologue du.
XML les données réellement portables La nécessité d’un format de données universel et lisible se faisait sentir depuis longtemps, aujourd’hui avec le développement.
INF2005– Programmation web– A. Obaid Variantes de HTML.
Transcription de la présentation:

Introduction à XML Généralités

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.

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

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.

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

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.

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.

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-8859-1" 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-8859-1. 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.

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.

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>

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>

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.

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

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.

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

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.

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

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

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>

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

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-8859-1"?> <!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"       >

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

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

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

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.

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.

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.

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.

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.

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

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

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.

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

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 ‘‘http://www.toto.org/toto.xml’’> Chaque occurrence de &super; sera remplacé par le contenu du fichier dont l’adresse est donnée. Noter l’utilisation du mot clé SYSTEM.

<!NOTATION jpeg SYSTEM ‘‘image/jpeg’’> Notations Sur l’exemple suivant : <!ENTITY super SYSTEM ‘‘http://www.toto.org/toto.jpg’’ 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).

Exemple <!NOTATION jpeg SYSTEM ‘image/jpeg' > <!ENTITY moi SYSTEM "http://www.toto.org/mesimages/moi.jpg" 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) >