270 likes | 384 Views
Données structurées et XML. Qu’est ce qu’un document XML ? Comment traduire la structure d’un document en XML ? notion de DTD ( Définition d’un Type de Document). Données structurées et XML. XML permet de représenter des données structurées: Données textuelles Organisées:
E N D
Données structurées et XML • Qu’est ce qu’un document XML ? • Comment traduire la structure d’un document en XML ? • notion de DTD ( Définition d’un Type de Document)
Données structurées et XML XML permet de représenter des données structurées: • Données textuelles • Organisées: • on manipule un document constitué d ’éléments • Un élément : un texte ou constitué d’autres éléments ou un mélange des deux ( titre d’ouvrage, prix , nomAuteur, …etc) • Un élément peut être associé à des informations complémentaires , les attributs. • La structure est celle d’un arbre; un élément un nœud de l’arbre.
Langage de balisage • Les informations, isolées en éléments sont encadrées par une paire de balises (tags) et son contenu: < chapitre > …….< / chapitre> (intitulé de balise) • Les balises ouvrantes portent les attributs( s’ils y en a ) < chapitre version = date = …….< / chapitre> • L’imbrication et l’ordre des éléments reflètent la structure. • Un document au format XML est un document texte constitué de balises.
XML ( extensible markup language) Les principaux avantages de ce langage: • Possibilité de définir librement les balises utilisées ( contrairement à HTML) • Distinction claire de la forme et du contenu du document • XML + XSL : représentation d’un document : ajouter des feuilles de style • Facilité pour établir la correspondance entre les données du document et les systèmes de stockage des données.
Exemple de structure HTML <HTML> <HEAD> <TITLE>essai</TITLE> </HEAD> <BODY> <P>paragraphe </P> </BODY> </HTML>
Exemple • But : stocker l’annuaire d’une administration ( nom, prénom, bureau , numéro de poste, email). • Le texte du document: les informations. • Organisation: ne pas mélanger les données: annuaire personne nom prénom bureau poste email Rossi Fabrice 4823 Fabrice.Rossi @dauphine.fr B520
Exemple (suite) • Traduction en XLM de l’arbre: annuaire.xml • <?xml version = « 1.0 » encoding= « ISO-8859-1 »?> • <annuaire> • <personne> • <nom> Rossi </nom> • <prénom> Fabrice </prénom> • <bureau> B520</bureau> • <poste> 4823</poste> • <email> Fabrice.Rossi @dauphine.fr </email> • </personne> • <! – suite de l’annuaire --- • </annuaire>
Exemple de fichier XML Hello.xml: • <?xml version = « 1.0 » standalone = « yes»?> • < conversation> • <bienvenue > Salut à vous </bienvenue> • <réponse > Laissez moi seul </réponse> • </conversation> 1. En tête obligatoire, instruction de traitement 2. Balise ouvrante ( la racine de l’arbre) début d’un nœud. 3. Un élément de l’arbre 4. Un élément de l’arbre de même niveau 5 . Balise fermante associée la ligne 2.
Exemple de code en XML <?xml version=« 1.0 »?> <!—ceci est un commentaire--> <article> <auteur> Boby Lapointe </auteur> <titre>Une introduction à xml</titre> <section> <titre>Présentation de xml</titre> <paragraphe>ce document est bien formé</paragraphe> </section> </article>
Documents xml bien formés Les éléments: • <truc> : balise ouvrante: 1. Doit toujours correspondre à une balise fermante , ici </truc> 2. Le texte entre <> est le nom de l’élément, constitué de lettres, chiffres,’.’, ‘-’,’_’ et ‘:’. • Le contenu d’un nœud de l’arbre, d’un élément, entre balise ouvrante et balise fermante. • <et_hop/> : balise mixte pour les éléments vides.
fragments xml mal formés • <a><b></a></b>: mal formé • <p> bla, bla,bla <br> bla, bla, bla </p> :mal formé • <nom.pas:très_bien-choisi/> : bien formé • <a> contenu de l’élément </A> ( sensible à la casse): mal formé • <un/truc> par exemple </un/truc> • <pas texte=‘de problème’ > </pas> : bien formé L’attribut ( toujours dans une balise ouvrante) texte , sa valeur entre « » ou ‘ ‘ .
Instructions xml Le document commence par une déclaration: • <?xml version = « 1.0 » encoding= « ISO-8859-1 »?> 1 <?xml version = « 1.0 » standalone = « yes»?> • <?xml ?> est une déclaration • L’attribut encoding précise l’encodage des caractères du document :ISO-8859-1 , notre ascii français. • L’attribut standalone précise si le document est seul ( sans DTD) ou non ( auquel cas une instruction <!Doctype … est nécessaire)
La DTD : Définition d’un type de document • Un document XML peut posséder une Déclaration formelle de sa structure, une sorte de grammaire (avec des règles d’utilisation ) que doit respecter le document. • La DTD de l’annuaire : < ! ELEMENT personne ( nom, prénom, bureau, poste, email?) < ! ELEMENT prénom (# PCDATA) < ! ELEMENT bureau (# PCDATA) < ! ELEMENT poste (# PCDATA) < ! ELEMENT email (# PCDATA) (PCDATA: Parsed Character DATA , chaîne de caractères analysée)
Documents générés < personne > < nom> Rossi </nom> < prénom> Fabrice </prenom> <bureau> B520 </bureau> < poste> 4823 < / poste> < email> Fabrice.Rossi@dauphine.fr </email> <personne>
Autre document généré < personne > < nom> Rossi </nom> < prénom> Fabrice </prenom> <bureau> B520 </bureau> < poste> 4823 < / poste> <personne>
Les règles d’utilisation DTD • notations
Exemple commenté < ! ELEMENT carnet ( fiche *) > L’élément carnet peut contenir un nombre arbitraire d’éléments fiche. < ! ELEMENT fiche ( nom, prénom, téléphone, email*) L’élément fiche contient exactement un nom , un prénom, un téléphone, et autant de email qu’on le souhaite (< ! ELEMENT nom (# PCDATA)> L’élément nom ne contient que du texte < ! ELEMENT téléphone (fixe| fax| portable) *> L’élément téléphone contient dans n’importe quel ordre et en n’importe quelle quantité des éléments: fixe, fax et portable.
DTD associé à un sommaire < ! ELEMENT Sommaire ( Numéro, Date, RubriqueSommaire +)> < ! ELEMENT numéro (# PCDATA)> < ! ELEMENT date(# PCDATA)> < ! ELEMENT RubriqueSommaire( RubriqueTitre, ArticleSommaire+)> < ! ELEMENT RubriqueTitre(# PCDATA)> <! ELEMENT ArticeSommaire(ArticeTitre, ArticlePage)> < ! ELEMENT ArticleTitre (# PCDATA)> < ! ELEMENT ArticlePage (# PCDATA)> Construire l’arbre représentant ce sommaire :
Validité d’un document • Un document XML qui possède une DTD associée est dit valide s’il respecte les règles de grammaire. • Un document XML est dit bien formé lorsque: • toutes les balises ouvrantes ont une balise fermante associée • Les balises sont correctement imbriquées.
Deux types de DTD • Sous forme interne: la grammaire du document est placé au sein même du document. • Sous forme externe: un fichier extérieur contient la grammaire du document .
Doc avec DTD interne • <?xml version = « 1.0 » ?> • <! DOCTYPE bibliothèque [ < !ELEMENT bibliothèque ( livre+)> < !ELEMENT livre (Titre, auteur, ref)> < !ELEMENT Titre(# PCDATA)> < !ELEMENT auteur (# PCDATA)> < !ELEMENT ref (# PCDATA)> ] > <bibliothèque> <livre> <titre > Dune </titre> <auteur> Frank Heckbert </auteur> <ref> Fiction-H-1</ref> </livre> </bibliothèque>
Doc avec DTD externe • <?xml version = « 1.0 » ?> • <! DOCTYPE bibliothèque SYSTEM « biblio.dtd »> • < bibliothèque> < livre> < titre > Dune </titre> < auteur> Frank Heckbert </auteur> <ref> Fiction-H-1</ref> < / livre> < / bibliothèque> Biblio.dtd: < ! ELEMENT bibliothèque ( livre+)> < ! ELEMENT livre (Titre, auteur, ref)> < ! ELEMENT Titre( #PCDATA)> < ! ELEMENT auteur ( #PCDATA)> < ! ELEMENT ref ( #PCDATA)>
Exemple (XML) disques.xml • 1 <?xml version="1.0" encoding="ISO-8859-1"?> • 2 <!DOCTYPE disques SYSTEM "DisquesML.dtd"> • 3 <disques> • 4 <groupe > • 5 <nom>MUSE</nom> • 6 <membre>Matthew Bellamy</membre> • 7 <membre>Dominic Howard</membre> • 8 <membre>Chris Wolstenholme</membre> • 9 </groupe> • 10 <disque> • 11 <interprete > TOTO </interprete> • 12 <titre>Showbiz</titre> • 13 </disque> • 14 <disque> • 15 <interprete> RIRI </interprete> • 16 <titre>Origin of symmetry</titre> • 17 </disque> • 18 </disques>
Exemple (DTD) • DisquesML.dtd • 1 <?xml version="1.0" encoding="ISO-8859-1"?> • 2 <!ELEMENT disques (groupe*, disque*) > • 3 <!ELEMENT groupe (nom,membre+) > • 4 <!ELEMENT nom (#PCDATA) > • 5 <!ELEMENT membre (#PCDATA) > • 6 <!ELEMENT disque (interprete, titre)> • 7<!ELEMENT interprete (#PCDATA) > • 8 <!ELEMENT titre (#PCDATA) >
DTD INTERNE • DTD interne : • 1 <?xml version="1.0" encoding="ISO-8859-1"?> • 2 <!DOCTYPE carnet [ • 3 <!-- contenu de la DTD --> • 4 ]> • le nom qui suit DOCTYPE est celui de • l’élément racine
Décrire une conversation • Une DTD pour définir la structure d’un document XML, valide pour une conversation. • [<?xml version="1.0" encoding="iso-8859-1"?> • <!DOCTYPE log [ • <!ELEMENT log ( message*)> • <!ELEMENT message (From, To, Text)> • <!ELEMENT From (User)> • <!ELEMENT To (User)> • <!ELEMENT User( #PCDATA> • <!ELEMENT Text ( #PCDATA)> • ]>