XML DTD

Transcription

XML DTD
XML
eXtensible Markup Language
Mohamed Quafafou
ESIL – Département :: Internet
Nov.Nov.-Dec.
Dec. 2006
DTD
„
Définition du type de document
†
†
†
„
Vérifier qu’
qu’un document XML est conforme à une syntaxe
donné
donnée
Cela se fait à l’aide du document DTD (document Type
Definition)
Definition)
La norme XML n’
n’impose pas l’l’utilisation d’
d’un DTD, mais le
respect des rè
règles de construction est obligatoire
Caté
Catégories de documents
†
†
Bien formé
formé : respect des rè
règles de base
Valide : s’
s’il respecte la DTD associé
associée
1
Définition d’une DTD
„
Définition interne
†
La DTD est directement incluse dans le document
<?xml version="1.0" ? Encoding=
Encoding=‘ISOISO-88598859-1’ standalone=
standalone=‘yes’
yes’>
<!-- !DOCTYPE nomnom-dede-lala-racine [nomnom-fichier]
-->
-->
<!DOCTYPE nomnom-dede-lala-racine [
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ATTLIST
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
<!ELEMENT
„
ANNUAIRE (TITRE, PERSONNE*)>
TITRE (#PCDATA)>
PERSONNE ( NOM, PRENOM?, BUREAU, TEL, EMAIL)>
PERSONNE numpers ID #REQUIRED>
NOM
(#PCDATA)>
PRENOM
(#PCDATA)>
BUREAU
(#PCDATA)>
TEL
(#PCDATA)>
EMAIL
(#PCDATA)> ] -->
-->
Définition externe
<?xml version="1.0" ? Encoding=
Encoding=‘ISOISO-88598859-1’ standalone=
standalone=‘no’
no’>
<!-- !DOCTYPE nomnom-dede-lala-racine SYSTEM "nomnom-fichier"
fichier"
-->
-->
<!DOCTYPE Annuaire SYSTEM « Annuaire.dtd"
Annuaire.dtd">
DTD – Éléments
„
Définir les balises du langage
†
†
De la forme <! ELEMENT Nom Modè
Modèle >
Notations
†
†
†
†
†
†
†
†
†
†
†
() : regrouper pour appliquer les opé
opérateurs
+ : pré
présence une ou plusieurs fois de ce qui pré
précède
? : pré
présence au plus une fois
* : absence ou pré
présence une ou plusieurs fois
-(…) : ne doit pas être pré
présent
X | Y : exclusion, pré
présence de X ou de Y,mais pas de deux
X,Y : pré
présent dans l’l’ordre
X & Y : pré
présent sans importance de l’l’ordre
Empty : l’l’élement peutpeut-être vide (sans contenu)
#PCDATA : suite de caractè
caractère
ANY : n’
n’importe quel contenu
2
Éléments - exemples
„
? : pré
présence au plus une fois
<!ELEMENT PERSONNE ( NOM, PRENOM, BUREAU, TEL, EMAIL?
EMAIL?)>
„
* : absence ou pré
présence une ou plusieurs fois
<!ELEMENT ANNUAIRE (TITRE, PERSONNE*)>
„
X | Y : exclusion, pré
présence de X ou de Y,mais pas
de deux
<!ELEMENT ADRESSE
AUTRE)>
„
(RUE | AVENUE | PLACE | BOULEVARD |
Empty : l’é
l’éllément peutpeut-être vide (sans contenu)
<!ELEMENT ANNUAIRE EMPTY>
EMPTY>
„
#PCDATA : suite de caractè
caractère
<!ELEMENT NOM (#PCDATA)>
DTD – Attributs
„
Un attribut peutpeut-être associé
associé à un élément
†
„
De la forme <!ATTLIST NomDElement
NomDAttribut TypeValeurOuEnumeration Defaut
NomDAttribut TypeValeurOuEnumeration Defaut
... >
Valeurs possibles
†
†
†
†
†
CDATA : valeur de l'attribut est une sé
séquence de
caractè
caractères
ID :la valeur de l'attribut est un identificateur unique
IDREF : la valeur de l'attribut est une ré
référence à un élément
ID
IDREFS : idem IDREF en acceptant plusieurs valeurs
séparé
parés par des espaces
Une énumé
numération de valeurs possibles se fait en mettant entre
parenthè
parenthèses les valeurs sé
séparé
parées par des « | »
3
DTD – Attributs
„
Default
†
Que devient l’
l’attribut non utilisé
utilisé ?
†
†
†
†
„
#IMPLIED : la valeur par dé
défaut est fournie par l’l’application
traitant le document
#REQUIRED : l’l’auteur du document doit dé
définir l’l’attribut
#FIXED : seule la valeur mentionné
mentionnée est possible
Énumé
numération ou chaî
chaîne de caractè
caractère : une valeur de
l’énum
ération ou la chaî
’énumé
chaîne de caractè
caractère sera considé
considérée (à
(à
condition d’
d’être compatible avec le type de l’l’attribut)
Attributs pré
prédéfinis
†
xml:
xml:lang :
†
†
†
Prend des valeurs de type code de langue
Ex : en, enen-US, etc.
xml:space :
†
Prend les valeurs pour contraindre le traitement des
espaces
default : l’
l’application est libre
preserve : l’
l’application doit conserver les espaces
DTD – Entités
„
Entité
Entités paramé
paramétriques
†
définir des symboles qui seront utilisé
utilisés ailleurs dans la
DTD
†
Cette définition peut faire référence à d’autres entité
entités
†
†
†
En HTML : <!ENTITY %heading "H1|H2|H3|H4">
%Coopé
Coopération sera définie comme « france | hollande |
allemagne | japon | chine | sénégal | egypte | eomalie".
eomalie".
<!ENTITY %europe
%europe “france | hollande |
allemagne">
allemagne">
<!ENTITY %asie
%asie “japon | chine">
<!ENTITY %afrique
gal, egypte | somalie">
somalie">
%afrique “sénégal,
<!ENTITY %Coopé
é
ration
"%europe
europe;
;
|
%asie
asie;
;
| %afrique
;">
%Coop
"%
%
%afrique;">
4
DTD – Entités
„
Entité
Entités de caractè
caractères
†
Traiter les caractè
caractères non repré
représentables dans l’
l’alphabet
utilisé
utilisée
†
†
„
<!ENTITY nbsp "&#160;"> <!ENTITY iexcl "&#161;">
Les entité
entités de caractè
caractères dé
définies dans une DTD peuvent
être utilisé
utilisées dans un document XML ré
référenç
rençant cette DTD
à l'aide de la notation &NomEntit
é;
&NomEntité
Entité
Entités internes
†
Symboles pouvant être dé
définis dans une DTD et utilisé
utilisés
dans un document XML comme raccourcis d'é
d'écritur
†
†
DTD : <!ENTITY DDT "Dichlorodiphenyltrichlor
éthane">
"Dichlorodiphenyltrichloré
thane">
XML : … Le @DDT pesticide qui a abondamment pollué
pollué la
chaî
chaîne alimentaire !!!
Lors de l’
l’affichage du document XML, @DDT est remplacé
remplacé
par Dichlorodiphenyltrichloré
Dichlorodiphenyltrichloréthane :
… Le Dichlorodiphenyltrichloré
Dichlorodiphenyltrichloréthane est un pesticide qui a
abondamment pollué
pollué la chaî
chaîne alimentaire !!!
DTD – Entités
„
Entité
Entités extè
extèrnes
†
Ce sont des symboles pouvant être dé
définis dans une DTD
et utilisé
utilisés dans un document XML, mais dont le contenu
se trouve dans un fichier externe à la DTD.
†
†
†
DTD : <!ENTITY Inclusion SYSTEM
"FichierContenantDuXml.xml">
FichierContenantDuXml.xml">
XML : <balise>... &Inclusion; ...</balise>
Ce sont des symboles pouvant être dé
définis dans une
autre DTD et utilisé
utilisés dans la DTD courante:
†
†
référence à la DTD externe: <!ENTITY %Inclusion
SYSTEM "FichierContenantLaDTD.dtd
">
"FichierContenantLaDTD.dtd">
importation du contenu de la DTD externe dans la DTD
courante: %Inclusion.
5
Pourquoi les schémas
„
Les DTD utilisent une syntaxe diffé
différente de XML
†
„
Pas de typage de donné
données
†
„
Definir un méchanisme de typage de donné
données
Pas d’
d’espace de noms
†
„
Utiliser la grammaire XML, ses outils,
outils, sa technologie
Conflit possible entre les symboles importé
importés et les symboles
définis
Définir un sursur-ensemble des possibilité
possibilités des DTDs
DTD vs. Schéma
„
„
Un sché
schéma (comme un DTD) permet de spé
spécifier la
syntaxe d’
d’une classe de documents XML
Un sché
schéma est contenu dans une dé
déclaration
<xsd:schema xmlns:xsd="http://www.w3.org/1999/XMLSchema">
</xsd:schema>
†
„
xsd est un pré
préfixe choisi arbitrairement, permettant
d'accé
d'accéder dans l'é
l'élément xsd:
xsd:schema à tous les symboles
définis dans la syntaxe des sché
schémas
Définir l ’él
’élément correspondant à une balise
<xsd:element name='TITRE' type='xsd:string' use="required"/>
6
DTD vs. Schéma
„
L'é
L'élément xsd:
xsd:complexType sert à définir le contenu
de l'é
l'élément qui le contient
†
†
†
†
„
ElementOnly : des soussous-ensembles
TextOnly : du texte simple
Mixed : combinaison des deux pré
précédents
Empty : aucun soussous-élément
L'attribut use peut prendre les valeurs suivantes :
†
†
†
†
†
Prohibited : l'attribut ne doit pas apparaî
apparaître
Optional : l'attribut peut ou pas apparaî
apparaître
Required : l'attribut doit apparaî
apparaître
Fixed : l'attribut ne peut prendre qu'une seule valeur
Default : utiliser une valeur par dé
défaut si l’
l’attribut n’
n’est
pas dé
défini
†
„
Si l'attribut use n'est pas utilisé
utilisé, la valeur par dé
défaut est
généralement optional
L'attribut value peut être utilisé
utilisé quand use vaut fixed,
fixed,
required ou default
Schéma - Élément
„
Élément adresse
DTD syntax:
<!ELEMENT adresse
(NOM, PRENOM, ADRESSE, TEL, EMAIL, REMARQUE)>
Schema syntax:
<xsd:complexType name ='personneType'>
<xsd:element
<xsd:element
<xsd:element
<xsd:element
<xsd:element
<xsd:element
name='NOM' type='xsd:string' use="required"/>
name='PRENOM' type='xsd:string' use="optional"/>
name='ADRESSE' type='adressetype' use="required"/>
name='TEL' type='teltype' use="optional"/>
name='EMAIL' type='emailtype' use="optional"/>
name='REMARQUE' type='xsd:string' use="optional"/>
</xsd:complexType>
7
Schéma - Attribut
„
Les valeurs de types les plus courantes sont
†
„
string, boolean,
boolean, float,
float, decimal,
decimal, integer,
integer,
nonPositiveInteger,
nonPositiveInteger, negativeInteger,
negativeInteger, nonNegativeInteger,
nonNegativeInteger,
positiveInteger,
positiveInteger, timeDuration,
timeDuration, timeInstant,
timeInstant, time,
timePeriod,
timePeriod, date, month,
month, year,
year, century,
century, uriReference,
uriReference, ID,
IDREF, ENTITY, NOTATION, Qname et Name
Les attributs minOccurs et maxOccurs
†
Indiquent le nombre minimum et maximum de soussouséléments autorisé
autorisés dans le contexte de l'é
l'élément
englobant.
†
Des valeurs par dé
défaut: maxOccurs = 1 si minOccurs=0
minOccurs=0
Schéma - Attribut
„
Definir le nom, le type, et la valeur par défaut des
attributs:
attributs:
DTD syntax:
<!ATTLIST Book
ISBN CDATA #REQUIRED
Availability (EnStock | PasEnStock) ”EnStock">
Schema syntax:
<elementType name="Book">
<sequence>...</sequence>
<attrDecl name="ISBN" required="true">
<datatypeRef name="string"/>
</attrDecl>
<attrDecl name="Availability" required="false">
<datatypeRef name="Disponiblité">
<default>EnStock</default>
</datatypeRef>
</attrDecl>
</elementType>
8
Definition des Types de données
DTD syntax:
Pas possible
Schema syntax:
<datatype name=”Disponibilité">
<basetype name="NMTOKEN"/>
<enumeration>
<literal>EnStock</literal>
<literal>PasEnStock</literal>
</enumeration>
</datatype>
Documentation
„
Produire une documentation lisible
DTD syntax:
<!– Ce schéma défini une liste des personnes de
l’IAAI avec des information sur chacun
-->
Schema syntax:
<schema version="1.0"
name="http://www.IAAI.info/annuaire.xsd">
<comment>
……
</comment>
…autres éléments du schéma...
</schema>
9
Réutilisation d’une définition de
type
Définir et nommer un «archetype»
archetype»
„ Utiliser ce nom dans la dé
définition de type d’
d’un élément
„
Schema syntax:
<archetype name="Addresse">
<sequence>
<elementTypeRef name="Rue"/>
<elementTypeRef name="Ville"/>
<elementTypeRef name="CP"/>
<elementTypeRef name="ville"/>
</sequence>
</archetype>
<elementType name="personne">
<archetypeRef name="Addresse"/>
</elementType>
Réutilisation de definitions d’autres
schemas
„
„
Importer le schema contenant la définition
Se référer à la définition à partir du schema
courant
DTD syntax:
À la main…Copier-coller
Schema syntax:
<import schemaAbbrev= "annuaire"
schemaName="http://www.annuaire/annuaire.xsd"/>
<elementType name="Enseignant">
<sequence>
<elementTypeRef name="Nom"/>
<elementTypeRef name="adresse"
schemaAbbrev="contact"
minOccur="0"/>
</sequence>
</elementType>
10
Association d’un schema avec
un Document XML
DTD syntax:
<!DOCTYPE annuaire SYSTEM "http://www.annuaire/annuaire.dtd">
Schema syntax:
<?xml version="1.0"?>
<!DOCTYPE Annuaire>
<Annuaire xmlns="http://www.annuaire/annuaire.xsd">
...l’annuaire...
</Annuaire>
D’autres Languages De Schemas
XML
„
„
„
„
Document Content Description (DCD)
Document Definition Markup Language (DDML)
Schema for ObjectObject-Oriented XML (SOX)
XMLXML-Data and XMLXML-Data Reduced
11
Transition DTD-Schema
„
Conversion DTDs vers Schemas
„
Utilisation de XMLXML-DATA et SOX
„
Ne pas utiliser les DTDs et Schemas
12