Technologie XML (eXtensible
Markup Language)
Adil KENZI
AU 2010/2011
Plan du cours
 Introduction
 Structure des documents XML
 Validation des documents XML
 Validation par DTD
 Validation par un schéma W3C
 Publication de documents XML
 Le format pour le Web : XHTML
 L’utilisation des feuilles de style CSS
 Le langage de requête XPath
 Le format XSLT (eXtensible Style language Transformation)
 Programmation XML
 La technologie DOM (Document Object Model)
 La technologie SAX (Simple API for XML)
2
AU 2010/2011
Historique
 SGML: Standard Generalized Markup Language (ISO
8879), 1974
 Description de la structure d’un type de document
 Les documents de ce type respecte la structure
 DSSSL: Document Style Semantics and Specification
Language
 Feuille de style est associé à un type de document
 SPDL: Standard Page Description Langage
 Formatage des documents SGML +(DSSSL)
3
AU 2010/2011
Historique des langages du Web
 Diffusion du Web (1990)
 Faciliter l’accès à l’information
 Naissance de HTML
 Web évolue et HTML montre ses limites
 Utiliser la technologie pour d’autres fins
 Naissance de XML (1997)
 Janvier 1998, adoption de la première version de XML
par le W3C
4
AU 2010/2011
Besoin du XML
 Le traitement et le stockage de l’ensemble des
informations de l’entreprise durant toutes les étapes de
production
 Formalisme pour les informations;
 Une représentation unique afin d’être bien exploitées;
 Echange et traitement automatique de données
5
AU 2010/2011
Besoin du XML
 Structure et validation des documents
 Afin d’adapter un document à une structure bien définie,
exemple base donnée (relationnelle);
 Transformation et adaptation
 Besoin de transformer les données d’un fichier vers une
représentation bien définie, et selon les contraintes de
l’entreprise;
6
AU 2010/2011
XML
 XML : eXtensible Markup Language permet de décrire
les informations de façon à :
 les présenter
 les transmettre
 les transformer
 Le domaine d'application de XML :
 Echange de documents
 Commerce électronique
 Interopérabilité de systèmes d'information hétérogènes.
7
AU 2010/2011
HTML Vs XML
 Exemple code HTML: les données sur un ordinateur
8
<BODY>
<UL>
<LI> Toshiba Satellite</LI>
<LI> A 100</LI>
<LI> AMD sempron 3 Ghz</LI>
<LI> 3 Mo </LI>
<LI> 250 Go</LI>
</UL>
……
</BODY>
AU 2010/2011
HTML Vs XML
 Document XML
 Lisibilité: données auto-documentées
 Séparation entre l’information et la présentation
 Traitement par d’autres applications
9
……..
<constructeur> Toshiba Satellite</constructeur>
<modele proc= > A 100 </modele>
<processeur> AMD sempron 3 Ghz </processeur >
<ram> </ram>
<ddr> 250 Go</dde>
……
AU 2010/2011
Comparaison entre XML et HTML
 HTML possède un jeu de balises fixes;
 XML n'a pas de balises prédéfinies mais nous permet de
définir nos propres balises;
 HTML mélange le contenu et la présentation
améliorations possibles cependant avec CSS);
 Des liens trop simples;
 XML ne décrit que du contenu pur;
 Pour la présentation on pourra utiliser du XSL ou générer du
HTML+CSS grâce à des outils comme XSLT;
10
AU 2010/2011
Aperçu général
 Que signifie XML ?
 eXtensible: une infinité de balises;
 Markup: identifier les # éléments d’un document au
moyen de balises;
 Language: respecter un certain nombre de règles.
 XML est un standard de création de langages;
 XML décrit la structure et la sémantique, pas
l’aspect;
11
AU 2010/2011
XML est une collection de spécifications
 XML est en fait une collection de spécifications et de "vocabulaires"
associés, basés sur la même syntaxe. Les trois parties les plus
importantes sont les suivantes :
 XML 1.0 Recommendation : c'est la spécification de base du langage extensible
de balisage XML qui décrit en détail la syntaxe du méta-language;
 XML Linking Language (XLink) et Xpointer: ces deux documents du W3C
décrivent différentes façons, assez complexes, d'exprimer les schémas de
relations entre documents et sections de documents;
 Extensible Style Language (XSL): XSL décrit comment les documents XML
peuvent être présentés sur différents périphériques d'affichage et plus
généralement ces documents peuvent être transformés.
12
AU 2010/2011
Cycle de vie d’un document XML
13
XML
DTD
XML
schéma
Document
Structure
XML
transformé
HTML
Text/PDF
Transformation
XSL
CSS
API
Résultats
Application
Navigateur
Utilisation
Schéma I
AU 2010/2011
Quelques Editeurs XML
Un éditeur XML est un éditeur de langage à balises avec des
fonctionnalités ajoutées pour faciliter l'édition XML
 XMLSpy(http://www.altova.com)
 Stylus Studio
 EditiX(http://www.editix.com)
 XMLCooktop
 Gratuit
 XMLNotepad 2007
 Plateforme Windows
 gratuit
14
15
Structure d’un document XML
AU 2010/2011
Exemple simple
<?xml version="1.0" encoding="ISO-8859-1"?>
<!– Fiche technique -->
<laptop constructeur= " Toshiba">
<serie ref = " Satellite ">
</serie>
< description>
Toshiba professional series
AMD prossesor 2Ghz
4Go memory
</description>
</laptop>
16
Prologue
Commentaire
Les éléments
AU 2010/2011
Composantes d’un document XML
Partie I
 Prologue: Une déclaration d’un document XML
 Commentaires (facultatif)
 Les différents éléments du document
Partie II
 Définition optionnelle de type de document
 Instructions de traitements: fournissent de
l’information à une application XML
 Références aux entités
17
AU 2010/2011
Le prologue: entête
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
 Version="1.0" : version de la spécification XML utilisée.
Il existe aussi la version 1.1, mais la version 1.0 est la plus utilisée;
 Le jeu de caractères employé (encoding), afin de permettre
à l’analyseur (parser) du fichier XML de mieux interpréter le
jeu des caractère;
Encoding="UTF-8": le jeu de caractères utilisé
 Standalone: indiquant la présence de déclaration externes
(DTD par exemple) nécessaires au traitement du document.
 Avec standalone="yes" vous mentionnez que la DTD se trouve
dans le fichier actuel
 Avec standalone="no" vous faîtes savoir que la DTD se trouve
dans un fichier séparé.
18
AU 2010/2011
Les nœuds éléments
 Sont le contenu du document, identifiés par un nom;
 Composantes de base d’un document XML
 gèrent la structuration des données d’un document XML, un peu à la manière
des répertoires qui servent à l’organisation des fichiers.
 Un nom XML valide est composé de chiffres, lettres, tirets, blancs soulignés,
deux points et un point. Un nom XML doit commencer par une lettre ou un
blanc souligné
 Pour décrire ce que contiennent les éléments, on parle de modèle de contenu.
On trouve :
 Rien : il n’y pas de contenu, l’élément est vide.
 Du texte
 Un ou plusieurs éléments : on peut les qualifier d’éléments fils,
l’élément les contenant étant appelé un élément parent
 Un mélange de textes et d’éléments : c’est une forme plus rare qui
peut révéler une erreur de structuration.
19
AU 2010/2011
Les nœuds éléments
 Exemple :
<?xml version="1.0" encoding="ISO-8859-1"?>
<cours>
<intervenant>
Phileas
</intervenant>
<separateur/>
<chapitre>
Formation XML
<para>Un paragraphe</para>
<para>Autre paragraphe</para>
</chapitre>
</cours>
 cours : élément racine contenant trois éléments fils : intervenant, separateur et
chapitre ;
 intervenant : élément contenant du texte ;
 separateur : élément sans contenu ;
 chapitre : élément contenant du texte et des éléments fils para ;
 para : élément contenant du texte.
20
AU 2010/2011
Les balises
 Servent à décrire un élément:
<nom>Windows</nom>
 Toute balise rencontrée est analysée:
 Contrairement à HTML qui ignore les balises non
valides;
 Les balises XML sont sensibles à la Casse:
 Contrairement à HTML.
21
AU 2010/2011
Attributs
 Contient des informations sur l’élément;
 = paires nom/valeur associées à un élément:
<ram UNITE="Mo" >256 </ram>
 Un élément peut avoir plusieurs attributs:
<auteur NE="1910" MORT="2000 ">
 les valeurs d’attributs:
 Un nombre, une chaîne de caractères, une adresse,…
 Attributs prédéfinis: xml:lang, xml:space
22
AU 2010/2011
Choix entre attributs et éléments
 Cas avec attributs
<personne nom="brillant" prenom="alexandre"/>
 Cas sans attributs
<personne>
<nom>
brillant
</nom>
<prenom>
alexandre
</prenom>
</personne>
 Difficile d’utiliser un attribut à la place d’un élément :
Cas avec éléments :
<carnet>
<personne>…
</personne>
<personne>…
</personne>
</carnet>
23
AU 2010/2011
Commentaires
 Ce sont les mêmes qu’en HTML. Ils se positionnent
n’importe où après le prologue et peuvent figurer sur
plusieurs lignes
<!– Ordinateur en promotion – 20% -->
24
AU 2010/2011
Les règles syntaxiques du langage
XML
 R1: le document doit commencer par une déclaration
XML;
 R2: attention à la capitalisation des noms et des
attributs;
 R3: les valeurs des attributs doivent être quottées " " ;
 R4: les balises non vides doivent être appariées;
 R5: les balises vides doivent être fermées;
 R6: les éléments ne doivent pas se chevaucher;
 R7: un élément principal doit enfermer tous les autres;
 R8: ne pas utiliser les caractères < et & seuls.
25
AU 2010/2011
Document bien formé et valide
 Il existe deux types de document XML
 Bien formé: respecte les règles syntaxiques du langage
XML
 Valide: bien formé + conforme à une grammaire (DTD
ou schéma)
26
AU 2010/2011
Exercice I
Création d’un livre en XML
On souhaite écrire un livre en utilisant le formalisme XML. Le livre est
structuré en sections (au moins 2), en chapitres (au moins 2) et en
paragraphes (au moins 2).
Le livre doit contenir la liste des auteurs (avec nom et prénom).
Tous les éléments doivent posséder un titre, sauf le paragraphe qui contient
du texte.
Proposez une structuration XML de ce document (avec 2 auteurs, 2 sections,
2 chapitres par section et 2 paragraphes par chapitre).
Vérifiez, à l’aide de l’éditeur ou navigateur, que votre document est bien
formé.
Attention : ne pas utiliser d’attributs
27
AU 2010/2011
Exercice 2 : Utilisation des attributs
 Conception de livre2.xml à partir de livre1.xml
On souhaite compléter la structure du document XML
de l’exercice précédent par les attributs nom et
prenom pour les auteurs et titre pour le livre, les
sections et les chapitres.
 Analysez la structure du nouveau document. Y a-t-il
des simplifications possibles ?
 Vérifiez que votre document est bien formé.
28
AU 2010/2011
Exercice 3
 L'objectif de l'exercice est de proposer un format XML
permettant de stocker des articles quelconques.
 Un article est constitué d'un titre, d'un texte et d'une
bibliographie ;
 le texte lui-même est une succession de paragraphes, chaque
paragraphe pouvant contenir :
 des mots ou expressions importants et devant donc être différenciés
du reste du paragraphe ;
 des références bibliographiques ;
 une entrée dans la bibliographie peut décrire soit un site web,
soit un ouvrage ;
 un site web est décrit par un nom et une url ;
 pour un ouvrage, on trouve le titre, les auteurs, la date de
parution et l'éditeur.
29
AU 2010/2011
Section CDATA: section littérale
 CDATA signifie "Character data" = données textuelles
 Intérêt: Insérer du texte non interprété par le
processeur XML
 Exemple de codes XML
 La syntaxe:
<! [CDATA [
Texte non analysé,
]]>
NB: on ne peut pas imbriquer deux sections CDATA
30
AU 2010/2011
Les entités du document
 Les unités de stockage pour les composants du
document sont des entités.
 L’élément racine et ses sous-éléments peuvent contenir
des références à d’autres entités.
 Le processeur XML regroupe toutes les entités formant
le document pour un traitement de l’ensemble.
31
AU 2010/2011
Définition du type de document
 Sert à lier une grammaire de type DTD (Document Type Definition) à
votre document XML. Elle est introduite avant la première balise
(racine) de votre document sous cette forme :
<!DOCTYPE racine SYSTEM "URI vers la DTD">
 racine est le premier élément (la première balise). URI peut être absolue
ou relative au document.
<!DOCTYPE laptop SYSTEM "fiche.dtd">
32
AU 2010/2011
Les entités du document
 Entités se subdivisent en deux catégories:
 Analysables: contiennent un texte XML bien formé
 Non-analysables: contiennent du texte non-XML ou des
données binaires.
 Ils sont de deux types:
 Internes : définies dans l’entité document elle-même
 Externes: elles dépendent d’une source de données
externe au document XML
33
AU 2010/2011
Entités internes
 Entité interne correspond à une version abrégée d’un
texte long ou difficile à saisir
<!ENTITY nom "texte associé" >
Exemple: <!ENTITY email "NOM@ufr.ac.ma" >
 La référence se fait par le préfixe & et en rajoutant à la
fin du nom un point-virgule : &email;
 Entités prédéfinies: lt, gt, amp, apos et quot
représentent respectivement les caractères <, >, &, ", '.
34
AU 2010/2011
Entité interne: Exemple
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE livre [
<!ENTITY auteur "Nom et prénom de l’étudiant">
]>
<livre>
<auteur>
Cours réalisé par &auteur;
</auteur>
</livre>
35
AU 2010/2011
Entités externes
 Entités externes sont définies à l’intérieur de la DTD au
moyen de la déclaration <!ENTITY….>
<!ENTITY nom SYSTEM "URI">
Exemple:
<!DOCTYPE parc-machine [
<!ENTITY lab01 SYSTEM "http://www.ufr.ma/lab01.xml" >
]>
 Une référence à l’entité lab01 permet l’inclusion du
fichier lab01.xml dans le document principal.
 La référence : &lab01;
36
AU 2010/2011
Entités externes: Exemple
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE livre [
<!ENTITY auteur "Nom et prénom de l’étudiant">
<!ENTITY chap1 SYSTEM "chapitre1.xml">
]>
<livre>
<auteur>
Cours réalisé par &auteur;
</auteur>
&chap1;
</livre>
37
AU 2010/2011
Entités prédéfinies
 lt: caractère '<'
 gt: caractère '>'
 amp: caractère 'é'
 quot: caractère '"' (guillement double)
 apos: caractère "'" (quillement simple ou apostrophe)
38
AU 2010/2011
Les instructions de traitement
 Des informations supplémentaire n’ont pas de rôle lié
aux données ou à la structuration de votre document;
 Des informations qui visent les applications afin de
mieux traiter les données du document XML;
 Pas d’emplacement exigé dans le document;
Exemple:
<?xml-stylesheet type="text/xsl" href= "display.xsl"?>
NB : Encadrée des caractères <? et ?>
39
AU 2010/2011
Référence à la feuille de style
<?xml-stylesheet type="text/xsl" href="comp.xsl"?>
 La feuille de style XSL est référencée par le URL en
utilisant l’attribut href;
 Un processeur XSL sur le client ou le serveur reçoit les
documents XML et XSL en entrée et génère le
document de sortie (HTML, XML modifié,…).
40
AU 2010/2011
Exercice: entités prédéfinies
Utilisation des entités prédéfinies
On se propose de créer un nouveau document
livre2bis.xml reprenant l’exercice précédent
(livre2.xml). Placez dans 2 paragraphes un bloc de texte
contenant l’extrait suivant :
<paragraphe> a &gt; b </paragraphe>
Pour le premier paragraphe, employez les entités
prédéfinies.
Pour le deuxième paragraphe, employez une section
CDATA.
41
AU 2010/2011
Exercice : (entités internes et
externes)
 Reprendre l’exemple du livre
 Utiliser une entité interne pour l’auteur
 Utiliser une entité externe pour les paragraphes
42
AU 2010/2011
Espaces de noms
 Problème: des noms d’éléments ou des noms
d’attributs identiques ⇒ ambiguïtés
 Les espaces de noms (namespaces) permettent:
 De mélanger du vocabulaire XML provenant de plusieurs
grammaires
 D’identifier de manière unique les balises XML
 Recommandation: www.w3.org/TR/REC-xmlnames
43
AU 2010/2011
Espaces de noms
 La définition d’un espace de noms peut se faire dans
n’importe quelle balise ouvrante d’éléments d’un
document XML
 Syntaxe: xmlns:prefixe= URI
 Exemple : xmlns:reseau=
"http://www.ufr.com/xml/reseau"
44
AU 2010/2011
Espaces de noms: Par défaut
 Un premier usage consiste à utiliser simplement l’espace de noms par
défaut. Ce dernier est précisé par un pseudo-attribut xmlns;
 L’espace de noms par défaut s’applique à l’élément où se situe sa
déclaration et à tout son contenu.
<livre xmlns="http://www.ensa.ac.ma">
<section>
...
</section>
</livre>
45
AU 2010/2011
L’espace de noms explicite
 Pour plus de souplesse dans les documents de
grande taille, l’utilisation de plusieurs espaces de
nom est courante, on peut utiliser un préfixe
 Un préfixe est un raccourci vers l’URL de l’espace
de nom.
<es:livre xmlns:es="http://www.hhhh.ac.ma">
</es:resultat>
46
AU 2010/2011
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 :
<p:element xmlns:p="http://www.masociete.com">
<autreelement/>
</p:element>
 L’élément element est dans l’espace de noms
http://www.masociete.com alors que
 l’élément autreelement, qui n’est pas préfixé, n’a pas d’espace de
noms.
47
AU 2010/2011
Suppression d’un espace 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 :
<element xmlns="http://www.masociete.com">
<autreelement xmlns="">
.. Aucun d'espace de noms
</autreelement>
<encoreunelement>
... Espace de nom par défaut
</encoreunelement>
</element>
 L’élément element est dans l’espace de noms
http://www.masociete.com
 l’élément autreelement n’est plus dans un espace de noms.
 L’élément encoreunelement se trouve également dans l’espace de
noms http://www.masociete.com, de par l’espace de noms de son
parent.
48
AU 2010/2011
Exercice: Espaces de nom
 Il s’agit de créer un document livre3.xml sur la base de
livre1.xml en respectant les points suivants :
 Mettez tous les éléments dans l’espace de noms
http://www.masociete.com sans utiliser d’espace de
noms par défaut.
 Mettez la deuxième section dans un espace de noms
http://www.monentreprise.com.
 Mettez le dernier paragraphe du dernier chapitre de la
dernière section sans espace de noms.
49
AU 2010/2011
DTD: Document Type Definition
50
AU 2010/2011
Principe
 Une déclaration de type de document définit:
 Le nom des types d’éléments, leur contenu et dans quel
ordre d’autres éléments peuvent y apparaître;
 Les attributs éventuels et leur valeurs par défaut;
 Le nom des entités qui peuvent être utilisées.
 DTD peut être interne ou externe;
 Les documents XML valides doivent respecter les
règles données dans la DTD;
 Dans une DTD, tout ce qui n’est pas expressément
autorisé est interdit;
 Une DTD peut contenir des commentaires.
51
AU 2010/2011
Consignes avant l’utilisation
 La DTD est un texte simple qu’on peut créer par
n’importe quel éditeur de texte;
 Bien qu'ils ressemblent un peu cryptique au premier
lieu, ils demeurent faciles une fois que vous vous
habituez à eux;
52
AU 2010/2011
Déclaration d’une DTD
Déclaration de type de document:
<!DOCTYPE ElementRacine
Et se termine par >
Cette déclaration contient la DTD (DTD interne) ou une
adresse URL (DTD externe)
DTD interne:
<!DOCTYPE parc-machine [
<!– declarations -- >
]>
53
AU 2010/2011
Eléments de document
 Toujours dans une DOCTYPE on déclare un type de
document avec le mot clé ELEMENT:
<!ELEMENT nom d’élément (les fils+nombre ou le type)>
Exemple:
<!ELEMENT livre (auteur+)>
54
AU 2010/2011
Les éléments fils
 Lors de la définition d’un élément fils, il est possible
de spécifier le nombre d’apparition du fils par l’ajout
d’un modificateur (modifier) après le nom du fils. Si
le modificateur n’est pas mentionné, cela signifie que
le fils va apparaitre une et une seule fois. Les autres
options sont décrits dans le tableau suivant :
55
Modificateur Description
Rien Une seule fois
? Zero ou une seule fois
+ Une ou plusieurs fois
* Zero ou plusieurs fois
AU 2010/2011
Les éléments fils
 La déclaration des éléments fils est similaire que les
éléments parents, et ils ont le même niveau dans la
DOCTYPE:
<!ELEMENT titre (titre_ principal)>
Le sous élément fils ‘titre’ doit avoir un seul fils qui est
titre principal.
56
AU 2010/2011
Les éléments fils II
<!ELEMENT auteur (nom, prénom)>
L’élément auteur contient deux sous éléments qui
apparaitront une seule fois
57
AU 2010/2011
Les éléments fils III
<!ELEMENT firstname (#PCDATA)>
<!ELEMENT lastname (#PCDATA)>
 Parfois, les éléments contiennent que du texte. Il est
déclaré dans la DTD comme #PCDATA.
 PCDATA est Character DATA, du texte analysé par le
moteur XML.
58
AU 2010/2011
Ordre des éléments
<!ELEMENT chapitre (titre, paragraphe)>
 On peut indiquer l’ordre de l’apparition des éléments
fils. En précisant dans les parenthèse l’ordre par les
virgules.
 Dans l’exemple, c’est le titre qui doit apparaitre le
premier, suivi de deux paragraphes.
59
AU 2010/2011
Le choix des éléments
<!ELEMENT auteur (nom|prenom)>
 Dans le cas où il y a un choix d’élément, le caractère |
signifie que l’un des éléments peut apparaitre, ou les
deux ensembles.
60
AU 2010/2011
Des éléments spéciaux
<!ELEMENT img EMPTY>
 l’élément est vide. Il ne peut contenir ni sous-
éléments ni données textuelles, mais il peut avoir des
attributs.
61
AU 2010/2011
Un contenu mixte
<!ELEMENT paragraphe (#PCDATA | sousparagraphe)>
 Parfois, les éléments peuvent contenir des valeurs
textuelles, et des sous éléments.
 Il est possible de définir ce cas par l’utilisation du
caractère | et les définitions du type associées.
62
AU 2010/2011
L’emplacement des modificateurs
 L’emplacement des modificateurs est très important
dans la définition du type de document.
 Si le modificateur est en dehors des parenthèses,
signifie qu’il est appliqué sur l’ensemble des sous
éléments.
 S’il est à coté d’un élément, il sera appliqué qu’au
niveau de ce dernier.
<!ELEMENT auteur (nom | prénom)*>
<!ELEMENT auteur (nom | prénom*) >
<!ELEMENT auteur (nom , prénom) * >
<!ELEMENT auteur (nom , prénom*) >
63
AU 2010/2011
Déclaration Complexe
 La déclaration des éléments peut être complexe. Dans
ce cas, l’utilisation des parenthèse est importante pour
plus de précision.
 Par exemple, on peut spécifier que l’auteur est
composé d’un nom_complet, ou de nom et prénom:
<!ELEMENT auteur (nom_complet | (nom , prénom))>
64
AU 2010/2011
Déclarations des attributs
 La déclaration des attributs se fait par le mot clé ATTLIST,
suivi par le nom de l’élement.
<!ATTLIST nomElement
nomAttribut typeAttribut Etat Valeurrpardefaut?
nomAttribut typeAttribut Etat Valeurrpardefaut?
>
 nomElement est l’élément qui contient l’attribut;
 nomAttribut est le nom de l’attribut;
 typeAttribut est le type de l’attribut;
 Etat, il y a trois valeurs possibles: #REQUIRED(obligatoire),
#FIXED (attribut toujours présent avec une valeur), et
#IMPLIED (optionnel).
 Valeurpardefaut c’est la valeur par défaut que peut prendre
un attribut;
65
AU 2010/2011
Exemple- attributs
<!ELEMENT ressources (ressource)*>
<!ELEMENT ressource (#PCDATA)>
<!ATTLIST ressource url CDATA #REQUIRED
langue CDATA #IMPLIED
date_saisie CDATA #REQUIRED
date_modification CDATA #IMPLIED
>
66
AU 2010/2011
Types d’attributs
 CDATA: des données textuelles
<!ATTLIST ram unite CDATA #REQUIRED>
<ram unite=“Mo”>....</ram>
 NMTOKEN: un nom XML valide
<!ATTLIST photo Nom NMTOKEN #REQUIRED>
<photo Nom=“terre” ...>....</photo>
 NMTOKENS: plusieurs noms XML séparés par des espaces
<!ATTLIST photo Nom NMTOKENS #REQUIRED>
<photo Nom=“ la terre” ...>....</photo>
 (val1|val2|…): une liste des valeurs possibles pour l’attribut, chaque valeur doit
correspondre à un nom XML valide.
<!ATTLIST photo Type (GIF|JPEG|PNG) “GIF”>
<photo Type=“GIF” ...>....</photo>
 ID: un identificateur unique d’un élément. C’est un nom XML valide
<!ATTLIST machine idf ID #REQUIRED >
67
AU 2010/2011
Types d’attributs
 IDREF: l’attribut peut prendre comme valeur la valeur d’un attribut
de type ID d’un élément du document.
<!ATTLIST personne ref IDREF #IMPLIED >
<machine idf="mach001">… </machine>
<personne ref="mach001" …>…</personne>
 IDREFS: l’attribut peut prendre comme valeur une liste de valeurs
d’attributs ID de plusieurs éléments du document.
<!ATTLIST personne ref IDREFS #IMPLIED >
<machine idf="mach001">… </machine>
<machine idf="mach002">… </machine>
<personne ref="mach001 mach002" …>…</personne>
68
AU 2010/2011
Type d’attribut
 ENTITY: l’attribut peut prendre comme valeur le nom d’une entité
générale externe non-analysable. Ce type d’attribut sert à référencer
des données binaires externes (images, fichiers sons,…)
 ENTITIES: l’attribut peut prendre comme valeur les noms de plusieurs
entités générales externes non-analysables.
69
AU 2010/2011
Valeurs par défaut des attributs
 Il est possible de donner une valeur par défaut à
un attribut
<!ATTLIST edition type (papier|electronique) "papier" >
 La signification de ces mots clés est la suivante:
– #REQUIRED: l’attribut doit être tjs présent lorsque
l’élément est utilisé. Il n’y a pas de valeur par défaut
<!ATTLIST edition date CDATA #REQUIRED>
– #IMPLIED: l’attribut correspondant est optionnel. Celui
ci ne prendra aucune valeur par défaut
<!ATTLIST edition version CDATA #IMPLIED>
– #FIXED valeur: l’attribut correspondant est optionnel.
Cela revient à définir une valeur constante.
<!ATTLIST edition new NMTOKEN #FIXED "yes">
70
AU 2010/2011
Entités paramètres
 entités mais définies et utilisées à l’intérieur de la DTD
(jamais dans le document XML)
 Différence:
 la référence commence par le signe %
 La définition commence par % suivi d’un espace et du nom
de l’entité
 Exemples:
1- <!ENTITY % TYPE ‘(CD|DVD)’>
<!ATTLIST DISQUE GENRE %TYPE;>
2- <!ENTITY % text “(#PCDATA)”>
<!ELEMENT NOM %text;>
71
Exemple-Entités paramètres
72
<!ENTITY % article "numero_article, nom_article, quantite_article">
<!ENTITY % additif "description | classe_produit">
<!ELEMENT stock (entree | sortie)*>
<!ELEMENT entree (numero_entree, (%article;), (%additif;))>
<!ELEMENT sortie (numero_sortie, (%article;), (%additif;))>
<!ELEMENT numero_entree (#PCDATA)>
<!ELEMENT numero_sortie (#PCDATA)>
<!ELEMENT numero_article (#PCDATA)>
<!ELEMENT nom_article (#PCDATA)>
<!ELEMENT quantite_article (#PCDATA)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT classe_produit (#PCDATA)>
AU 2010/2011
Entités paramètres externes
 Le but: permettre la construction de DTD complexes
par la mise en commun de plusieurs DTD.
 Pour relier entre 2 DTDs, la syntaxe est la suivante:
 Pour une DTD privée:
<!ENTITY % nom SYSTEM "URI“
%nom;
 Pour une DTD publique:
<!ENTITY % nom PUBLIC "NomDTD" "URI">
%nom;
N.B: URI est l’adresse de la DTD à inclure
73
Exemple
74
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE commandes SYSTEM "commandes.dtd">
<commandes>
<commande>
<produit>
<numero_produit>39304</numero_produit>
<description>perceuse XPL75</description>
<fabricant>Bohringer &amp; fils</fabricant>
</produit>
<client>Uniprix, Filiale de Venelles</client>
<nombre>100</nombre>
<prix>45900,00</prix>
</commande>
<commande>
<produit>
<numero_produit>92842</numero_produit>
<description>Bonnet de bain Monaco</description>
<fabricant>Etienne Monet</fabricant>
</produit>
<client>La mode à l'eau, Dunkerque</client>
<nombre>10</nombre>
<prix>234,00</prix>
</commande>
</commandes>
Exemple de DTD avec des entités
externes
75
<!ELEMENT produit
(numero_produit,description,fabricant)>
<!ELEMENT numero_produit (#PCDATA)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT fabricant (#PCDATA)>
<!ENTITY % donnees_produit SYSTEM
"produit.dtd">
%donnees_produit;
<!ELEMENT commandes (commande)*>
<!ELEMENT commande (produit, client,
nombre, prix)*>
<!ELEMENT client (#PCDATA)>
<!ELEMENT nombre (#PCDATA)>
<!ELEMENT prix (#PCDATA)>
AU 2010/2011
Limites de DTD
 non extensibles (à la différence de XML)
 Une seule DTD peut être associe à chaque document
 incompatibles avec les espaces de noms XML
 Typage très faible: pas de possibilités de distinguer des
types, tels nombres entiers, nombres réels et chaînes de
caractères
 Pas d’héritage des objets
 Une syntaxe non XML
 Pas de prise en charge des API de XML: pas de mécanismes
pour permettre l’extension et l’évolution
 Outils peu nombreux assez anciens et onéreux
76
AU 2010/2011
Exercice-DTD
Créez la DTD carnet.dtd suivante :
<!ELEMENT carnet (personne+)>
<!ELEMENT personne EMPTY>
<!ATTLIST personne
nom CDATA #REQUIRED
prenom CDATA #IMPLIED
telephone CDATA #REQUIRED>
 Créez un document XML qui soit valide par rapport à
cette DTD.
77
AU 2010/2011
Exercice 2
 Créez une DTD livre.dtd à partir du document
livre2.xml créé dans le chapitre précédent.
 Créez une DTD article.dtd à partir du document
article.xml créé dans la séance précédente.
78
AU 2010/2011
Exercice 3(1/2)-DTD
 Un site d'actualités veut présenter des nouvelles
brèves, regroupées par thème. Quatre thèmes sont
possibles : actualités, sport, bourse et média. Chaque
brève correspond à un unique thème. Les brèves
peuvent être rédigées en français ou anglais, chacune
est datée et possède un titre. Il est également possible
d'illustrer une brève par une photo et de fournir une ou
plusieurs urls vers des sites détaillant l'information :
chaque url sera agrémentée d'une courte phrase
résumant le contenu de la page pointée.
79
AU 2010/2011
Exercice 3(2/2)-DTD
 Proposer un structuration XML d’ un site d’actualités
 Écrire une DTD associée à ce document XML
80
AU 2010/2011
Exercice 4
On veut représenter dans un format XML des séries de bandes-dessinées et leurs
auteurs et illustrateurs. On veut respecter les contraintes suivantes :
 pour une série de BD, on doit pouvoir donner son titre ;
 une série peut être soit une BD unique, soit plusieurs BDs ;
 on veut pouvoir donner, pour chaque BD : son (ou ses) auteur(s), son
illustrateur, son résumé, sa date de sortie, et éventuellement sa couverture
(une image) et son sous-titre ;
 si la BD fait partie d'une série, on précisera en plus son numéro dans la série ;
 différentes BDs d'une même série peuvent être écrites et/ou dessinées par des
personnes différentes ;
 une même personne peut être à la fois auteur et illustrateur ;
 pour un auteur/illustrateur on peut donner son nom et son prénom.
 Le résumé d'une BD doit autoriser du contenu mixte pour mettre en lumière
les noms des personnages.
1. Fournir le document XML pour la représentation des séries de bandes
dessinées ainsi que la DTD décrivant un tel document.
81
AU 2010/2011
Exercice 5
 Utilisation des entités paramétriques
 Modifiez la DTD créée dans l’exercice 2 pour faire en
sorte que la définition de l’attribut titre soit unique à
l’aide d’une entité paramétrique.
82
AU 2010/2011
XML schéma
83
AU 2010/2011
Introduction-XML schéma
 Un XML schéma est une grammaire définie dans un
formalisme XML.
 Sauf pour la gestion des entités, on peut considérer les
schémas comme remplaçant des DTD.
 La version officielle est la 1.0 mais une version 1.1 est en
préparation .
84
AU 2010/2011
Introduction-XML schéma
 Quelques caractéristiques des schémas :
 gestion des espaces de noms ;
 types de base riches et extensibles ;
 réutilisation par importation et héritage ;
 Davantage de souplesse dans les cardinalités ;
85
AU 2010/2011
XML schéma vs DTD
Les DTDs et le XML schéma ont le même objectif, sauf
que les DTDs sont plus anciennes (SGML/HTML).
 DTD n’a pas des types de données prédéfinies;
 DTD n’offre pas la possibilité à l’utilisateur de créer
son propre type d’élément et/ou contenu;
 Limitations lors de la définition des cardinalités avec
les DTDs;
 DTD ne supportent pas les espaces de noms, et
aucune manière pour importer et réutiliser autres
structures.
86
AU 2010/2011
Introduction-XML schéma
 Schemas XML apportent des améliorations / DTDs:
 Améliorer les types
 44+ versus 10
 Créer un type personnel
 Exemple: “basé sur le type string ayant une taille de 8
caractères ».
 Ecrire avec la même syntaxe que les documents XML
 Moins de syntaxe à se rappeler
87
AU 2010/2011
XML schéma : types
 Un élément peut avoir deux types: Simple ou
composé
 Un élément simple:
 Prédéfini:
 Primitives: decimal, float, String…
 Dérivé: des primitives qui respectent un modèle (email)
 Un élément composé:
88
AU 2010/2011
XML schema:types
 Un élément composé:
 Contient des fils et/ attributs
 mixte
89
AU 2010/2011
Syntaxe
Un schema est contenu dans un élément de genre:
<xs:schema xmlns:xs=“http://www.w3.org/2001/XMLSchema”>
……
</xs:schema>
 Il faut introduire un préfixe, xs ou xsd qui sont
généralement utilisés dans la définition d’un schema
XML
 Pour chaque élément et attribut, il faudra définir
l’élément correspondant dans le schéma.
90
AU 2010/2011
Description des éléments
 Chaque élément du document XML est décrit par la balise
xsd:element;
 L’attribut name de xsd:element contient le nom de
l’élément:
 Il reste maintenant à définir le type d’élément: Simple ou
complexe.
91
<xs:element name=“machine”>
……
</xs:element>
AU 2010/2011
Types de données primitifs
.
92
Type Description
string représente une chaîne de caractères.
boolean représente une valeur booléenne true ou false.
decimal représente un nombre décimal
float représente un nombre à virgule flottante.
double représente un nombre réel double.
duration représente une durée.
dateTime représente une valeur date/heure.
time représente une valeur horaire (format : hh:mm:ss.sss ).
date représente une date (format : CCYY-MM-DD).
gYearMonth représente un mois et une année grégorienne (format : CCYY-MM).
gYear représente une année (format : CCYY).
gMonthDay représente le jour d'un mois (format : MM-DD).
AU 2010/2011
Types de données primitifs(suite)
Types description
gDay représente le jour d'un mois (format :
DD).
gMonth représente le mois (format : MM).
hexBinary représente un contenu binaire
hexadécimal.
base64Binary représente un contenu binaire de base
64.
anyURI représente une adresse URI (ex.:
http://www.site.com).
QName représente un nom qualifié.
93
AU 2010/2011
Les types de données dérivés
type description
normalizedString représente une chaîne de caractères dont les espaces blancs sont
normalisés.
token représente une chaîne de caractères sans espaces blancs.
langage représente un langage exprimé sous forme de mot clés
NMTOKEN représente le type d'attribut NMTOKEN de XML 1.0.
NMTOKENS représente le type d'attributs NMTOKENS de XML 1.0.
Name représente un nom XML.
id représente le type d'attribut ID de XML 1.0.
IDREF représente le type d'atribut IDREF de XML 1.0.
IDREFS représente le type d'attribut IDREFS de XML 1.0.
ENTITY représente le type d'attribut ENTITY de XML 1.0.
ENTITIES représente le type d'attribut ENTITIES de XML 1.0.
integer représente un nombre entier.
nonPositiveInteger représente un nombre entier négatif incluant le zéro.
94
AU 2010/2011
Les types de données dérivés
Type Description
negativeInteger représente un nombre entier négatif dont la valeur maximum est -1.
long représente un nombre entier long dont l'intervalle est {-
9223372036854775808 - 9223372036854775807}.
int représente un nombre entier dont l'intervalle est {-2147483648 -
2147483647}.
short représente un nombre entier court dont l'intervalle est {-32768 -
32767}.
byte représente un entier dont l'intervalle est {-128 - 127}.
nonNegativeInteger représente un nombre entier positif incluant le zéro.
unsignedLong représente un nombre entier long non-signé dont l'intervalle est {0 -
18446744073709551615}.
unsignedInt représente un nombre entier non-signé dont l'intervalle est {0 -
4294967295}.
unsignedShort représente un nombre entier court non-signé dont l'intervalle est {0 -
65535}.
unsignedByte représente un nombre entier non-signé dont l'intervalle est {0 - 255}.
positiveInteger représente un nombre entier positif commençant à 1.
95
AU 2010/2011
Exemple: auteur.xsd
96
<?xml version="1.0" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name= "auteur">
<xs:complexType>
<xs:sequence>
<xs:element name= "Nom" type = "xs:string"/>
<xs:element name= "Prenom" type = "xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
AU 2010/2011
Description des éléments
 Dans la balise xs:complexType, la liste des sous
éléments sera décrit à l’intérieur d’un des éléments
suivants “compositeur”:
 xs:sequence définit une liste ordonnée de sous
éléments
 xs:choice définit un groupe d’éléments dont un seul
devra être présent
 xs:all définit un ensemble non ordonné d’éléments
 A l’intérieur de ces balises, chaque sous-élément est
décrit par une balise xs:element
97
AU 2010/2011
Type simple dérivé par l’utilisateur
 Définir des types personnels par restriction ou extension:
 Simples
 Complexes
 Démarche:
On peut développer le schéma auteur par la définition d’un
type simple personnalisé en utilisant la balise:
<xs:simpleType> qui sera par la suite utilisée pour la
définition de nouveaux éléments.
On crée tout d’abord un type et on ajoutant une restriction par
la balise <xs:restriction>.
Exemple: un password qui ne doit pas dépasser 8 chiffre.
98
AU 2010/2011
Exemple de création d’un type
99
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:simpleType name="Password">
<xs:restriction base="xs:string">
<xs:length value="8"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="utilisateur">
<xs:complexType>
<xs:sequence>
<xs:element name="PW" type="Password"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Facette
AU 2010/2011
Type simple: Facette
 Une facette est un aspect définissant un espace de valeur. Ce
dernier caractérisé par des propriétés, peut subir des restrictions par
rapport à une liste de valeurs spécifiées, à un intervalle de valeurs, à un
modèle de valeurs, à une longueur de champ, à un nombre de chiffres
et à un comportement vis-à-vis des espaces blancs.
 Application d’une facette au type prédéfini:
 chaque facette s’applique à 1 ou plusieurs types prédéfinis.
 Le temps: period, Duration
 Types ordonnés: maxInclusive, minInclusive
 Tous: enumeration
 Tous: pattern
<xsd:simpleType name=" nom-element">
<xsd:restriction base=" type-predefini">
Définition de la facette
<xsd:restriction>
</xsd: simpleType>
100
AU 2010/2011
Prinicipales Facettes
 length
 minLength
 maxLength
 pattern
 enumeration
 minInclusive
 minExclusive
 maxInclusive
 maxExclusive
 totalDigits
 fractionDigits
101
AU 2010/2011
Exemples
pour définir un numéro ISBN comme une chaîne de 6 à 10
caractères numériques
<xsd:simpleType name=“TypeISBN”>
<xsd:restriction base=“xsd:string”>
<xsd:pattern value=“[0-9] {6,10}”/>
</xsd:restriction>
</xsd:simpleType >
pour définir un type de données représentant une chaîne
de caractères acceptant un maximum de 32 caractères.
<xsd:simpleType name=“NOM”>
<xsd:restriction base=“xsd:string”>
<xsd:maxLength value=“32”/>
</xsd:restriction>
</xsd:simpleType >
102
AU 2010/2011
Exemple avec les chiffres
 Mins and Maxs : l’exemple suivant définit un type salaire qui est un
decimal entre 7,000 and 10,000.
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:simpleType
name= "salaire">
<xs:restriction base="xs:decimal">
<xs:minInclusive value= "7000"/>
<xs:maxInclusive value= "10000"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="Employee">
<xs:complexType>
<xs:sequence>
<xs:element name="Salary" type= "salaire"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
103
AU 2010/2011
Nombre de chiffre après la virgule
En utilisant totalDigits et fractionDigits, nous pouvons préciser que
le type de salaire devrait être composé de sept chiffres, dont deux
viennent après la virgule.
Les deux totalDigits et fractionDigits sont des maximums. Autrement
dit, si totalDigits est égal à 5 et fractionDigits est égal à deux, un
numéro valide pouvait pas avoir plus de cinq chiffres au total et pas plus
de deux chiffres après la virgule.
104
AU 2010/2011
Code
<?xml version="1.0"?>
<xs:schema xmlns:xs=http://www.w3.org/2001/XMLSchema>
<xs:simpleType name= "salaire">
<xs:restriction base="xs:decimal">
<xs:minInclusive value="10000"/>
<xs:maxInclusive value= "50000"/>
<xs:fractionDigits value="2"/>
<xs:totalDigits value="7"/>
</xs:restriction>
</xs:simpleType>
<xs:element name= "employé">
<xs:complexType>
<xs:sequence>
<xs:element name="Salary" type= "salaire"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
105
AU 2010/2011
Enumeration
 Un type dérivé peut être une liste de valeurs possibles.
Par exemple, l'élément JobTitle pourrait être une liste
de titres d'emploi prédéfini.
106
AU 2010/2011
Code
<?xml version="1.0"?>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSche
ma"> <xs:simpleType name= "salaire">
<xs:restriction base="xs:decimal">
<xs:minInclusive value="10000"/>
<xs:maxInclusive value="90000"/>
<xs:fractionDigits value="2"/> <xs:totalDigits
value="7"/> </xs:restriction>
</xs:simpleType>
<xs:simpleType name="JobTitle">
<xs:restriction base="xs:string">
<xs:enumeration value="Sales
Manager"/>
107
<xs:enumeration value= "vendeur"/>
<xs:enumeration value="Receptioniste"/>
<xs:enumeration value="Developpeur"/>
</xs:restriction>
<xs:element name= "employé">
<xs:complexType>
<xs:sequence>
<xs:element name= "salaire" type=
"salaire"/>
<xs:element name="Title" type="JobTitle"/>
</xs:sequence>
</xs:complexType>
</xs:element> </xs:schema>
AU 2010/2011
108
Type composé (Complexe Type)
 Dans la balise xs:complexType, la liste des sous éléments
sera décrit à l’intérieur d’un des éléments suivants
“compositeur”:
 xs:sequence définit une liste ordonnée de sous éléments
 xs:choice définit un groupe d’éléments dont un seul devra
être présent
 xs:all définit un ensemble non ordonné d’éléments
 A l’intérieur de ces balises, chaque sous-élément est
décrit par une balise xs:element
AU 2010/2011
Type composé (Complexe Type)
109
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Author">
<xs:complexType>
<xs:sequence>
<xs:element name="FirstName" type="xs:string" />
<xs:element name="LastName" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
AU 2010/2011
Exemple
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element
name="Employee">
<xs:complexType>
<xs:sequence>
<xs:element name="Name">
<xs:complexType>
<xs:choice>
<xs:element name="FirstName"/>
<xs:element name="LastName"/>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
110
AU 2010/2011
Nombre d’occurrence
 Pour spécifier le nombre d’apparition des éléments, on
utilise les primitives:
 minOccurs
 maxOccurs
? : minOccurs="0" maxOccurs="1"
+ : minOccurs="1" maxOccurs="unbounded" ;
* : minOccurs="0" maxOccurs="unbounded".
111
AU 2010/2011
Exemple avec les occurrences
<xs:element name="plan">
<xs:complexType>
<xs:sequence maxOccurs="3">
<xs:element name="auteur" type="xs:string" minOccurs="2" />
<xs:element name="chapitre" type="xs:string" minOccurs="2" />
</xs:sequence>
</xs:complexType>
</xs:element>
112
AU 2010/2011
Exemple: les occurrences 2
<xs:element name="plan">
<xs:complexType>
<xs:sequence minOccurs="2" maxOccurs="3">
<xs:element name="auteur" type="xs:string"/>
<xs:element name="chapitre" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
113
AU 2010/2011
Les attributs
L’attribut implique la présence d’un type complexe. Il est toujours placé en
dernière position.
L’attribut en lui-même, ne contenant que du texte, est un type simple.
L’attribut peut être global et donc réutilisable au sein de plusieurs
définitions de type complexe.
<xs:element name="personne"
<xs:complexType>
…
<xs:attribute name="nom" type="xs:string"/>
</xs:complexType>
</xs:element>
114
AU 2010/2011
Les attributs pour contenu
composé
<xs:element name="Name">
<xs:complexType>
<xs:sequence>
<xs:element name="FirstName" type="xs:string"/>
<xs:element name="LastName" type="xs:string"/>
</xs:sequence>
<xs:attribute name="Pseudonym" type="xs:boolean"/>
<xs:attribute name="HomePage" type="xs:anyURI"/>
</xs:complexType>
</xs:element>
115
AU 2010/2011
Valeur par défaut d’un attribut
<xs:element name="FirstName">
<xs:complexType>
<xs:attribute name="Full" type="xs:boolean"
default="true"/>
</xs:complexType>
</xs:element>
116
AU 2010/2011
Attributs: réutilisation
 Pour créer un attribut réutilisable pour des définitions de type
complexe, il faut le rendre global en le positionnant sous la racine
schéma. L’attribut ref sert à désigner la définition d’un attribut global.
<xs:schema …>
<xs:attribute name="nom">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="5"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<complexType name="monType">
<xs:attribute ref="nom"/>
</complexeType>
</xs:schema>
117
AU 2010/2011
Limitation des attributs
 La présence d’un attribut peut être définie par l’attribut use, qui
peut prendre les valeurs suivantes:
prohibited : interdire l’usage d’un attribut par dérivation d’un type
complexe.
optional : l’attribut n’est pas obligatoirement renseigné (employé par
défaut).
required : l’attribut est obligatoire.
118
AU 2010/2011
Exemple de code
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="a">
<xs:complexType>
<xs:attribute name="t1" use="required" type="xs:int"/>
<xs:attribute name="t2" use="optional" type="xs:string"
default="valeur"/>
<xs:attribute name="t3" use="required" type="xs:token"
fixed="autre"/>
</xs:complexType>
</xs:element>
</xs:schema
119
AU 2010/2011
Le groupe d’attributs
 Des définitions d’attributs communes à plusieurs définitions d’éléments
peuvent être concentrées dans des groupes d’attributs. Les groupes
d’attributs sont définis globalement et sont utilisés par référence.
<xs:attributeGroup name="RGB">
<xs:attribute name="rouge" type="xs:byte" use="required"/>
<xs:attribute name="vert" type="xs:byte" use="required"/>
<xs:attribute name="bleu" type="xs:byte" use="required"/>
</xs:attributeGroup>
Pour faire référence à ce groupe d’attributs, il suffit d’insérer l’instruction
<xs:attributeGroup ref="RGB"/> à l’endroit où nous souhaitons utiliser ces
trois attributs.
120
AU 2010/2011
Restriction sur les valeurs des
attributs
<xs:attribute name= "statut">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Mr."/>
<xs:enumeration value="Ms."/>
<xs:enumeration value="Dr."/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
La valeur de l’attribut ne prendra comme valeur que les trois titres: Mr, Ms et Dr
121
AU 2010/2011
La représentation d’un type composé
 Pour définir un type composé, la balise complexType
permet de définir le contenu: éléments et attributs:
 Elément composé vide:
<xs:element name="img">
<xs:complexType>
<xs:attribute name="src" type="xs:string" />
</xs:complexType>
</xs:element>
122
AU 2010/2011
Type composé: contenu mixte
<xs:element name="ElementName">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element name="Child1" type="xs:string"/>
<xs:element name="Child2" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
123
AU 2010/2011
Exercice 4
 Soit un document XML contenant un nombre indéterminé
d’éléments sous la forme :
<contact titre="..." techno="...">
<nom>...</nom>
<prenom>...</prenom>
<telephone> ...</telephone>
<email>...</email>
<email>...</email>
...
</contact>
 L’élément telephone et l’attribut techno sont en option .
Les textes seront des chaînes simples xs:string.
 Vous utiliserez les types complexes numerosType et
contactType pour construire un schéma nommé
annuaire.xsd.
124
AU 2010/2011
Exercice
Construction de types simples
 Créez un schéma annuaire2.xsd à partir du schéma de
l’exercice précédent.
 Définissez et utilisez le type simple suivant :
 technoType : énumération dont les valeurs possibles
sont XML, Java, Autre.
 Validez ce nouveau schéma sur un document de votre
conception.
125
AU 2010/2011
Exercice
 Réalisez les schéma pour les document XML crées
dans les chapitres précédents.
126

XML__New2 cours wwebbbbbbbbbbbbbbbb.pptx

  • 1.
  • 2.
    AU 2010/2011 Plan ducours  Introduction  Structure des documents XML  Validation des documents XML  Validation par DTD  Validation par un schéma W3C  Publication de documents XML  Le format pour le Web : XHTML  L’utilisation des feuilles de style CSS  Le langage de requête XPath  Le format XSLT (eXtensible Style language Transformation)  Programmation XML  La technologie DOM (Document Object Model)  La technologie SAX (Simple API for XML) 2
  • 3.
    AU 2010/2011 Historique  SGML:Standard Generalized Markup Language (ISO 8879), 1974  Description de la structure d’un type de document  Les documents de ce type respecte la structure  DSSSL: Document Style Semantics and Specification Language  Feuille de style est associé à un type de document  SPDL: Standard Page Description Langage  Formatage des documents SGML +(DSSSL) 3
  • 4.
    AU 2010/2011 Historique deslangages du Web  Diffusion du Web (1990)  Faciliter l’accès à l’information  Naissance de HTML  Web évolue et HTML montre ses limites  Utiliser la technologie pour d’autres fins  Naissance de XML (1997)  Janvier 1998, adoption de la première version de XML par le W3C 4
  • 5.
    AU 2010/2011 Besoin duXML  Le traitement et le stockage de l’ensemble des informations de l’entreprise durant toutes les étapes de production  Formalisme pour les informations;  Une représentation unique afin d’être bien exploitées;  Echange et traitement automatique de données 5
  • 6.
    AU 2010/2011 Besoin duXML  Structure et validation des documents  Afin d’adapter un document à une structure bien définie, exemple base donnée (relationnelle);  Transformation et adaptation  Besoin de transformer les données d’un fichier vers une représentation bien définie, et selon les contraintes de l’entreprise; 6
  • 7.
    AU 2010/2011 XML  XML: eXtensible Markup Language permet de décrire les informations de façon à :  les présenter  les transmettre  les transformer  Le domaine d'application de XML :  Echange de documents  Commerce électronique  Interopérabilité de systèmes d'information hétérogènes. 7
  • 8.
    AU 2010/2011 HTML VsXML  Exemple code HTML: les données sur un ordinateur 8 <BODY> <UL> <LI> Toshiba Satellite</LI> <LI> A 100</LI> <LI> AMD sempron 3 Ghz</LI> <LI> 3 Mo </LI> <LI> 250 Go</LI> </UL> …… </BODY>
  • 9.
    AU 2010/2011 HTML VsXML  Document XML  Lisibilité: données auto-documentées  Séparation entre l’information et la présentation  Traitement par d’autres applications 9 …….. <constructeur> Toshiba Satellite</constructeur> <modele proc= > A 100 </modele> <processeur> AMD sempron 3 Ghz </processeur > <ram> </ram> <ddr> 250 Go</dde> ……
  • 10.
    AU 2010/2011 Comparaison entreXML et HTML  HTML possède un jeu de balises fixes;  XML n'a pas de balises prédéfinies mais nous permet de définir nos propres balises;  HTML mélange le contenu et la présentation améliorations possibles cependant avec CSS);  Des liens trop simples;  XML ne décrit que du contenu pur;  Pour la présentation on pourra utiliser du XSL ou générer du HTML+CSS grâce à des outils comme XSLT; 10
  • 11.
    AU 2010/2011 Aperçu général Que signifie XML ?  eXtensible: une infinité de balises;  Markup: identifier les # éléments d’un document au moyen de balises;  Language: respecter un certain nombre de règles.  XML est un standard de création de langages;  XML décrit la structure et la sémantique, pas l’aspect; 11
  • 12.
    AU 2010/2011 XML estune collection de spécifications  XML est en fait une collection de spécifications et de "vocabulaires" associés, basés sur la même syntaxe. Les trois parties les plus importantes sont les suivantes :  XML 1.0 Recommendation : c'est la spécification de base du langage extensible de balisage XML qui décrit en détail la syntaxe du méta-language;  XML Linking Language (XLink) et Xpointer: ces deux documents du W3C décrivent différentes façons, assez complexes, d'exprimer les schémas de relations entre documents et sections de documents;  Extensible Style Language (XSL): XSL décrit comment les documents XML peuvent être présentés sur différents périphériques d'affichage et plus généralement ces documents peuvent être transformés. 12
  • 13.
    AU 2010/2011 Cycle devie d’un document XML 13 XML DTD XML schéma Document Structure XML transformé HTML Text/PDF Transformation XSL CSS API Résultats Application Navigateur Utilisation Schéma I
  • 14.
    AU 2010/2011 Quelques EditeursXML Un éditeur XML est un éditeur de langage à balises avec des fonctionnalités ajoutées pour faciliter l'édition XML  XMLSpy(http://www.altova.com)  Stylus Studio  EditiX(http://www.editix.com)  XMLCooktop  Gratuit  XMLNotepad 2007  Plateforme Windows  gratuit 14
  • 15.
  • 16.
    AU 2010/2011 Exemple simple <?xmlversion="1.0" encoding="ISO-8859-1"?> <!– Fiche technique --> <laptop constructeur= " Toshiba"> <serie ref = " Satellite "> </serie> < description> Toshiba professional series AMD prossesor 2Ghz 4Go memory </description> </laptop> 16 Prologue Commentaire Les éléments
  • 17.
    AU 2010/2011 Composantes d’undocument XML Partie I  Prologue: Une déclaration d’un document XML  Commentaires (facultatif)  Les différents éléments du document Partie II  Définition optionnelle de type de document  Instructions de traitements: fournissent de l’information à une application XML  Références aux entités 17
  • 18.
    AU 2010/2011 Le prologue:entête <?xml version="1.0" encoding="UTF-8" standalone="no" ?>  Version="1.0" : version de la spécification XML utilisée. Il existe aussi la version 1.1, mais la version 1.0 est la plus utilisée;  Le jeu de caractères employé (encoding), afin de permettre à l’analyseur (parser) du fichier XML de mieux interpréter le jeu des caractère; Encoding="UTF-8": le jeu de caractères utilisé  Standalone: indiquant la présence de déclaration externes (DTD par exemple) nécessaires au traitement du document.  Avec standalone="yes" vous mentionnez que la DTD se trouve dans le fichier actuel  Avec standalone="no" vous faîtes savoir que la DTD se trouve dans un fichier séparé. 18
  • 19.
    AU 2010/2011 Les nœudséléments  Sont le contenu du document, identifiés par un nom;  Composantes de base d’un document XML  gèrent la structuration des données d’un document XML, un peu à la manière des répertoires qui servent à l’organisation des fichiers.  Un nom XML valide est composé de chiffres, lettres, tirets, blancs soulignés, deux points et un point. Un nom XML doit commencer par une lettre ou un blanc souligné  Pour décrire ce que contiennent les éléments, on parle de modèle de contenu. On trouve :  Rien : il n’y pas de contenu, l’élément est vide.  Du texte  Un ou plusieurs éléments : on peut les qualifier d’éléments fils, l’élément les contenant étant appelé un élément parent  Un mélange de textes et d’éléments : c’est une forme plus rare qui peut révéler une erreur de structuration. 19
  • 20.
    AU 2010/2011 Les nœudséléments  Exemple : <?xml version="1.0" encoding="ISO-8859-1"?> <cours> <intervenant> Phileas </intervenant> <separateur/> <chapitre> Formation XML <para>Un paragraphe</para> <para>Autre paragraphe</para> </chapitre> </cours>  cours : élément racine contenant trois éléments fils : intervenant, separateur et chapitre ;  intervenant : élément contenant du texte ;  separateur : élément sans contenu ;  chapitre : élément contenant du texte et des éléments fils para ;  para : élément contenant du texte. 20
  • 21.
    AU 2010/2011 Les balises Servent à décrire un élément: <nom>Windows</nom>  Toute balise rencontrée est analysée:  Contrairement à HTML qui ignore les balises non valides;  Les balises XML sont sensibles à la Casse:  Contrairement à HTML. 21
  • 22.
    AU 2010/2011 Attributs  Contientdes informations sur l’élément;  = paires nom/valeur associées à un élément: <ram UNITE="Mo" >256 </ram>  Un élément peut avoir plusieurs attributs: <auteur NE="1910" MORT="2000 ">  les valeurs d’attributs:  Un nombre, une chaîne de caractères, une adresse,…  Attributs prédéfinis: xml:lang, xml:space 22
  • 23.
    AU 2010/2011 Choix entreattributs et éléments  Cas avec attributs <personne nom="brillant" prenom="alexandre"/>  Cas sans attributs <personne> <nom> brillant </nom> <prenom> alexandre </prenom> </personne>  Difficile d’utiliser un attribut à la place d’un élément : Cas avec éléments : <carnet> <personne>… </personne> <personne>… </personne> </carnet> 23
  • 24.
    AU 2010/2011 Commentaires  Cesont les mêmes qu’en HTML. Ils se positionnent n’importe où après le prologue et peuvent figurer sur plusieurs lignes <!– Ordinateur en promotion – 20% --> 24
  • 25.
    AU 2010/2011 Les règlessyntaxiques du langage XML  R1: le document doit commencer par une déclaration XML;  R2: attention à la capitalisation des noms et des attributs;  R3: les valeurs des attributs doivent être quottées " " ;  R4: les balises non vides doivent être appariées;  R5: les balises vides doivent être fermées;  R6: les éléments ne doivent pas se chevaucher;  R7: un élément principal doit enfermer tous les autres;  R8: ne pas utiliser les caractères < et & seuls. 25
  • 26.
    AU 2010/2011 Document bienformé et valide  Il existe deux types de document XML  Bien formé: respecte les règles syntaxiques du langage XML  Valide: bien formé + conforme à une grammaire (DTD ou schéma) 26
  • 27.
    AU 2010/2011 Exercice I Créationd’un livre en XML On souhaite écrire un livre en utilisant le formalisme XML. Le livre est structuré en sections (au moins 2), en chapitres (au moins 2) et en paragraphes (au moins 2). Le livre doit contenir la liste des auteurs (avec nom et prénom). Tous les éléments doivent posséder un titre, sauf le paragraphe qui contient du texte. Proposez une structuration XML de ce document (avec 2 auteurs, 2 sections, 2 chapitres par section et 2 paragraphes par chapitre). Vérifiez, à l’aide de l’éditeur ou navigateur, que votre document est bien formé. Attention : ne pas utiliser d’attributs 27
  • 28.
    AU 2010/2011 Exercice 2: Utilisation des attributs  Conception de livre2.xml à partir de livre1.xml On souhaite compléter la structure du document XML de l’exercice précédent par les attributs nom et prenom pour les auteurs et titre pour le livre, les sections et les chapitres.  Analysez la structure du nouveau document. Y a-t-il des simplifications possibles ?  Vérifiez que votre document est bien formé. 28
  • 29.
    AU 2010/2011 Exercice 3 L'objectif de l'exercice est de proposer un format XML permettant de stocker des articles quelconques.  Un article est constitué d'un titre, d'un texte et d'une bibliographie ;  le texte lui-même est une succession de paragraphes, chaque paragraphe pouvant contenir :  des mots ou expressions importants et devant donc être différenciés du reste du paragraphe ;  des références bibliographiques ;  une entrée dans la bibliographie peut décrire soit un site web, soit un ouvrage ;  un site web est décrit par un nom et une url ;  pour un ouvrage, on trouve le titre, les auteurs, la date de parution et l'éditeur. 29
  • 30.
    AU 2010/2011 Section CDATA:section littérale  CDATA signifie "Character data" = données textuelles  Intérêt: Insérer du texte non interprété par le processeur XML  Exemple de codes XML  La syntaxe: <! [CDATA [ Texte non analysé, ]]> NB: on ne peut pas imbriquer deux sections CDATA 30
  • 31.
    AU 2010/2011 Les entitésdu document  Les unités de stockage pour les composants du document sont des entités.  L’élément racine et ses sous-éléments peuvent contenir des références à d’autres entités.  Le processeur XML regroupe toutes les entités formant le document pour un traitement de l’ensemble. 31
  • 32.
    AU 2010/2011 Définition dutype de document  Sert à lier une grammaire de type DTD (Document Type Definition) à votre document XML. Elle est introduite avant la première balise (racine) de votre document sous cette forme : <!DOCTYPE racine SYSTEM "URI vers la DTD">  racine est le premier élément (la première balise). URI peut être absolue ou relative au document. <!DOCTYPE laptop SYSTEM "fiche.dtd"> 32
  • 33.
    AU 2010/2011 Les entitésdu document  Entités se subdivisent en deux catégories:  Analysables: contiennent un texte XML bien formé  Non-analysables: contiennent du texte non-XML ou des données binaires.  Ils sont de deux types:  Internes : définies dans l’entité document elle-même  Externes: elles dépendent d’une source de données externe au document XML 33
  • 34.
    AU 2010/2011 Entités internes Entité interne correspond à une version abrégée d’un texte long ou difficile à saisir <!ENTITY nom "texte associé" > Exemple: <!ENTITY email "NOM@ufr.ac.ma" >  La référence se fait par le préfixe & et en rajoutant à la fin du nom un point-virgule : &email;  Entités prédéfinies: lt, gt, amp, apos et quot représentent respectivement les caractères <, >, &, ", '. 34
  • 35.
    AU 2010/2011 Entité interne:Exemple <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE livre [ <!ENTITY auteur "Nom et prénom de l’étudiant"> ]> <livre> <auteur> Cours réalisé par &auteur; </auteur> </livre> 35
  • 36.
    AU 2010/2011 Entités externes Entités externes sont définies à l’intérieur de la DTD au moyen de la déclaration <!ENTITY….> <!ENTITY nom SYSTEM "URI"> Exemple: <!DOCTYPE parc-machine [ <!ENTITY lab01 SYSTEM "http://www.ufr.ma/lab01.xml" > ]>  Une référence à l’entité lab01 permet l’inclusion du fichier lab01.xml dans le document principal.  La référence : &lab01; 36
  • 37.
    AU 2010/2011 Entités externes:Exemple <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE livre [ <!ENTITY auteur "Nom et prénom de l’étudiant"> <!ENTITY chap1 SYSTEM "chapitre1.xml"> ]> <livre> <auteur> Cours réalisé par &auteur; </auteur> &chap1; </livre> 37
  • 38.
    AU 2010/2011 Entités prédéfinies lt: caractère '<'  gt: caractère '>'  amp: caractère 'é'  quot: caractère '"' (guillement double)  apos: caractère "'" (quillement simple ou apostrophe) 38
  • 39.
    AU 2010/2011 Les instructionsde traitement  Des informations supplémentaire n’ont pas de rôle lié aux données ou à la structuration de votre document;  Des informations qui visent les applications afin de mieux traiter les données du document XML;  Pas d’emplacement exigé dans le document; Exemple: <?xml-stylesheet type="text/xsl" href= "display.xsl"?> NB : Encadrée des caractères <? et ?> 39
  • 40.
    AU 2010/2011 Référence àla feuille de style <?xml-stylesheet type="text/xsl" href="comp.xsl"?>  La feuille de style XSL est référencée par le URL en utilisant l’attribut href;  Un processeur XSL sur le client ou le serveur reçoit les documents XML et XSL en entrée et génère le document de sortie (HTML, XML modifié,…). 40
  • 41.
    AU 2010/2011 Exercice: entitésprédéfinies Utilisation des entités prédéfinies On se propose de créer un nouveau document livre2bis.xml reprenant l’exercice précédent (livre2.xml). Placez dans 2 paragraphes un bloc de texte contenant l’extrait suivant : <paragraphe> a &gt; b </paragraphe> Pour le premier paragraphe, employez les entités prédéfinies. Pour le deuxième paragraphe, employez une section CDATA. 41
  • 42.
    AU 2010/2011 Exercice :(entités internes et externes)  Reprendre l’exemple du livre  Utiliser une entité interne pour l’auteur  Utiliser une entité externe pour les paragraphes 42
  • 43.
    AU 2010/2011 Espaces denoms  Problème: des noms d’éléments ou des noms d’attributs identiques ⇒ ambiguïtés  Les espaces de noms (namespaces) permettent:  De mélanger du vocabulaire XML provenant de plusieurs grammaires  D’identifier de manière unique les balises XML  Recommandation: www.w3.org/TR/REC-xmlnames 43
  • 44.
    AU 2010/2011 Espaces denoms  La définition d’un espace de noms peut se faire dans n’importe quelle balise ouvrante d’éléments d’un document XML  Syntaxe: xmlns:prefixe= URI  Exemple : xmlns:reseau= "http://www.ufr.com/xml/reseau" 44
  • 45.
    AU 2010/2011 Espaces denoms: Par défaut  Un premier usage consiste à utiliser simplement l’espace de noms par défaut. Ce dernier est précisé par un pseudo-attribut xmlns;  L’espace de noms par défaut s’applique à l’élément où se situe sa déclaration et à tout son contenu. <livre xmlns="http://www.ensa.ac.ma"> <section> ... </section> </livre> 45
  • 46.
    AU 2010/2011 L’espace denoms explicite  Pour plus de souplesse dans les documents de grande taille, l’utilisation de plusieurs espaces de nom est courante, on peut utiliser un préfixe  Un préfixe est un raccourci vers l’URL de l’espace de nom. <es:livre xmlns:es="http://www.hhhh.ac.ma"> </es:resultat> 46
  • 47.
    AU 2010/2011 Suppression d’unespace 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 : <p:element xmlns:p="http://www.masociete.com"> <autreelement/> </p:element>  L’élément element est dans l’espace de noms http://www.masociete.com alors que  l’élément autreelement, qui n’est pas préfixé, n’a pas d’espace de noms. 47
  • 48.
    AU 2010/2011 Suppression d’unespace 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 : <element xmlns="http://www.masociete.com"> <autreelement xmlns=""> .. Aucun d'espace de noms </autreelement> <encoreunelement> ... Espace de nom par défaut </encoreunelement> </element>  L’élément element est dans l’espace de noms http://www.masociete.com  l’élément autreelement n’est plus dans un espace de noms.  L’élément encoreunelement se trouve également dans l’espace de noms http://www.masociete.com, de par l’espace de noms de son parent. 48
  • 49.
    AU 2010/2011 Exercice: Espacesde nom  Il s’agit de créer un document livre3.xml sur la base de livre1.xml en respectant les points suivants :  Mettez tous les éléments dans l’espace de noms http://www.masociete.com sans utiliser d’espace de noms par défaut.  Mettez la deuxième section dans un espace de noms http://www.monentreprise.com.  Mettez le dernier paragraphe du dernier chapitre de la dernière section sans espace de noms. 49
  • 50.
    AU 2010/2011 DTD: DocumentType Definition 50
  • 51.
    AU 2010/2011 Principe  Unedéclaration de type de document définit:  Le nom des types d’éléments, leur contenu et dans quel ordre d’autres éléments peuvent y apparaître;  Les attributs éventuels et leur valeurs par défaut;  Le nom des entités qui peuvent être utilisées.  DTD peut être interne ou externe;  Les documents XML valides doivent respecter les règles données dans la DTD;  Dans une DTD, tout ce qui n’est pas expressément autorisé est interdit;  Une DTD peut contenir des commentaires. 51
  • 52.
    AU 2010/2011 Consignes avantl’utilisation  La DTD est un texte simple qu’on peut créer par n’importe quel éditeur de texte;  Bien qu'ils ressemblent un peu cryptique au premier lieu, ils demeurent faciles une fois que vous vous habituez à eux; 52
  • 53.
    AU 2010/2011 Déclaration d’uneDTD Déclaration de type de document: <!DOCTYPE ElementRacine Et se termine par > Cette déclaration contient la DTD (DTD interne) ou une adresse URL (DTD externe) DTD interne: <!DOCTYPE parc-machine [ <!– declarations -- > ]> 53
  • 54.
    AU 2010/2011 Eléments dedocument  Toujours dans une DOCTYPE on déclare un type de document avec le mot clé ELEMENT: <!ELEMENT nom d’élément (les fils+nombre ou le type)> Exemple: <!ELEMENT livre (auteur+)> 54
  • 55.
    AU 2010/2011 Les élémentsfils  Lors de la définition d’un élément fils, il est possible de spécifier le nombre d’apparition du fils par l’ajout d’un modificateur (modifier) après le nom du fils. Si le modificateur n’est pas mentionné, cela signifie que le fils va apparaitre une et une seule fois. Les autres options sont décrits dans le tableau suivant : 55 Modificateur Description Rien Une seule fois ? Zero ou une seule fois + Une ou plusieurs fois * Zero ou plusieurs fois
  • 56.
    AU 2010/2011 Les élémentsfils  La déclaration des éléments fils est similaire que les éléments parents, et ils ont le même niveau dans la DOCTYPE: <!ELEMENT titre (titre_ principal)> Le sous élément fils ‘titre’ doit avoir un seul fils qui est titre principal. 56
  • 57.
    AU 2010/2011 Les élémentsfils II <!ELEMENT auteur (nom, prénom)> L’élément auteur contient deux sous éléments qui apparaitront une seule fois 57
  • 58.
    AU 2010/2011 Les élémentsfils III <!ELEMENT firstname (#PCDATA)> <!ELEMENT lastname (#PCDATA)>  Parfois, les éléments contiennent que du texte. Il est déclaré dans la DTD comme #PCDATA.  PCDATA est Character DATA, du texte analysé par le moteur XML. 58
  • 59.
    AU 2010/2011 Ordre deséléments <!ELEMENT chapitre (titre, paragraphe)>  On peut indiquer l’ordre de l’apparition des éléments fils. En précisant dans les parenthèse l’ordre par les virgules.  Dans l’exemple, c’est le titre qui doit apparaitre le premier, suivi de deux paragraphes. 59
  • 60.
    AU 2010/2011 Le choixdes éléments <!ELEMENT auteur (nom|prenom)>  Dans le cas où il y a un choix d’élément, le caractère | signifie que l’un des éléments peut apparaitre, ou les deux ensembles. 60
  • 61.
    AU 2010/2011 Des élémentsspéciaux <!ELEMENT img EMPTY>  l’élément est vide. Il ne peut contenir ni sous- éléments ni données textuelles, mais il peut avoir des attributs. 61
  • 62.
    AU 2010/2011 Un contenumixte <!ELEMENT paragraphe (#PCDATA | sousparagraphe)>  Parfois, les éléments peuvent contenir des valeurs textuelles, et des sous éléments.  Il est possible de définir ce cas par l’utilisation du caractère | et les définitions du type associées. 62
  • 63.
    AU 2010/2011 L’emplacement desmodificateurs  L’emplacement des modificateurs est très important dans la définition du type de document.  Si le modificateur est en dehors des parenthèses, signifie qu’il est appliqué sur l’ensemble des sous éléments.  S’il est à coté d’un élément, il sera appliqué qu’au niveau de ce dernier. <!ELEMENT auteur (nom | prénom)*> <!ELEMENT auteur (nom | prénom*) > <!ELEMENT auteur (nom , prénom) * > <!ELEMENT auteur (nom , prénom*) > 63
  • 64.
    AU 2010/2011 Déclaration Complexe La déclaration des éléments peut être complexe. Dans ce cas, l’utilisation des parenthèse est importante pour plus de précision.  Par exemple, on peut spécifier que l’auteur est composé d’un nom_complet, ou de nom et prénom: <!ELEMENT auteur (nom_complet | (nom , prénom))> 64
  • 65.
    AU 2010/2011 Déclarations desattributs  La déclaration des attributs se fait par le mot clé ATTLIST, suivi par le nom de l’élement. <!ATTLIST nomElement nomAttribut typeAttribut Etat Valeurrpardefaut? nomAttribut typeAttribut Etat Valeurrpardefaut? >  nomElement est l’élément qui contient l’attribut;  nomAttribut est le nom de l’attribut;  typeAttribut est le type de l’attribut;  Etat, il y a trois valeurs possibles: #REQUIRED(obligatoire), #FIXED (attribut toujours présent avec une valeur), et #IMPLIED (optionnel).  Valeurpardefaut c’est la valeur par défaut que peut prendre un attribut; 65
  • 66.
    AU 2010/2011 Exemple- attributs <!ELEMENTressources (ressource)*> <!ELEMENT ressource (#PCDATA)> <!ATTLIST ressource url CDATA #REQUIRED langue CDATA #IMPLIED date_saisie CDATA #REQUIRED date_modification CDATA #IMPLIED > 66
  • 67.
    AU 2010/2011 Types d’attributs CDATA: des données textuelles <!ATTLIST ram unite CDATA #REQUIRED> <ram unite=“Mo”>....</ram>  NMTOKEN: un nom XML valide <!ATTLIST photo Nom NMTOKEN #REQUIRED> <photo Nom=“terre” ...>....</photo>  NMTOKENS: plusieurs noms XML séparés par des espaces <!ATTLIST photo Nom NMTOKENS #REQUIRED> <photo Nom=“ la terre” ...>....</photo>  (val1|val2|…): une liste des valeurs possibles pour l’attribut, chaque valeur doit correspondre à un nom XML valide. <!ATTLIST photo Type (GIF|JPEG|PNG) “GIF”> <photo Type=“GIF” ...>....</photo>  ID: un identificateur unique d’un élément. C’est un nom XML valide <!ATTLIST machine idf ID #REQUIRED > 67
  • 68.
    AU 2010/2011 Types d’attributs IDREF: l’attribut peut prendre comme valeur la valeur d’un attribut de type ID d’un élément du document. <!ATTLIST personne ref IDREF #IMPLIED > <machine idf="mach001">… </machine> <personne ref="mach001" …>…</personne>  IDREFS: l’attribut peut prendre comme valeur une liste de valeurs d’attributs ID de plusieurs éléments du document. <!ATTLIST personne ref IDREFS #IMPLIED > <machine idf="mach001">… </machine> <machine idf="mach002">… </machine> <personne ref="mach001 mach002" …>…</personne> 68
  • 69.
    AU 2010/2011 Type d’attribut ENTITY: l’attribut peut prendre comme valeur le nom d’une entité générale externe non-analysable. Ce type d’attribut sert à référencer des données binaires externes (images, fichiers sons,…)  ENTITIES: l’attribut peut prendre comme valeur les noms de plusieurs entités générales externes non-analysables. 69
  • 70.
    AU 2010/2011 Valeurs pardéfaut des attributs  Il est possible de donner une valeur par défaut à un attribut <!ATTLIST edition type (papier|electronique) "papier" >  La signification de ces mots clés est la suivante: – #REQUIRED: l’attribut doit être tjs présent lorsque l’élément est utilisé. Il n’y a pas de valeur par défaut <!ATTLIST edition date CDATA #REQUIRED> – #IMPLIED: l’attribut correspondant est optionnel. Celui ci ne prendra aucune valeur par défaut <!ATTLIST edition version CDATA #IMPLIED> – #FIXED valeur: l’attribut correspondant est optionnel. Cela revient à définir une valeur constante. <!ATTLIST edition new NMTOKEN #FIXED "yes"> 70
  • 71.
    AU 2010/2011 Entités paramètres entités mais définies et utilisées à l’intérieur de la DTD (jamais dans le document XML)  Différence:  la référence commence par le signe %  La définition commence par % suivi d’un espace et du nom de l’entité  Exemples: 1- <!ENTITY % TYPE ‘(CD|DVD)’> <!ATTLIST DISQUE GENRE %TYPE;> 2- <!ENTITY % text “(#PCDATA)”> <!ELEMENT NOM %text;> 71
  • 72.
    Exemple-Entités paramètres 72 <!ENTITY %article "numero_article, nom_article, quantite_article"> <!ENTITY % additif "description | classe_produit"> <!ELEMENT stock (entree | sortie)*> <!ELEMENT entree (numero_entree, (%article;), (%additif;))> <!ELEMENT sortie (numero_sortie, (%article;), (%additif;))> <!ELEMENT numero_entree (#PCDATA)> <!ELEMENT numero_sortie (#PCDATA)> <!ELEMENT numero_article (#PCDATA)> <!ELEMENT nom_article (#PCDATA)> <!ELEMENT quantite_article (#PCDATA)> <!ELEMENT description (#PCDATA)> <!ELEMENT classe_produit (#PCDATA)>
  • 73.
    AU 2010/2011 Entités paramètresexternes  Le but: permettre la construction de DTD complexes par la mise en commun de plusieurs DTD.  Pour relier entre 2 DTDs, la syntaxe est la suivante:  Pour une DTD privée: <!ENTITY % nom SYSTEM "URI“ %nom;  Pour une DTD publique: <!ENTITY % nom PUBLIC "NomDTD" "URI"> %nom; N.B: URI est l’adresse de la DTD à inclure 73
  • 74.
    Exemple 74 <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE commandes SYSTEM "commandes.dtd"> <commandes> <commande> <produit> <numero_produit>39304</numero_produit> <description>perceuse XPL75</description> <fabricant>Bohringer &amp; fils</fabricant> </produit> <client>Uniprix, Filiale de Venelles</client> <nombre>100</nombre> <prix>45900,00</prix> </commande> <commande> <produit> <numero_produit>92842</numero_produit> <description>Bonnet de bain Monaco</description> <fabricant>Etienne Monet</fabricant> </produit> <client>La mode à l'eau, Dunkerque</client> <nombre>10</nombre> <prix>234,00</prix> </commande> </commandes>
  • 75.
    Exemple de DTDavec des entités externes 75 <!ELEMENT produit (numero_produit,description,fabricant)> <!ELEMENT numero_produit (#PCDATA)> <!ELEMENT description (#PCDATA)> <!ELEMENT fabricant (#PCDATA)> <!ENTITY % donnees_produit SYSTEM "produit.dtd"> %donnees_produit; <!ELEMENT commandes (commande)*> <!ELEMENT commande (produit, client, nombre, prix)*> <!ELEMENT client (#PCDATA)> <!ELEMENT nombre (#PCDATA)> <!ELEMENT prix (#PCDATA)>
  • 76.
    AU 2010/2011 Limites deDTD  non extensibles (à la différence de XML)  Une seule DTD peut être associe à chaque document  incompatibles avec les espaces de noms XML  Typage très faible: pas de possibilités de distinguer des types, tels nombres entiers, nombres réels et chaînes de caractères  Pas d’héritage des objets  Une syntaxe non XML  Pas de prise en charge des API de XML: pas de mécanismes pour permettre l’extension et l’évolution  Outils peu nombreux assez anciens et onéreux 76
  • 77.
    AU 2010/2011 Exercice-DTD Créez laDTD carnet.dtd suivante : <!ELEMENT carnet (personne+)> <!ELEMENT personne EMPTY> <!ATTLIST personne nom CDATA #REQUIRED prenom CDATA #IMPLIED telephone CDATA #REQUIRED>  Créez un document XML qui soit valide par rapport à cette DTD. 77
  • 78.
    AU 2010/2011 Exercice 2 Créez une DTD livre.dtd à partir du document livre2.xml créé dans le chapitre précédent.  Créez une DTD article.dtd à partir du document article.xml créé dans la séance précédente. 78
  • 79.
    AU 2010/2011 Exercice 3(1/2)-DTD Un site d'actualités veut présenter des nouvelles brèves, regroupées par thème. Quatre thèmes sont possibles : actualités, sport, bourse et média. Chaque brève correspond à un unique thème. Les brèves peuvent être rédigées en français ou anglais, chacune est datée et possède un titre. Il est également possible d'illustrer une brève par une photo et de fournir une ou plusieurs urls vers des sites détaillant l'information : chaque url sera agrémentée d'une courte phrase résumant le contenu de la page pointée. 79
  • 80.
    AU 2010/2011 Exercice 3(2/2)-DTD Proposer un structuration XML d’ un site d’actualités  Écrire une DTD associée à ce document XML 80
  • 81.
    AU 2010/2011 Exercice 4 Onveut représenter dans un format XML des séries de bandes-dessinées et leurs auteurs et illustrateurs. On veut respecter les contraintes suivantes :  pour une série de BD, on doit pouvoir donner son titre ;  une série peut être soit une BD unique, soit plusieurs BDs ;  on veut pouvoir donner, pour chaque BD : son (ou ses) auteur(s), son illustrateur, son résumé, sa date de sortie, et éventuellement sa couverture (une image) et son sous-titre ;  si la BD fait partie d'une série, on précisera en plus son numéro dans la série ;  différentes BDs d'une même série peuvent être écrites et/ou dessinées par des personnes différentes ;  une même personne peut être à la fois auteur et illustrateur ;  pour un auteur/illustrateur on peut donner son nom et son prénom.  Le résumé d'une BD doit autoriser du contenu mixte pour mettre en lumière les noms des personnages. 1. Fournir le document XML pour la représentation des séries de bandes dessinées ainsi que la DTD décrivant un tel document. 81
  • 82.
    AU 2010/2011 Exercice 5 Utilisation des entités paramétriques  Modifiez la DTD créée dans l’exercice 2 pour faire en sorte que la définition de l’attribut titre soit unique à l’aide d’une entité paramétrique. 82
  • 83.
  • 84.
    AU 2010/2011 Introduction-XML schéma Un XML schéma est une grammaire définie dans un formalisme XML.  Sauf pour la gestion des entités, on peut considérer les schémas comme remplaçant des DTD.  La version officielle est la 1.0 mais une version 1.1 est en préparation . 84
  • 85.
    AU 2010/2011 Introduction-XML schéma Quelques caractéristiques des schémas :  gestion des espaces de noms ;  types de base riches et extensibles ;  réutilisation par importation et héritage ;  Davantage de souplesse dans les cardinalités ; 85
  • 86.
    AU 2010/2011 XML schémavs DTD Les DTDs et le XML schéma ont le même objectif, sauf que les DTDs sont plus anciennes (SGML/HTML).  DTD n’a pas des types de données prédéfinies;  DTD n’offre pas la possibilité à l’utilisateur de créer son propre type d’élément et/ou contenu;  Limitations lors de la définition des cardinalités avec les DTDs;  DTD ne supportent pas les espaces de noms, et aucune manière pour importer et réutiliser autres structures. 86
  • 87.
    AU 2010/2011 Introduction-XML schéma Schemas XML apportent des améliorations / DTDs:  Améliorer les types  44+ versus 10  Créer un type personnel  Exemple: “basé sur le type string ayant une taille de 8 caractères ».  Ecrire avec la même syntaxe que les documents XML  Moins de syntaxe à se rappeler 87
  • 88.
    AU 2010/2011 XML schéma: types  Un élément peut avoir deux types: Simple ou composé  Un élément simple:  Prédéfini:  Primitives: decimal, float, String…  Dérivé: des primitives qui respectent un modèle (email)  Un élément composé: 88
  • 89.
    AU 2010/2011 XML schema:types Un élément composé:  Contient des fils et/ attributs  mixte 89
  • 90.
    AU 2010/2011 Syntaxe Un schemaest contenu dans un élément de genre: <xs:schema xmlns:xs=“http://www.w3.org/2001/XMLSchema”> …… </xs:schema>  Il faut introduire un préfixe, xs ou xsd qui sont généralement utilisés dans la définition d’un schema XML  Pour chaque élément et attribut, il faudra définir l’élément correspondant dans le schéma. 90
  • 91.
    AU 2010/2011 Description deséléments  Chaque élément du document XML est décrit par la balise xsd:element;  L’attribut name de xsd:element contient le nom de l’élément:  Il reste maintenant à définir le type d’élément: Simple ou complexe. 91 <xs:element name=“machine”> …… </xs:element>
  • 92.
    AU 2010/2011 Types dedonnées primitifs . 92 Type Description string représente une chaîne de caractères. boolean représente une valeur booléenne true ou false. decimal représente un nombre décimal float représente un nombre à virgule flottante. double représente un nombre réel double. duration représente une durée. dateTime représente une valeur date/heure. time représente une valeur horaire (format : hh:mm:ss.sss ). date représente une date (format : CCYY-MM-DD). gYearMonth représente un mois et une année grégorienne (format : CCYY-MM). gYear représente une année (format : CCYY). gMonthDay représente le jour d'un mois (format : MM-DD).
  • 93.
    AU 2010/2011 Types dedonnées primitifs(suite) Types description gDay représente le jour d'un mois (format : DD). gMonth représente le mois (format : MM). hexBinary représente un contenu binaire hexadécimal. base64Binary représente un contenu binaire de base 64. anyURI représente une adresse URI (ex.: http://www.site.com). QName représente un nom qualifié. 93
  • 94.
    AU 2010/2011 Les typesde données dérivés type description normalizedString représente une chaîne de caractères dont les espaces blancs sont normalisés. token représente une chaîne de caractères sans espaces blancs. langage représente un langage exprimé sous forme de mot clés NMTOKEN représente le type d'attribut NMTOKEN de XML 1.0. NMTOKENS représente le type d'attributs NMTOKENS de XML 1.0. Name représente un nom XML. id représente le type d'attribut ID de XML 1.0. IDREF représente le type d'atribut IDREF de XML 1.0. IDREFS représente le type d'attribut IDREFS de XML 1.0. ENTITY représente le type d'attribut ENTITY de XML 1.0. ENTITIES représente le type d'attribut ENTITIES de XML 1.0. integer représente un nombre entier. nonPositiveInteger représente un nombre entier négatif incluant le zéro. 94
  • 95.
    AU 2010/2011 Les typesde données dérivés Type Description negativeInteger représente un nombre entier négatif dont la valeur maximum est -1. long représente un nombre entier long dont l'intervalle est {- 9223372036854775808 - 9223372036854775807}. int représente un nombre entier dont l'intervalle est {-2147483648 - 2147483647}. short représente un nombre entier court dont l'intervalle est {-32768 - 32767}. byte représente un entier dont l'intervalle est {-128 - 127}. nonNegativeInteger représente un nombre entier positif incluant le zéro. unsignedLong représente un nombre entier long non-signé dont l'intervalle est {0 - 18446744073709551615}. unsignedInt représente un nombre entier non-signé dont l'intervalle est {0 - 4294967295}. unsignedShort représente un nombre entier court non-signé dont l'intervalle est {0 - 65535}. unsignedByte représente un nombre entier non-signé dont l'intervalle est {0 - 255}. positiveInteger représente un nombre entier positif commençant à 1. 95
  • 96.
    AU 2010/2011 Exemple: auteur.xsd 96 <?xmlversion="1.0" ?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name= "auteur"> <xs:complexType> <xs:sequence> <xs:element name= "Nom" type = "xs:string"/> <xs:element name= "Prenom" type = "xs:string"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
  • 97.
    AU 2010/2011 Description deséléments  Dans la balise xs:complexType, la liste des sous éléments sera décrit à l’intérieur d’un des éléments suivants “compositeur”:  xs:sequence définit une liste ordonnée de sous éléments  xs:choice définit un groupe d’éléments dont un seul devra être présent  xs:all définit un ensemble non ordonné d’éléments  A l’intérieur de ces balises, chaque sous-élément est décrit par une balise xs:element 97
  • 98.
    AU 2010/2011 Type simpledérivé par l’utilisateur  Définir des types personnels par restriction ou extension:  Simples  Complexes  Démarche: On peut développer le schéma auteur par la définition d’un type simple personnalisé en utilisant la balise: <xs:simpleType> qui sera par la suite utilisée pour la définition de nouveaux éléments. On crée tout d’abord un type et on ajoutant une restriction par la balise <xs:restriction>. Exemple: un password qui ne doit pas dépasser 8 chiffre. 98
  • 99.
    AU 2010/2011 Exemple decréation d’un type 99 <?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:simpleType name="Password"> <xs:restriction base="xs:string"> <xs:length value="8"/> </xs:restriction> </xs:simpleType> <xs:element name="utilisateur"> <xs:complexType> <xs:sequence> <xs:element name="PW" type="Password"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> Facette
  • 100.
    AU 2010/2011 Type simple:Facette  Une facette est un aspect définissant un espace de valeur. Ce dernier caractérisé par des propriétés, peut subir des restrictions par rapport à une liste de valeurs spécifiées, à un intervalle de valeurs, à un modèle de valeurs, à une longueur de champ, à un nombre de chiffres et à un comportement vis-à-vis des espaces blancs.  Application d’une facette au type prédéfini:  chaque facette s’applique à 1 ou plusieurs types prédéfinis.  Le temps: period, Duration  Types ordonnés: maxInclusive, minInclusive  Tous: enumeration  Tous: pattern <xsd:simpleType name=" nom-element"> <xsd:restriction base=" type-predefini"> Définition de la facette <xsd:restriction> </xsd: simpleType> 100
  • 101.
    AU 2010/2011 Prinicipales Facettes length  minLength  maxLength  pattern  enumeration  minInclusive  minExclusive  maxInclusive  maxExclusive  totalDigits  fractionDigits 101
  • 102.
    AU 2010/2011 Exemples pour définirun numéro ISBN comme une chaîne de 6 à 10 caractères numériques <xsd:simpleType name=“TypeISBN”> <xsd:restriction base=“xsd:string”> <xsd:pattern value=“[0-9] {6,10}”/> </xsd:restriction> </xsd:simpleType > pour définir un type de données représentant une chaîne de caractères acceptant un maximum de 32 caractères. <xsd:simpleType name=“NOM”> <xsd:restriction base=“xsd:string”> <xsd:maxLength value=“32”/> </xsd:restriction> </xsd:simpleType > 102
  • 103.
    AU 2010/2011 Exemple avecles chiffres  Mins and Maxs : l’exemple suivant définit un type salaire qui est un decimal entre 7,000 and 10,000. <?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:simpleType name= "salaire"> <xs:restriction base="xs:decimal"> <xs:minInclusive value= "7000"/> <xs:maxInclusive value= "10000"/> </xs:restriction> </xs:simpleType> <xs:element name="Employee"> <xs:complexType> <xs:sequence> <xs:element name="Salary" type= "salaire"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> 103
  • 104.
    AU 2010/2011 Nombre dechiffre après la virgule En utilisant totalDigits et fractionDigits, nous pouvons préciser que le type de salaire devrait être composé de sept chiffres, dont deux viennent après la virgule. Les deux totalDigits et fractionDigits sont des maximums. Autrement dit, si totalDigits est égal à 5 et fractionDigits est égal à deux, un numéro valide pouvait pas avoir plus de cinq chiffres au total et pas plus de deux chiffres après la virgule. 104
  • 105.
    AU 2010/2011 Code <?xml version="1.0"?> <xs:schemaxmlns:xs=http://www.w3.org/2001/XMLSchema> <xs:simpleType name= "salaire"> <xs:restriction base="xs:decimal"> <xs:minInclusive value="10000"/> <xs:maxInclusive value= "50000"/> <xs:fractionDigits value="2"/> <xs:totalDigits value="7"/> </xs:restriction> </xs:simpleType> <xs:element name= "employé"> <xs:complexType> <xs:sequence> <xs:element name="Salary" type= "salaire"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> 105
  • 106.
    AU 2010/2011 Enumeration  Untype dérivé peut être une liste de valeurs possibles. Par exemple, l'élément JobTitle pourrait être une liste de titres d'emploi prédéfini. 106
  • 107.
    AU 2010/2011 Code <?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSche ma"><xs:simpleType name= "salaire"> <xs:restriction base="xs:decimal"> <xs:minInclusive value="10000"/> <xs:maxInclusive value="90000"/> <xs:fractionDigits value="2"/> <xs:totalDigits value="7"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="JobTitle"> <xs:restriction base="xs:string"> <xs:enumeration value="Sales Manager"/> 107 <xs:enumeration value= "vendeur"/> <xs:enumeration value="Receptioniste"/> <xs:enumeration value="Developpeur"/> </xs:restriction> <xs:element name= "employé"> <xs:complexType> <xs:sequence> <xs:element name= "salaire" type= "salaire"/> <xs:element name="Title" type="JobTitle"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
  • 108.
    AU 2010/2011 108 Type composé(Complexe Type)  Dans la balise xs:complexType, la liste des sous éléments sera décrit à l’intérieur d’un des éléments suivants “compositeur”:  xs:sequence définit une liste ordonnée de sous éléments  xs:choice définit un groupe d’éléments dont un seul devra être présent  xs:all définit un ensemble non ordonné d’éléments  A l’intérieur de ces balises, chaque sous-élément est décrit par une balise xs:element
  • 109.
    AU 2010/2011 Type composé(Complexe Type) 109 <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="Author"> <xs:complexType> <xs:sequence> <xs:element name="FirstName" type="xs:string" /> <xs:element name="LastName" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
  • 110.
    AU 2010/2011 Exemple <?xml version="1.0"?> <xs:schemaxmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="Employee"> <xs:complexType> <xs:sequence> <xs:element name="Name"> <xs:complexType> <xs:choice> <xs:element name="FirstName"/> <xs:element name="LastName"/> </xs:choice> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> 110
  • 111.
    AU 2010/2011 Nombre d’occurrence Pour spécifier le nombre d’apparition des éléments, on utilise les primitives:  minOccurs  maxOccurs ? : minOccurs="0" maxOccurs="1" + : minOccurs="1" maxOccurs="unbounded" ; * : minOccurs="0" maxOccurs="unbounded". 111
  • 112.
    AU 2010/2011 Exemple avecles occurrences <xs:element name="plan"> <xs:complexType> <xs:sequence maxOccurs="3"> <xs:element name="auteur" type="xs:string" minOccurs="2" /> <xs:element name="chapitre" type="xs:string" minOccurs="2" /> </xs:sequence> </xs:complexType> </xs:element> 112
  • 113.
    AU 2010/2011 Exemple: lesoccurrences 2 <xs:element name="plan"> <xs:complexType> <xs:sequence minOccurs="2" maxOccurs="3"> <xs:element name="auteur" type="xs:string"/> <xs:element name="chapitre" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> 113
  • 114.
    AU 2010/2011 Les attributs L’attributimplique la présence d’un type complexe. Il est toujours placé en dernière position. L’attribut en lui-même, ne contenant que du texte, est un type simple. L’attribut peut être global et donc réutilisable au sein de plusieurs définitions de type complexe. <xs:element name="personne" <xs:complexType> … <xs:attribute name="nom" type="xs:string"/> </xs:complexType> </xs:element> 114
  • 115.
    AU 2010/2011 Les attributspour contenu composé <xs:element name="Name"> <xs:complexType> <xs:sequence> <xs:element name="FirstName" type="xs:string"/> <xs:element name="LastName" type="xs:string"/> </xs:sequence> <xs:attribute name="Pseudonym" type="xs:boolean"/> <xs:attribute name="HomePage" type="xs:anyURI"/> </xs:complexType> </xs:element> 115
  • 116.
    AU 2010/2011 Valeur pardéfaut d’un attribut <xs:element name="FirstName"> <xs:complexType> <xs:attribute name="Full" type="xs:boolean" default="true"/> </xs:complexType> </xs:element> 116
  • 117.
    AU 2010/2011 Attributs: réutilisation Pour créer un attribut réutilisable pour des définitions de type complexe, il faut le rendre global en le positionnant sous la racine schéma. L’attribut ref sert à désigner la définition d’un attribut global. <xs:schema …> <xs:attribute name="nom"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:minLength value="5"/> </xs:restriction> </xs:simpleType> </xs:attribute> <complexType name="monType"> <xs:attribute ref="nom"/> </complexeType> </xs:schema> 117
  • 118.
    AU 2010/2011 Limitation desattributs  La présence d’un attribut peut être définie par l’attribut use, qui peut prendre les valeurs suivantes: prohibited : interdire l’usage d’un attribut par dérivation d’un type complexe. optional : l’attribut n’est pas obligatoirement renseigné (employé par défaut). required : l’attribut est obligatoire. 118
  • 119.
    AU 2010/2011 Exemple decode <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="a"> <xs:complexType> <xs:attribute name="t1" use="required" type="xs:int"/> <xs:attribute name="t2" use="optional" type="xs:string" default="valeur"/> <xs:attribute name="t3" use="required" type="xs:token" fixed="autre"/> </xs:complexType> </xs:element> </xs:schema 119
  • 120.
    AU 2010/2011 Le grouped’attributs  Des définitions d’attributs communes à plusieurs définitions d’éléments peuvent être concentrées dans des groupes d’attributs. Les groupes d’attributs sont définis globalement et sont utilisés par référence. <xs:attributeGroup name="RGB"> <xs:attribute name="rouge" type="xs:byte" use="required"/> <xs:attribute name="vert" type="xs:byte" use="required"/> <xs:attribute name="bleu" type="xs:byte" use="required"/> </xs:attributeGroup> Pour faire référence à ce groupe d’attributs, il suffit d’insérer l’instruction <xs:attributeGroup ref="RGB"/> à l’endroit où nous souhaitons utiliser ces trois attributs. 120
  • 121.
    AU 2010/2011 Restriction surles valeurs des attributs <xs:attribute name= "statut"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="Mr."/> <xs:enumeration value="Ms."/> <xs:enumeration value="Dr."/> </xs:restriction> </xs:simpleType> </xs:attribute> La valeur de l’attribut ne prendra comme valeur que les trois titres: Mr, Ms et Dr 121
  • 122.
    AU 2010/2011 La représentationd’un type composé  Pour définir un type composé, la balise complexType permet de définir le contenu: éléments et attributs:  Elément composé vide: <xs:element name="img"> <xs:complexType> <xs:attribute name="src" type="xs:string" /> </xs:complexType> </xs:element> 122
  • 123.
    AU 2010/2011 Type composé:contenu mixte <xs:element name="ElementName"> <xs:complexType mixed="true"> <xs:sequence> <xs:element name="Child1" type="xs:string"/> <xs:element name="Child2" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> 123
  • 124.
    AU 2010/2011 Exercice 4 Soit un document XML contenant un nombre indéterminé d’éléments sous la forme : <contact titre="..." techno="..."> <nom>...</nom> <prenom>...</prenom> <telephone> ...</telephone> <email>...</email> <email>...</email> ... </contact>  L’élément telephone et l’attribut techno sont en option . Les textes seront des chaînes simples xs:string.  Vous utiliserez les types complexes numerosType et contactType pour construire un schéma nommé annuaire.xsd. 124
  • 125.
    AU 2010/2011 Exercice Construction detypes simples  Créez un schéma annuaire2.xsd à partir du schéma de l’exercice précédent.  Définissez et utilisez le type simple suivant :  technoType : énumération dont les valeurs possibles sont XML, Java, Autre.  Validez ce nouveau schéma sur un document de votre conception. 125
  • 126.
    AU 2010/2011 Exercice  Réalisezles schéma pour les document XML crées dans les chapitres précédents. 126