Chapite 01 & 02

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 96

Données semi-structurées

Dr. ISHAK BOUSHAKI Saida


University of Boumerdes
2021/2022
LI3 SI (S6)
1
Chapitre 1 :

Inroduction au LANGAGE XML

2
1. Rappels sur les bases de données

• Base de données: est un ensemble structuré de données enregistré


sur des supports accessible par l’ordinateur, représentant des
informations du monde réel et pouvant être interrogées par une
communauté d’utilisateurs en utilisant le langage SQL (Structured
Query Language).
• Système de gestion des bases de données (SGBD) est un ensemble de
programmes (système logiciel) qui permet à des utilisateurs de
définir, créer, mettre à jour une base de données et d’en contrôler
l’accès.

3
2. Premiers apports du Web

Vers les années 1990 le Web est apparu grâce a:


1. La rencontre des deux concepts:
 de l'hypertexte: un élément qui permet, en cliquant dessus,
d'accéder à un autre contenu;
 et de l'Internet.
2. L’utilisation du mécanisme d'adressage universel (URI, Uniform
Resource Identifiers) [URI] qui permet d'identifier de façon non-
ambiguë n'importe quelle ressource accessible par l'Internet.
3. L'absence de tout composant centralisé et le système peut se
déployer très rapidement, en s'appuyant sur les ressources déjà
disponibles sur le réseau.
4
2 Premiers apports du Web

Le mécanisme d'adressage n'impose aucune contrainte sur le


contenu des entités adressées. Il offre ainsi la possibilité de connecter
des ressources de toutes sortes, donnant ainsi au Web sa dimension
hypermédia.
Apres le HTML (Hypertext Markup Language) a été développé pour
le Web.

5
2 Premiers apports du Web
Le HTML est un langage déclaratif come le SGML :
 Un langage déclaratif: on décrit le quoi, c'est-à-dire le problème. Par exemple,
les pages HTML décrivent ce que contient une page (texte, titres, paragraphes,
etc.) et non pas comment
 Un langage impératif: on décrit le comment, c'est-à-dire la structure de
contrôle correspondant à la solution. (le C ou Java)
 Des langages impératifs ont été employé pour écrire et échanger des
documents sur le Web de façon figé et précis:
• TeX pour écrire des documents
• PostScript pour échanger des documents
 Ils affichent ou impriment le document sous la forme exacte.

6
2 Premiers apports du Web

Le format simple de HTML a comme résultat de:


• présenter aisément des pages HTML sur des appareils différents;
• développement des browsers;
• D'autres traitements que la présentation peuvent être exercés sur les
documents, comme l'indexation ou la recherche d'information, ..
• Le développement des moteurs de recherche.
Des protocoles, comme HTTP: permettent d'échanger les ressources à
travers le réseau

7
3 L'arrivée de XML

• Le langage XML (eXtensible Markup Language ) dérive de SGML


(Standard Generalized Markup Language) et de HTML (HyperText
Markup Language).
• Il s'agissait au départ de faciliter l'échange de données et de
documents SGML sur le Web.
SGML (Standard Generalized Markup Language)
• Il a été introduit en 1986 par C. Goldfarb.
• Il a ete defini pour pouvoir échanger d’information entre entreprises.
• Trop complexe et coûteux.

8
3 L'arrivée de XML

HTML (HyperText Markup Language)


• Il a été introduit en 1991 par T. Berners-Lee.
• Le langage HTML est construit sur des balises (mots placés entre < et >)
prédéfinies (non extensible)
• Bien qu’il est simple et facile a utiliser, mais il mélange entre la présentation
et le contenu.
• Il n’est pas possible avec HTML, d’échanger des documents ou des données
entre applications.
• HTML est orienté présentation et ne décrit pas la structure logique du
document.
9
3 L'arrivée de XML

XML (eXtensible Markup Language )


• La version 1.0 de XML a été publiée en 1998 par le consortium W3C
(World Wide Web Consortium).
• Il regroupe les avantages de SGML et HTML.
• Balises personnalisées
• Il sépare le contenu, la structure et la présentation
• Il est Indépendant de toutes plate-formes et de tous langages
• C’est un langage universel d’échange de données informatiques, qu’il
s’agisse de les stocker, de les échanger, de les traiter ou de les
afficher.
10
3 L'arrivée de XML

SGML (Standard Generalized HTML (HyperText Markup


Markup Language) Language)

XML (eXtensible Markup Language )

11
4 Structure et traitements

L'approche XML représente le document d'une façon abstraite,


indépendamment de tout traitement. Le même document, sous la
même forme, peut être soumis à toutes sortes d'applications:
• CSS ou XSL :pour la présentation et le formatage.
• XQuery [XQL]: pour la recherche d'information et l'interrogation de
bases de documents/données XML.
• le DOM (Document Object Model): permet de manipuler tous les
aspects du document (structure, contenu, style).
• les schémas: des modèles qui définissent la structure que doivent
respecter les documents XML.

12
4 Structure et traitements

Parseur XML
• Pour réaliser des applications XML, il faut avoir un analyseur
syntaxique comme les langages de programmation classiques (Java,
Perl, C++, Python...).
• Un analyseur syntaxique XML (ou parseur) est un outil qui analyse
un document XML pour vérifier sa syntaxe et extraire des éléments.
• Il existe deux types de parseurs :
• les analyseurs non-validants, qui contrôlent simplement que le
document XML est bien formé.
• les analyseurs validants, qui vérifient que le document XML est
valide.

13
5 Multimédia

Après la publication du standard XML, des langages de balisage construits


sur XML sont apparus, couvrant des domaines très variés (Dialectes) :
• MathML (Mathematical Markup Language) un langage de représentation
des expressions mathématiques.
• SVG (Scalable Vector Graphics): C'est un langage XML qui représente des
graphiques vectoriels à deux dimensions. Il est doté de toutes les
caractéristiques des meilleurs langages graphiques, mais il offre en plus
tous les avantages apportés par XML.
• XHTML: C'est une réécriture de HTML en XML. Il peut donc représenter le
même type de document que HTML, mais, lui aussi, apporte tous les
avantages de XML.

14
5 Multimédia

• SMIL (Synchronized Multimedia Integration Language): il intégre


efficacement des images (comme HTML) et des enregistrements
sonores ou vidéo codés dans des formats variés.
• VoiceXML [VXML]: un langage qui permet de définir des dialogues
vocaux entre un utilisateur et une application Web. Ils s'élargissent
maintenant avec la prise en compte d'autres modalités, notamment
l'écriture manuscrite.

15
6 Hypermédia

• Le modèle hypertexte des débuts du Web est très simple. Le passage


à XML a été l'occasion de développer un modèle plus riche.
• XLink [XLL] est un langage XML qui permet de représenter toutes
sortes d'hyperliens.
• C’est grâce à XLink que des documents, ou de fragments, représentés
en SVG, SMIL ou MathML, par exemple, peuvent être dotés de liens
hypertexte. Ainsi, un document multimédia peut porter des liens dans
toutes ses parties et devenir un document hypermédia.

16
7 Données structurées, non structurées et semi-structurées

• Les données structurées: leurs éléments sont organisés, selon une structure
permettant à chacun d'être traité, afin de mieux exploiter les informations. (les
bases de données)
• Les données non structurées ne sont pas organisées dans un format qui permet
d'y accéder et de les traiter plus facilement. ( Les commentaires et les
publications sur les réseaux sociaux )
• Les données semi-structurées
• constituent une forme intermédiaire. Elles sont des données qui n'ont pas été
organisées en référentiel spécialisé, mais qui comportent néanmoins des
informations associées, des métadonnées par exemple, qui les rendent plus
faciles à traiter.(Le langage XML)
( Une métadonnée est une donnée servant à définir ou décrire une autre
donnée).

17
Chapitre 2 :

LES DOCUMENTS XML

18
1. Structure des documents XML

l'entête XML

• Type du document (DTD)

Elément racine

• Remarque:
La casse des caractères dans
un document XML est
importante.

19
20
1. Structure des documents XML

• Le document XML est constitué de deux parties consécutives:


le prologue et le corps.
• Les commentaires et les instructions de traitement sont librement
insérés avant, après et à l'intérieur du prologue et du corps.
• La structure globale d'un document XML est la suivante:

21
1 Structure des documents XML

Les commentaires
• Il est possible d'insérer des commentaires dans les documents
XML, en utilisant la syntaxe suivante:
<!-- Voici le commentaire -->

• Un commentaire s'écrit entre <!- - et - - > et ne peut contenir le


caractère tiret'-'.

22
1 Structure des documents XML

Les instructions de traitement


• Les instructions pour les applications sont comprises entre <? et ?>
• Exemple :
<? XXXXXX ?>

• Les instructions de traitement sont surtout utilisées par les


applications qui génèrent du code XML comme les éditeurs XML
ou par les applications qui interprètent le code XML comme les
navigateurs.
23
1. 1 Prologue

• Le prologue contient deux déclarations facultatives mais


fortement conseillées ainsi que des commentaires et des
instructions de traitement.
1. La première déclaration: L'entête
 précise la version de XML et le codage du fichier.
2. La seconde déclaration: Type du document (DTD)
 définit la structure du document.

24
1. 1 Prologue

• La structure globale du prologue est la suivante.

25
1. 1 Prologue

• Le prologue des documents XML joue trois rôles importants:


1. Préciser qu'il s'agit d'un document XML
2. Identifier le jeu de caractères utilisé
3. Identifier la grammaire (DTD) utilisée
• Les trois éléments sont facultatifs, mais il est en général
préférable d'include la déclaration XML qui contient les deux
premiers éléments d'information.
• Si aucun jeu de caractères n'est spécifié, une application XML
doit supposer qu'il s'agit du jeu de caractères Unicode,
encodé en UTF-8 ou en UTF-16. 26
1.1.1 Entête XML

L'entête XML est encapsulé par <? et ?> et sa forme générale :


<?xml version="..." encoding="..." standalone="..."?>

• La version : soit 1.0 ou 1.1 (la majorité des documents sont en version 1.0).
• encoding : indique Le jeu de caractères employé (XML s’appuie sur des
standards ISO et Unicode).
• Standalone: précise si le fichier est autonome (complet, indépendant ). La
valeur de cet attribut peut être yes ou no. Dans le cas ou il est affecté a yes,
aucun fichier externe (DTD) n’est référencé c’est à dire qu’il est complet.

27
1.1.2 Déclaration de type de document

• La déclaration de type définit la structure du document.


• Elle précise quels éléments peut contenir chacun des éléments.
Cette déclaration de type peut prendre plusieurs formes:
oInterne :
La définition du type est incluse dans le document
oExterne:
La définition du type est se trouve dans un autre document.
(IL EST DE TYPE DTD)

28
1.1.2 Déclaration de type de document

• La déclaration de type a la forme générale suivante:


<!DOCTYPE racine TYPE "URI vers la DTD">
• racine: le premier élément (la première balise).
• TYPE: deux valeurs( SYSTEM ou bien PUBLIC ).
• SYSTEM: indique que le fichier spécifié se trouve sur l'ordinateur local
et qu'il est disponible uniquement à titre privé.
• PUBLIC: indique une ressource disponible pour tous sur un serveur
distant.
• L’URI: peut être absolue ou relative au document.
• Relative: URI relative au document.
• Absolue:URL disponible depuis n’importe quel endroit (sur
Internet/Intranet, par exemple)
29
1.1.2 Déclaration de type de document

Exemple de déclaration de DTD externe de type SYSTEM :

<!DOCTYPE racine SYSTEM "racine.dtd">

La DTD est dans un fichier nommé


"racine.dtd" et qui se situe dans le
même répertoire que le document.

30
1.1.2 Déclaration de type de document

• Exemple de déclaration de DTD externe de type PUBLIC :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"


"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

La chaîne de caractères après le mot PUBLIC fait référence


tout d'abord à l'identifiant de la DTD (ici -, qui signifie que
la DTD n'a pas de numéro d'enregistrement officiel), au
propriétaire de la DTD (ici le W3C), puis son nom, enfin sa
langue.
31
1.2 Corps du document

• Le corps du document est organisé de façon hiérarchique


(arbre).
• L'unité de cette organisation est l'élément et il y a un élément
appelé élément racine qui contient l'intégralité du document.

32
1.2 Corps du document

• Les éléments gèrent la structuration des données d’un


document XML. (Comme les répertoires qui servent à
l’organisation des fichiers.)
• À la place du terme élément, on peut utiliser les termes
balise, tag ou encore nœud.

33
1.2.1 Éléments

Composition d'un élément


 Un élément est formé d'une balise ouvrante (<name>), d'un contenu et de
la balise fermante correspondante (</name>. ).

• Les noms des éléments:


doit commencer par une lettre
peut comporter des chiffres, des lettres, les caractères moins (-), tiret
souligné ('_'), point ('.')
le nom ne peut commencer par XML que ce soit en minuscule,
majuscule ou en combinaison des deux.
34
1.2.1 Éléments

• Le contenu peut être constitué de texte, d'autres éléments, de


commentaires et d'instructions de traitement.
• L'arbre d'éléments décrit la structure hiérarchique d'un élément.
• Les éléments les plus fins sont dits éléments terminaux.
• Lorsque le contenu est vide, les deux balises peuvent
éventuellement se contracter en une seule balise de la forme
<name/>.

35
Exemple:
cours : élément acine contenant
<?xml version="1.0" trois éléments fils : intervenant,
encoding="ISO-8859-1"?> separateur et chapitre ;
<cours>
<intervenant>
Phileas intervenant : élément contenant du
</intervenant> texte ;
<separateur/>
<chapitre> separateur : élément sans contenu ;
Formation XML
<para>Un paragraphe</para> chapitre : élément contenant du
<para>Autre paragraphe</para> texte et des éléments fils para ;
</chapitre>
</cours> para : élément contenant du texte.
36
1.2.1 Éléments

Imbrication des éléments


• Si deux éléments tag1 et tag2
ont un contenu commun, alors
l'un doit être inclus dans l'autre.
• Si la balise ouvrante <tag2> se
trouve entre les deux balises
<tag1> et <tag1/>, alors la
balise fermante <tag2/> doit
aussi se trouver entre les deux
balises <tag1> et <tag1/>.

37
1.2.1 Éléments

Élément racine :
• Un élément racine est le premier élément déclaré dans un
document XML, qui contient tous les autres éléments.
• Un seul élément racine est autorisé par document.

38
2. Les attributs, Les nœuds textes, Déclaration et référence

L'arbre d'éléments XML peut contenir différents objets :

• Des attributs : les éléments peuvent contenir des


informations complémentaires stockées
• Les nœuds textes : une section littérale est une chaîne de
caractères non interprétée par le parseur XML. Cela permet
ainsi d'inclure des caractères spéciaux.

39
2.1 Les attributs

• Les attributs sont toujours associés aux éléments.


• Ils sont toujours spécifiés dans la balise d'ouverture de
l'élément.
• Le nom d'attribut respecte les mêmes règles que les noms
d'éléments.
• La valeur est exprimée en des quotes ou des apostrophes et
ne peut contenir les caractères ^, % et &.

40
2.1 Les attributs

• Un attribut est complémentaire de l’élément , composé d’un


couple (clé, valeur), localisé dans la balise ouvrante de
l’élément.
• L'association de la valeur à l'attribut prend la forme
attribute='value' ou la forme attribute="value" .
• Chaque balise ouvrante peut contenir zéro, une ou plusieurs
associations de valeurs à des attributs.
<tag attribute="value"> ... </tag>
<tag attribute1="value1" attribute2="value2"> ... </tag>
41
2.1 Les attributs
• nom et prenom sont des
• Exemple : attributs de l’élément auteur.
<auteur nom= " BOUSHAKI" • email est un attribut de l’élément
contact.
prenom= " Saida">…</auteur>
<contact email=‘[email protected]'/>
• On sépare les attributs par au moins un espace (blanc simple,
tabulation, retour à la ligne).
• Les valeurs d’attributs peuvent figurer sur plusieurs lignes.
• On utilise soit les guillemets, soit les apostrophes pour
encapsuler les valeurs.
42
2.1 Les attributs

Utilisation des caractères spéciaux


Pour inclure des caractères spéciaux dans les données, il est
nécessaire d'utiliser l'une des écritures suivantes:
1. &# suivi du numéro décimal du caractère dans les pages
UNICODE
2. &#x suivi du numéro hexadécimal du caractère dans les pages
UNICODE.
Exemple :
• &#38 et &#x26 sont équivalents à &
• &#x2200 est équivalent à ∀

43
2.1 Les attributs

En outre il existe aussi des entités prédéfinies pour les


caractères utilisés par XML:
• &gt pour >,
• &lt pour <,
• &amp pour &
• &apos pour ',
• &quot pour ''

44
2.1 Les attributs

Les attributs prédéfinis


Il existe un certain nombre d'attributs prédéfinis. C'est le cas
par exemple de l'attribut:
• xml:lang qui permet de définir la langue du document.
Exemple
<p xml :lang = 'fr'>Exemple</p>
Cet attribut est hérité par l'ensemble des éléments fils de
l'élément sur lequel il est défini.

45
2.1 Les attributs

 xml :space='preserve' ou xml :space='default'


permet d'indiquer si les caractères d'espacement (espace,
tabulation, rupture de ligne, ligne blanche) sont préservés ou
si l'application peut appliquer le traitement par défaut.

46
2.2 Les nœuds textes (Sections littérales, Sections CDATA )

• Dans un document XML, ce qui est appelé donnée est:


1. le texte qui est associé à l’attribut (sa valeur)
2. le texte qui est associé à l’élément (son contenu).

• Les données constituent le cœur du document, et tout le


reste, le formalisme, ne sert qu’à séparer et classer ces
données.

47
2.2 Les nœuds textes (Sections littérales, Sections CDATA )

Entités prédéfinies:
 Les caractères spéciaux '<', '>' et '&' ne peuvent pas être
inclus directement dans le contenu d'un document. Ils
peuvent être inclus par l'intermédiaire des entités
prédéfinies.
 Elles servent à lever une ambiguïté syntaxique pour le
parseur.
 Elles peuvent être utilisées dans un élément, pour du texte,
ou dans un attribut, pour sa valeur.

48
2.2 Les nœuds textes

Exemple des entités prédéfinies :


• &lt; équivalent de < (less than) ;
• &gt; équivalent de > (greater than) ;
• &amp; équivalent de & (ampersand) ;
• &quot; équivalent de " (quote) ;
• &apos; équivalent de ' (apostrophe).
Ambiguïté pour un parseur:
<calcul> <b et b> ?
if ( a<b et b>c) • une balise de syntaxe
... incorrecte
</calcul> • partie des données If (a&lt;b et b&gt;c)
49
2.2 Les nœuds textes

Sections CDATA (Character Data):


• Utilisé dans le contenu textuel d’un élément.
• Elle est considérée comme un bloc de texte dont les caractères
seront pris tel quel par le parseur jusqu’à la séquence de fin ]]>.
• Exemple : <element> n’est pas
<![CDATA[ considéré comme
<element>C'est un document XML une balise de
</element> structuration, mais
]]> comme du texte.
50
2.3 Déclaration et référence

• La déclaration d'une entité commence par <!ENTITY suivi du nom de


l'entité.
• Elle prend une des trois formes suivantes où name est le nom de
l'entité, fragment est un fragment de document, fpi et url sont un FPI
et une URL.
<!ENTITY name "fragment">
<!ENTITY name SYSTEM "url">
<!ENTITY name PUBLIC "fpi" "url">
• FPI (Formal Public Indentifier):
sont des noms symboliques donnés aux documents.
51
• Lorsque l'entité est déclarée avec la première syntaxe, elle est dite
interne car le fragment est explicitement donné dans la DTD du
document.
• Lorsqu'elle est déclarée avec une des deux dernières syntaxes, elle est
dite externe car le fragment provient d'un autre document.
• Ces deux dernières syntaxes sont semblables à la déclaration d'une
DTD externe dans un document XML.

52
2.3 Déclaration et référence

• Une entité de nom name est référencée, c'est-à-dire utilisée, par


&name; où le nom name de l'entité est encadré par les caractères '&'
et ';'.
• Lorsque le document est traité, la référence à une entité est remplacée
par le fragment de document correspondant.
• Une entité interne peut être référencée dans les contenus d'éléments
et dans les valeurs d'attribut alors qu'une entité externe peut
seulement être référencée dans les contenus d'éléments.

53
3. Quelques règles de syntaxe

Un document XML bien formé doit respecter:


• Le nom d’un élément ne peut commencer par un chiffre.
• Si le nom d’un élément est composé d’un seul caractère il
doit être dans la plage [a-zA-Z]
• Avec au moins 2 caractères, le nom d’un élément peut
contenir _, -, . et : plus les caractères alphanumériques.
• Tous les éléments ouverts doivent être fermés.
• Un élément parent est toujours fermé après la fermeture des
éléments fils.
54
3. Quelques règles de syntaxe

Quelques conventions de nommage


• Employer des minuscules pour les attributs et les éléments.
• Éviter les accents dans les noms d’attributs et d’éléments
pour des raisons de compatibilité.
• Préférer les guillemets délimitant les valeurs d’attribut.
• Séparer les noms composés de plusieurs mots par les
caractères -, _, . ou une majuscule.

55
4. Document bien forme et document valide: la dtd

• Un document bien formé est un document respectant la syntaxe


XML.
• Un document valide est un document bien formé qui respecte
une structure type définie dans une grammaire.
• les parseurs XML, proposent des outils de validation:
₋ Les DTD (Document Type Definition): la plus ancienne et la plus
utilisée.
₋ Les schémas W3C: plus moderne et plus complexe.

56
4. Document bien forme et document valide: la dtd

• On choisit d'associer une DTD à un document si l'on veut vérifier


sa validité (un composant optionnel du prologue XML).
• La DTD permet de spécifier la structure logique d'un document.
• C'est le parseur XML qui fonctionne en mode validant ou non,
suivant son paramétrage ou la référence à une DTD.
• La DTD n'est pas décrite en XML, elle utilise sa propre syntaxe.
• L'écriture d'une DTD est la transposition d'un modèle de données
(type MCD Merise ou modèle d'objets UML) au format XML.

57
5. Validation des documents XML (DTD)

• Une DTD peut être interne ou externe au document XML (la forme
externe est la plus recommandée pour des raisons de maintenance et
de facilité d’accès).
• La forme externe:
Le parseur XML trouvera une référence dans chaque document XML
vers la DTD externe par l’instruction d’en-tête DOCTYPE.

<?xml version="1.0"?> document XML ayant une DTD externe


<!DOCTYPE cours SYSTEM cours.dtd, située dans le même
"cours.dtd"> répertoire que le document XML
<cours>

</cours> 58
5.1 La syntaxe d’une DTD (élément)

La définition d’un élément:


• L’élément (ou balise) est exprimé par l’instruction ELEMENT suivie du nom
de l’élément que l’on souhaite décrire et de son contenu.
<!ELEMENT unNom DEF_CONTENU>

• DEF_CONTENU peut contenir :


₋ EMPTY : l’élément n’a pas de contenu ; il est donc vide. Il peut cependant
avoir des attributs.
₋ ANY : l’élément peut contenir n’importe quel élément présent dans la DTD.
₋ (#PCDATA) : l’élément contient du texte. Le caractère # est là pour éviter
toute ambiguïté avec une balise et indique au parseur qu’il s’agit d’un mot-
clé. (PCDATA signifie Parsable Character DATA). 59
5.1 La syntaxe d’une DTD (élément)
₋ Un élément placé entre parenthèses comme (nom_element). Le nom
d’un élément désigne une référence vers un élément décrit dans une
autre partie de la DTD.
₋ Un ensemble d’éléments séparés par des opérateurs, le tout placé
entre parenthèses.
• L’opérateur de choix (représenté par le caractère |)
indique que l’un ou l’autre de deux éléments (ou deux ensembles
d’éléments) doit être présent.
• L’opérateur de séquence (représenté par le caractère , )
indique que les deux éléments (ou les deux ensembles
d’éléments) doivent être présents.
60
5.1 La syntaxe d’une DTD (élément)

Exemple <!ELEMENT personne


(nom_prenom | nom)>
<!ELEMENT nom_prenom
(#PCDATA)>
<!ELEMENT nom (#PCDATA)>

autorise deux documents XML

<personne> <personne>
<nom_prenom>Brillant <nom>Brillant</nom>
Alexandre</nom_prenom> </personne>
</personne> 61
5.1 La syntaxe d’une DTD (élément)
Exemple

<!ELEMENT personne(prenom,nom)>
<!ELEMENT prenom (#PCDATA)>
<!ELEMENT nom (#PCDATA)>

autorise un seul document XML

<personne>
<prenom>Alexandre</prenom>
<nom>Brillant</nom>
</personne> 62
5.1 La syntaxe d’une DTD (élément)

• Les contenus (élément ou groupe d’éléments) peuvent être


quantifiés par les opérateurs *, + et ?.
• Ces opérateurs sont liés au concept de cardinalité.
• Lorsqu’il n’y a pas d’opérateur, la quantification est de 1 (donc
toujours présent).
• Ces opérateurs :
₋ * : 0 à n fois ;
₋ + : 1 à n fois ;
₋ ? : 0 ou 1 fois.

63
5.1 La syntaxe d’une DTD (élément)
Exemples
<!ELEMENT plan (introduction?,chapitre+,conclusion?)>
L’élément plan contient un
élément introduction optionnel,
suivi d’au moins un élément
chapitre et se termine par un
<!ELEMENT chapitre (auteur*,paragraphe+)> élément conclusion optionnel
également.

L’élément chapitre contient de


0 à n éléments auteur suivi d’au
moins un élément paragraphe. 64
5.1 La syntaxe d’une DTD (La définition d’un attribut)

• Les attributs sont précisés dans l’instruction ATTLIST.


• Cette dernière, étant indépendante de l’instruction
ELEMENT, on précise à nouveau le nom de l’élément sur
lequel s’applique le ou les attributs.
Forme syntaxique :

< !ATTLIST nom_element


nom_attribut TYPE OBLIGATION VALEUR_PAR_DEFAUT>

65
5.1 La syntaxe d’une DTD (La définition d’un attribut)
• Le TYPE peut être principalement :
₋ CDATA : du texte (Character Data) ;
Ce type est le plus général. Il n'impose aucune contrainte à la valeur
de l'attribut. Celle-ci peut être une chaîne quelconque de caractères.
₋ ID : un identifiant unique (combinaison de chiffres et de lettres) ;
₋ Un attribut de type ID permet d'identifier de façon unique un
élément du document.
Les éléments ainsi identifiés peuvent alors être référencés par
d'autres éléments grâce aux attributs de types IDREF et IDREFS.
Ces attributs créent ainsi des liens entre des éléments ayant les
attributs de types IDREF ou IDREFS et des éléments ayant les
attributs de type ID. Ce mécanisme permet uniquement de créer
des liens entre des éléments d'un même document. 66
• XML distingue deux types d'identificateurs: les NMTOKEN (jetons)
pour name token et les noms XML. La seule différence est que les
noms XML doivent commencer par certains caractères particuliers.
• Les caractères autorisés dans les identificateurs sont tous les
caractères alphanumériques, c'est-à-dire les lettres minuscules [a-z],
majuscules [A-Z] et les chiffres [0-9] ainsi que le tiret '-', le point '.' ,
les deux points ':' et le tiret souligné '_' . Un NMTOKEN est une suite
quelconque de ces caractères. Un nom XML est un NMTOKEN qui, en
outre, commence par une lettre [a-zA-Z], le caractère ':' ou le
caractère '_'. Les deux caractères '-' et '.' ainsi que les chiffres ne
peuvent pas apparaître au début des noms.

67
• Le caractère ':' est réservé à l'utilisation des espaces de noms. De fait,
il ne peut apparaître qu'une seule fois pour séparer un préfixe du
nom local dans les noms des éléments et des attributs. Les espaces
de noms amènent à distinguer les noms ayant un caractère ':',
appelés noms qualifiés et les autres, appelés par opposition noms
non qualifiés.
• Les noms commençant par les trois lettres xml en minuscule ou
majuscule, c'est-à-dire par une chaîne de [xX][mM][lL] sont réservés
aux usages internes de XML. Ils ne peuvent pas être utilisés librement
dans les documents mais ils peuvent cependant apparaître pour des
utilisations spécifiques prévues par la norme.

68
• Quelques exemples d'identificateurs sont donnés ci-dessous.
Noms XML valides :
• name, id-42, xsl:template, sec.dtd-3.1 et _special_

• NMTOKEN qui ne sont pas des noms :


-name, 42, 42-id et .sect.

• Noms réservés :
xml:id et xml-stylesheet

69
₋ IDREF : une référence vers un ID ;
₋ IDREFS : une liste de références vers des ID (séparation par un blanc) ;
₋ NMTOKEN : un mot (donc pas de blanc) ;
₋ NMTOKENS : une liste de mots (séparation par un blanc) ;
₋ NOTATION: La valeur de l'attribut est une notation
Les notations permettent d'identier par un nom le format des entités
non-analysées par le parseur XML. Elles permettent de définir le format
des données et les applications qui permettent de les traiter.

70
-ENTITY
La valeur de l'attribut une entité externe non XML

-ENTITIES
La valeur de l'attribut une liste d'entités externes non XML

71
5.1 La syntaxe d’une DTD (La définition d’un attribut)

• L’OBLIGATION:
₋ #REQUIRED : attribut obligatoire.
₋ #IMPLIED : attribut optionnel.
₋ #FIXED : attribut toujours présent avec une valeur. Cela peut
servir, par exemple, à imposer la présence d’un espace de
noms.
• La VALEUR_PAR_DEFAUT : présente pour l’énumération ou
lorsque la valeur est typée avec #IMPLIED ou #FIXED.

72
5.1 La syntaxe d’une DTD (La définition d’un attribut)
Exemples :

L’élément chapitre possède ici un


<!ATTLIST chapitre attribut titre obligatoire et un attribut
titre CDATA #REQUIRED auteur optionnel.
auteur CDATA #IMPLIED>

<!ATTLIST crayon
L’élément crayon possède un attribut
couleur (rouge|vert|bleu) "bleu">
couleur dont les valeurs font partie
de l’ensemble rouge, vert, bleu.
73
5.1 La syntaxe d’une DTD (La définition d’une entité)

• Les entités sont déclarées par l’instruction ENTITY.


• l’entité associe un nom à une valeur.
• Ce nom est employé dans le document XML comme une forme
d’alias ou de raccourci vers la valeur suivant la syntaxe &nom;.
• La valeur d’une entité peut être interne ou externe.
• Dans la forme interne la syntaxe pour déclarer une entité est la
suivante :
<!ENTITY nom "VALEUR">

74
5.1 La syntaxe d’une DTD (La définition d’une entité)

• Dans la forme externe, on se retrouve avec le même principe


qu’avec l’instruction DOCTYPE en tête du document XML
assurant le lien vers une DTD.
• Les mots-clés SYSTEM et PUBLIC servent à réaliser un lien
vers une valeur présente dans un fichier.
• Exemple : L’entité nom est liée au contenu
du fichier unTexte.txt.

<!ENTITY nom SYSTEM "unTexte.txt">

75
5.1 La syntaxe d’une DTD (La définition d’une entité)

• Les entités peuvent servir à la réalisation de la DTD pour


limiter les répétitions de blocs de définition (par exemple, un
attribut présent dans plusieurs éléments).
• Cette forme d’entité est appelée entité paramétrique et doit
être déclarée suivant la syntaxe :

L’instruction %nom; sert à


utiliser une entité
<!ENTITY % nom "VALEUR"> paramétrique dans la DTD.

76
5.1 La syntaxe d’une DTD (La définition d’une entité)

Exemple : Dans cet exemple, nous avons


créé une entité paramétrique
type_defaut qui est associée à
un type (CDATA) pour un
<!ENTITY % type_defaut "CDATA"> attribut. Cette valeur est
<!ATTLIST chapitre ensuite employée pour définir
titre %type_defaut; #REQUIRED> le typage de l’attribut titre de
l’élément chapitre.

77
5.1 La syntaxe d’une DTD (La définition d’une entité)

• Grâce aux entités paramétriques, il est également possible d’activer


ou de désactiver des blocs de définition.
• Ces blocs suivent la syntaxe suivante :

<![Valeur[
Partie de DTD
]]>

• Si Valeur vaut INCLUDE alors la partie de DTD est activée. Si Valeur


vaut IGNORE cette partie est ignorée.

78
5.1 La syntaxe d’une DTD (La définition d’une entité)

Exemple : Dans cet exemple, on définit un


attribut langue pour un élément
chapitre uniquement si l’entité
paramétrique anglais a la valeur
<!ENTITY % anglais 'INCLUDE'> INCLUDE.
<![%anglais;[
<!ATTLIST chapitre
langue (anglais|français) "français">
]]>

79
5.1 La syntaxe d’une DTD (La définition d’une entité)

Remarque
Il est possible d’utiliser plusieurs instructions ATTLIST pour un même
élément, le parseur effectuant la synthèse de tous les attributs définis.

80
5.1 La syntaxe d’une DTD (Les sections internes et externes )

• Le découpage des DTD en sections permet de mettre en œuvre un


découpage modulaire de la déclaration.
• Dans la pratique, une DTD est fréquemment composée d’une
déclaration incluant toutes les structures (éléments, attributs, entités)
spécifiques à l’auteur, et de liens à des déclarations externes incluant les
structures types communes à plusieurs documents.

81
5.1 La syntaxe d’une DTD (Les sections internes et externes )
Exemple : Fichier sectionExterne.dtd
< !ELEMENT catalogue (stage)* >
< !ELEMENT stage (intitule, description, session*) >
< !ELEMENT intitule (#PCDATA) >
< !ENTITY % planning SYSTEM « planning.dtd » >
%planning ;

Fichier planning.dtd
< !ELEMENT session (debut, fin) >
< !ELEMENT debut (#PCDATA) >
< !ELEMENT fin (#PCDATA) >
82
5.1 La syntaxe d’une DTD (Les sections internes et externes )
Exemple : Fichier SectionExterne.xml
< ?xml version= « 1.0 » encoding « ISO-8859-1 » ?>
< ?xml : stylesheet href= « SectionExterne.xsl » type= « text/xsl » ?>
< !DOCTYPE catalogue SYSTEM « SectionExterne.dtd »>
<catalogue>
<stage>
<intitule>XML – Présentation</intitule>
<description>exemple</description>
<session>
<debut>15/11/2002</debut>
<fin>13/12/2002</fin>
83
</session>
5.1 La syntaxe d’une DTD (Les sections internes et externes )

(SUITE)
<session>
<debut>10/01/2003</debut>
<fin>19/04/2003</fin>
</session>
</stage>
<stage>
<intitule>XML et bases de données</intitule>
<description>exemple</description>
</stage>
</catalogue> 84
6. Les espaces de noms

• Les espaces de noms (namespace) sont appelés aussi domaines de


noms ou espaces de nommage ont été définis afin d’éliminer des
conflits (ambiguités) des noms identiques.
• Le principe consiste a préfixer chaque nom d'élément par un nom qui
identifie le domaine auquel il fait référence.
• Les espaces de noms (namespace) permettent de délimiter la portée
d’une balise, d’un attribut ou d’une valeur d’attribut.

85
6. Les espaces de noms

Les méthodes d’intégration des espaces de noms:


1. L’espace de noms par défaut

• Il est précisé par un pseudo-attribut xmlns (ns est pour namespace).


• La valeur associée sera une URL garantissant l’unicité de l’espace de
noms.
• L’espace de noms par défaut s’applique à l’élément où se situe sa
déclaration et à tout son contenu.

86
6. Les espaces de noms

Exemple (Espace de noms par défaut ):


Ici l’élément chapitre est dans
l’espace de noms
http://www.masociete.com. C’est
également le cas de l’élément
<chapitre paragraphe, puisqu’il est dans
xmlns="http://www.masociete.com"> l’élément chapitre.
<paragraphe>
...
</paragraphe>
</chapitre>
87
6. Les espaces de noms
• Nous pouvons changer l’espace de noms par défaut même dans les
éléments enfants : dans ce cas, une règle de priorité est appliquée.
• Attention: les espaces de noms ne sont pas imbriqués ; on ne peut
appliquer qu’un seul espace de noms à la fois.
• Exemple : L’élément paragraphe n’appartient
<chapitre pas à l’espace de noms
xmlns="http://www.masociete.com"> http://www.masociete.com mais
<paragraphe uniquement à l’espace de noms
xmlns="http://www.autresociete.com"> http://www.autresociete.com.
...
</paragraphe>
</chapitre>
88
6. Les espaces de noms

Attention
• Un espace de noms par défaut ne concerne que les éléments. Les
attributs et les textes n’y appartiennent pas. Le texte d’un élément n’est
jamais dans un espace de noms puisqu’il représente la donnée.
2. L’espace de noms explicite
• L’espace de noms par défaut présente l’inconvénient d’être peu
contrôlable sur un document de taille importante. En effet, tout ajout ou
modification d’un tel espace va se répercuter sur la totalité du contenu.
• Pour disposer de davantage de souplesse dans ces espaces et pouvoir
également les appliquer aux attributs et valeurs d’attributs, la syntaxe
introduit la notion de préfixe.
89
6. Les espaces de noms

• Un préfixe est une sorte de raccourci vers l’URL de l’espace de noms.


• Déclaration: xmlns:prefixe
• Un préfixe déclaré est employable uniquement dans l’élément le déclarant
et dans son contenu.
• L’emploi consiste à ajouter en tête de l’élément, de l’attribut ou d’une
valeur d’attribut, le préfixe suivi de :.
• Exemple :
L’élément resultat est dans
<p:resultat l’espace de noms
xmlns:p="http://www.masociete.com"> http://www.masociete.com
</p:resultat> grâce au préfixe p

90
6. Les espaces de noms
Attention
• Lorsqu’un élément est préfixé, son contenu doit l’être aussi si l’on souhaite
que l’espace de noms s’applique également.
• On peut déclarer et utiliser plusieurs espaces de noms grâce aux préfixes.
• Exemple :
Le premier élément res est
<p:res
dans l’espace de noms
xmlns:p="http://www.masociete.com"
http://www.masociete.com.
xmlns:p2="http://www.autresociete.com">
L’élément res à l’intérieur est
<p2:res>
dans l’espace de noms
</p2:res>
http://www.autresociete.com
</p:res>

91
6. Les espaces de noms

Attention
On ne peut pas utiliser plusieurs préfixes en même temps sur un
élément, attribut ou valeur d’attribut (exemple à ne pas faire p:p2:res)

92
6. Les espaces de noms

La suppression d’un espace de noms:


• Aucun espace de noms n’est utilisé lorsqu’il n’y a pas d’espace de noms
par défaut ni de préfixe.
• Exemple : L’élément element est dans
l’espace de noms
http://www.masociete.com
alors que l’élément
<p:element autreelement, qui n’est pas
xmlns:p="http://www.masociete.com"> préfixé, n’a pas d’espace de
<autreelement/> noms.
</p:element>
93
6. Les espaces de noms
Pour supprimer l’action d’un espace de noms il suffit d’utiliser la valeur vide
"", ce qui revient à ne pas avoir d’espace de noms.
Exemple :
-L’élément element est dans l’espace de
<element noms http://www.masociete.com
xmlns="http://www.masociete.com"> -L’élément autreelement n’est plus dans
<autreelement xmlns=""> un espace de noms.
-L’élément encoreunelement se
.. Aucun d'espace de noms
trouve également dans l’espace de
</autreelement>
noms http://www.masociete.com, de
<encoreunelement> par l’espace de noms de son parent.
... Espace de nom par défaut
</encoreunelement>
</element> 94
6. Les espaces de noms

Application d’un esspace de noms sur un attribut


• Les espaces de nom peuvent s’appliquer via un préfixe sur un attribut
ou une valeur d’attribut.
• Cet emploi peut servir :
oà introduire des directives sans changer de structure.
oà contourner la règle qui veut que l’on ne puisse pas avoir plusieurs
fois un attribut de même nom sur une déclaration d’élément.

95
6. Les espaces de noms
Dans cet exemple, nous avons
• Exemple : qualifié l’attribut quantité
ainsi que les valeurs d’attribut
50lots et A4.

<livre
xmlns:p="http://www.imprimeur.com"
p:quantite="p:50lots">
<papier type="p:A4"/>
</livre>

96

Vous aimerez peut-être aussi