XML et DTD - Laboratoire d`Informatique de Paris 6

Transcription

XML et DTD - Laboratoire d`Informatique de Paris 6
Module BD et Sites Web
Cours 4– XML
1
Constat
• Les données du Web sont très hétérogènes (HTML, Word, pdf,
données multimedia, données structurées, etc.)
– Interopérabilité des données ?
• Les mêmes données sont souvent publiées sous des formats
différents (Web, Palm, Wap, papier,…)
– Duplication de données, difficile à gérer
• Les données des sites Web sont souvent extraites des BD.
– PHP, JSP, ASP pour générer des pages HTML
• Pas toujours simple, parfois lourd à gérer
2
Echange et Publication de données
• XML
– Echange et interopérabilité de données
• Représentation uniforme des données
• XSLT : permet d’obtenir des formats différents à partir d’un
même contenu
– Publication de données sur différents supports
• Dissocie contenu et présentation
• PHP
– Accès aux données contenues dans les BD.
3
Plan
• XML et DTD
– Document XML
– DTD
– Elément
– Attribut
4
XML
Extensible Markup Language
Format/langage standard pour la publication et l’échange de documents sur
le Web
- Consortium W3C (Oracle, IBM, MS, MIT, INRIA….) 1996
- Version 1.0 en 1998, nombreux développements depuis.
• Origine: Successeur de HTML, héritier de SGML :
• HTML est une grammaire particulière de SGML
• XML est aussi général que SGML, mais simplifié
5
XML
• Objectif
– Echange, partage, diffusion et publication de documents
– Recherche d’information : moteurs de recherche généralisée, portails
spécialisés…
– Commerce électronique
• Principes
–
–
–
–
Balisage structurel (SGML)
Balisage défini par les auteurs : souplesse
Séparer la structure logique des données de leur présentation
feuille de style XSL : ensemble de règles (XSLT) pour la réalisation sur
un médium particulier
6
Structuration des données
• En XML, les informations sont représentées sous forme d’une chaîne de
caractères, structurées à l’aide de balises :
<restaurant>
<nom> Bel Canto </nom>
<adresse>
Rue de la Tombe-Issoire
</adresse>
<telephone>
01 45 46 47 48
</telephone>
</restaurant>
• Une paire de balises (ouvrante, fermante), et ce qui est à l’intérieur,
constitue un élément XML
7
Document XML
• Un document XML peut se représenter sous deux formes:
– La forme sérialisée est la forme courante (contenu marqué
par des balises). Elle est utilisée pour
• Stocker un document dans un fichier
• Echanger des documents
– La forme arborescente met en évidence la structure du
document (facilite la conception des traitements).
• Elle permet de situer la place de l’élément dans la
hiérarchie
• Elle permet de spécifier des manipulations de données
XML
8
Exemple
<restaurant>
<nom>Bel Canto </nom>
<adresse>
Rue de la Tombe-Issoire
</adresse>
nom
<telephone>
01 45 46 47 48
</telephone>
</restaurant>
Bel Canto
restaurant
adresse
Rue de la
Tombe Issoire
telephone
01 45 46 47 48
La structure des documents est définie par le
Document Object Model (DOM)
L’arbre n’est pas forcément un arbre équilibré
9
Forme sérialisée
• Un document XML est découpé en éléments structurés
hiérarchiquement.
• Un document a un élément racine appelé élément du document.
• Un élément est composé :
– d’un nom qui spécifie son type,
– d’attributs,
– d’un contenu formé d’éléments ou de textes.
• Un texte est une chaîne de caractères.
• Un attribut a un nom et une valeur qui est une chaîne de
caractères.
• Syntaxiquement, les éléments d’un document XML sont marqués
dans le document lui-même par des paires de balises ouvrantes et
fermantes.
10
Structure d’un document
Un document est composé
– d’un prologue (facultatif)
– d’un arbre d’éléments (obligatoire : décrit le contenu)
– de commentaires et instructions de traitement (facultatif)
Exemple :
<?xml version="1.0" encoding='ISO-8859-1'
standalone='yes'>
<personne>
<nom>Martin</nom>
<prenom>Jean</prenom>
<adresse>
<rue>rue du Bac</rue>
<ville>Paris</ville>
</adresse>
<!–- pas d’autre information disponible -->
</personne>
11
Prologue
• Déclaration XML (indications au processeur)
<? xml version= ‘‘1.0’’ encoding=‘ISO-8859-1’ standalone=‘‘yes’’?>
xml version= ‘‘1.0’’ : décrit la version utilisée
encoding=‘ISO-8859-1’: codage de caractères utilisés dans
le document
standalone=‘‘yes’’
: existence de déclarations
extérieures
(yes = toutes les déclarations nécessaires au document sont
incluses)
12
Arbre d’éléments
<nom>contenu</nom>
• Un document est formé d’une hiérarchie d’éléments dénotant
la structure sémantique du contenu.
• Tout élément fils est complètement inclus dans son père.
• L’élément racine est unique et contient tous les autres
éléments.
• Un élément peut contenir d’autres éléments, des données, des
références à des entités, des sections littérales, des instructions
de traitement. Il peut aussi être vide.
• Le nom de l’élément peut éventuellement être suivi d’attributs,
qui décrivent des propriétés de l’élément. Chaque attribut a
une valeur unique.
Un document XML est bien formé s’il respecte ces principes.
13
Structures types de documents
DTD (Document Type Definition)
Les éléments qui décrivent un document peuvent être décrits dans une DTD
(Déclaration de type de document) :
<!DOCTYPE undocument SYSTEM ‘‘externe.dtd’’ [décl. internes]>
- undocument : nom du document (doit être le nom du nœud racine)
- externe.dtd : source extérieure contenant la DTD
- [décl. internes]> : déclarations locales, principalement pour les entités
La DTD est facultative :
si absente, la structure est implicite grâce au balisage,
si présente, elle doit être respectée par le document (validation).
Un document est valide s’il est conforme à une DTD
14
DTD
La DTD peut être
- incluse dans le document (standalone = ‘yes’).
- externe (standalone = ‘no’).
Elle contient des déclarations pour tous les
éléments,
attributs,
entités,
notations
utilisés dans le document.
Elle peut aussi contenir des commentaires
15
Rôles des DTD
• Modèle selon une organisation hiérarchique (définition des
éléments, attributs, contenus)
• Spécifie la structure des instances de documents : cet élément
contient ces éléments, ces attributs, etc.
• Spécifie le type de données de chaque élément et attribut
• Définition d’entités : mécanisme d’inclusion (interne, externe,
paramètre) utile pour les opérations de modularisation et de
réutilisation. (Un document peut être découpé en entités
enregistrées dans un ou plusieurs fichiers.)
16
Noms de balise
• Les noms de balise sont libres et peuvent comprendre :
– Des lettres de l’alphabet (y compris les lettres accentuées)
– Des chiffres
– Les caractères – et _
• Ils ne doivent pas contenir d’espace, et ne peuvent pas
commencer par un chiffre.
• Les majuscules sont distinguées des minuscules
17
Elément
• Un élément est composé :
– d’une balise de début qui contient le nom de l’élément et
éventuellement ses attributs,
– d’un contenu,
– d’une balise de fin.
• Par exemple :
<rapport langue="français">présentation d’XML
</rapport>
– balise de début : <rapport langue="française">
– nom : rapport
– attribut : langue="française"
– contenu : présentation d’XML
– balise de fin : </rapport>
18
Contenu d’un élément
• Définition d’un élément dans une DTD :
<!ELEMENT nom modeledecontenu>
• Le contenu d’un élément peut être
– Vide (EMPTY)
– Du texte simple (#PCDATA)
– Composé d’éléments
– Mixte : mélange de texte et d’éléments
– Libre (ANY)
19
Modèle de contenu (1)
• Modèle de contenu vide EMPTY
– Obligatoirement vide (infos uniquement dans
attributs)
– Ne peut pas être composé (pas d’éléments fils)
– Ex : <!ELEMENT note EMPTY >
• Texte simple : #PCDATA Parsed Character Data
(pas d’éléments fils)
- Ex: <!ELEMENT titre (#PCDATA)>
20
Modèle de contenu (2)
Composé d’éléments:
– Décrit l'organisation des sous-éléments directs (ie. les fils)
Deux organisations possibles :
- la séquence (fils1, fils2, …) :
fils1 est suivi de fils2 qui est suivi de ...
- le choix (fils1 | fils2 …) :
fils 1 ou fils2 ou ...
On peut décrire l'organisation par morceaux: blocs entre parenthèses
Ex: <!ELEMENT chapitre (titre, intro, (texte-long | résumé))>
21
Indicateur d’occurrence
* : nombre quelconque
+ : 1 ou plusieurs fois
? : 0 ou 1 fois
rien : exactement une fois
L'indicateur d'occurrence s'applique à un élément ou un bloc
Ex1 : <!ELEMENT chapitre (titre, intro?, paragraphe+)>
Ex2 : <!ELEMENT forum (titre, intro?, (question, réponse*)+)>
22
Modèle de contenu (3)
• Modèle de contenu mixte
(#PCDATA | élément1 | élément2 | … | élémentn)*
– Mêler données et éléments
– Ex : <!ELEMENT paragraphe (#PCDATA | em | exp | ind)*>
<paragraphe>
Du texte <em> en évidence </em>, 9 = 3<exp>2</exp>
</paragraphe>
• Modèle de contenu libre ANY
– Contenu quelconque (autres éléments et données)
– Sert à prototyper des DTD complexes
23
Attributs d’un élément
• Les attributs sont un autre moyen de représenter
l’information
<rapport langue=‘français’ date=‘2010’>
• L’ordre des attributs n’est pas important.
• Un attribut doit toujours avoir une valeur, encadrée par des
apostrophes simples ou doubles.
• Il ne peut pas y avoir deux attributs de même nom dans un
élément.
Les attributs ne sont pas ordonnés alors que les éléments le sont (on
accède à un attribut par son nom, et pas par sa position dans la balise)
24
Attributs d’un élément
• Déclaration dans la DTD :
<!ATTLIST nom-élément nom-attribut type-attribut mode-défault>
– On peut grouper la déclaration des attributs d’un même élément
– Type-attribut :
• CDATA : la valeur de l’attribut est une chaîne de caractères
• ID : identificateur d’élément,
• IDREF : renvoi vers un ID existant
• IDREFS : renvoi vers un ensemble d'ID existants
• NMTOKEN(S) : un ou des noms symboliques (sans blanc)
• (a | b | c…) : type énuméré.
• ENTITY : entités externes non XML
– Mode :
• Valeur par défault
• Obligatoire : #REQUIRED
• Facultatif : #IMPLIED
• Constante : #FIXED
25
Exemples d’attributs
• Dans la DTD
<!ELEMENT date (#PCDATA)>
<!ATTLIST date format (ANSI | ISO| FR) #REQUIRED>
• Dans le document
<date format=‘FR’>15 février 2013 </date>
<date format=‘ISO’>2013-2-15 </date>
26
Exemple
<!ELEMENT bibliothèque (personne+, livre+)>
<!ELEMENT personne (nom)>
<!ATTLIST personne num ID #REQUIRED>
<!ELEMENT livre (titre, auteur+)>
<!ELEMENT auteur EMPTY>
<!ATTLIST auteur nom CDATA #REQUIRED>
<!ELEMENT nom (#PCDATA) >
<!ELEMENT titre (#PCDATA) >
-------------------------------------------------------------------------------------------<bibliothèque>
<personne num="p1"><nom>Toto</nom></personne>
<personne num="p2"><nom>Titi</nom></personne>
<livre>
<titre>XML en 2 jours </titre>
<auteur nom="Toto"/>
<auteur nom="Titi"/>
</livre>
27
</bibliothèque>
Exemple
<!ELEMENT bibliothèque (personne+, livre+)>
<!ELEMENT personne (nom)>
<!ATTLIST personne num ID #REQUIRED>
<!ELEMENT livre (titre, auteur+)>
<!ELEMENT auteur EMPTY>
<!ATTLIST auteur ref IDREF #REQUIRED>
<!ELEMENT nom (#PCDATA) >
<!ELEMENT titre (#PCDATA) >
-------------------------------------------------------------------------------------------<bibliothèque>
<personne num="p1"><nom>Toto</nom></personne>
<personne num="p2"><nom>Titi</nom></personne>
<livre>
<titre>XML en 2 jours </titre>
<auteur ref="p1"/>
<auteur ref="p2"/>
</livre>
</bibliothèque>
28
Attribut de type IDREFS
<!ELEMENT bibliothèque (personne+, livre+)>
<!ELEMENT personne (nom)>
<!ATTLIST personne num ID #REQUIRED>
<!ELEMENT livre (titre, auteurs)>
<!ELEMENT auteurs EMPTY>
<!ATTLIST auteurs ref IDREFS #REQUIRED>
<!ELEMENT nom (#PCDATA) >
-------------------------------------------------------------------------------------------<bibliothèque>
<personne num="p1"><nom>Toto</nom></personne>
<personne num="p2"><nom>Titi</nom></personne>
<livre>
<titre>XML en 2 jours </titre>
<auteurs ref="p1 p2"/>
liste de valeurs
existantes séparées par un espace
</livre>
</bibliothèque>
Un seul élément auteurs par livre, pour représenter une association N-M entre
livres et auteurs
29

Documents pareils