Documente Academic
Documente Profesional
Documente Cultură
Ecole Doctorale Si un document XML respecte les règles de la grammaire XML on dit qu'il est bien
formé.
Promotion 2012-2013
Les règles d'un document bien formé
Les balises uniques correspondent à des documents vides et sont notées: Ex : <IMG
source="image.gif"/>
1
Déclaration de type de document : DTD 'Document Type Definition ’ une notion <!ELEMENT nom_élément (contenu_élément) >
héritée de SGML permettant la définition formelle d’un type de document.
Le nom de l'élément : le nom de la balise dans un
Une information de niveau méta pour qu'un analyseur puisse vérifier la document.
conformité d’un document à une spécification de type (notion de document
valide). Contenu: un type de base (chaîne de caractères avec
des variantes) ou un type construit (en fait une séquence
intitulé des balises et de leurs attributs,
d'éléments).
imbrication des balises (structure d’arbre du document),
EMPTY : Chaîne vide
caractère obligatoire/facultatif de certaines infos.
<! ELEMENT elem (EMPTY)>
Pour un document XML une DTD est optionnelle: Eléments vides: support d'attributs
En son absence: on constate une structure. #PCDATA : ('Parsed Character DATA') : Chaîne de caractères devant être
parsée.
En sa présence: on contraint la conformité d'un document XML.
ANY : Une chaîne quelconque.
3 4
2
Élément avec fils : Types d'éléments construits à partir d'autres types d'éléments (types <!ELEMENT personne (nom, prenom+, tel?, adresse) >
article). <!ELEMENT nom (#PCDATA) >
On peut préciser la structure (séquence) des fils au moyen de constructeurs. <!ELEMENT prenom (#PCDATA) >
3
Les listes d'attributs 'ATTLIST' définissent pour un élément la Trois catégories de types: chaînes, listes de
liste des attributs de cet élément avec leurs propriétés.
chaînes, valeurs énumérées.
Nom de l'attribut, Type de l'attribut, Valeur par défaut.
CDATA : Les valeurs possibles sont des chaînes de
<!ATTLIST nom_element nom_attribut1 type1 défaut1 …
nom_attributn typen défautn> caractères non analysées par le parseur.
Le paramètre défaut Ex: <!ATTLIST fichier cheminaccès CDATA #REQUIRED>
#REQUIRED: attribut obligatoire à fournir. ID: Les valeurs sont des identifiants uniques.
#IMPLIED : attribut optionnel.
Ex: <!ATTLIST dossier ident ID #REQUIRED nom CDATA #IMPLIED>
#FIXED 'value': attribut de valeur invariable égale à 'value'.
IDREF : référence à une clé
'value': une valeur pour l'attribut quand elle n'est pas donnée.
7 8
4
<! ATTLIST personne
Valeurs énumérées : Soit des notations de
num ID,
valeurs déjà définies soit des valeurs. age CDATA,
ENTITY, ENTITIES : la valeur est un nom d'entité <!ELEMENT auteur (#PCDATA) >
déclaré et existant (resp une liste de noms). <!ELEMENT editeur (#PCDATA) >
<!ATTLIST auteur
NOTATION: La valeur est le nom d'une genre (Masculin | Feminin ) #REQUIRED
ville CDATA #IMPLIED>
notation. <!ATTLIST editeur
ville CDATA #FIXED "Alger">
9 10
5
Permet la définition d'un groupe d'éléments sous un <!ENTITY UB « Université de Blida">
Réutilisable dans une DTD par simple appel : &nom; <!ENTITY explication SYSTEM « annexe1.xml">
<Université>
Exemple : <Nom>&UB</nom><Directeur>&dr</Directeur><desc>&explication</desc>
</Université>
<!ENTITY genres "(homme | femme)">
<!ATTLIST auteur genre &genres; #REQUIRED> <Université>
6
1. On ne déclare pas de DTD (dans ce cas le fichier est juste "bien formé") Lieu de la déclaration
2. On déclare la DTD et on y ajoute les définitions dans le même fichier (DTD La DTD est déclarée entre la déclaration de XML et le document lui-
interne) même.
On parle dans ce cas d'un XML "standalone" (le fichier XML se suffit à lui-même)
La déclaration de XML et celle de la DTD font parti du prologue
3. On déclare la DTD en tant que DTD "privée", la DTD se trouve quelque part
<?xml version="1.0" encoding="ISO-8859-1" ?>
dans votre système ou sur Internet
<!DOCTYPE Racine SYSTEM "Fichier-DTD">
répandu pour les DTDs "faites maison"
4. On déclare une DTD "public", c.a.d. on utilise un nom officiel pour la DTD.
Exemple DTD Externe
cela présuppose que votre éditeur et votre client connaissent cette DTD
répandu pour les DTDs connues comme XHTML, SVG, MathML, etc. <?xml version="1.0" encoding="ISO-8859-1" ?>
7
Syntaxe pour définir une DTD interne (seulement !) <!ENTITY xml "Extensible Markup Language">
8
<!ELEMENT REPORT (TITLE,(SECTION|SHORTSECT)+)>
Proposer une DTD pour la modélisation des publications
<!ELEMENT SECTION (TITLE,%BODY;,SUBSECTION*)> scientifiques (Articles de conférences, Articles de Revue, etc.)
<!ELEMENT SUBSECTION (TITLE,%BODY;,SUBSECTION*)>
Proposer un fichier XML supportant cette DTD
<!ELEMENT SHORTSECT (TITLE,%BODY;)>
17 18
9
Les DTD ne sont pas écrites en XML, ce qui signifie que les
schémas de documents.
existant.
10
XML est un outil d’avenir pour l’échange, le stockage et Décision complexe au sein du consortium WEB (W3C) pour arbitrer entre les
différentes propositions.
l’affichage des données sur Internet.
Unification autour d’un projet de recommandation, adopté définitivement en
Un problème majeur de XML 1.0 (dans sa définition de mai 2001 : XML Schéma
base) concerne son approche du typage => DTD XML schéma est l’analogue:
‘Document Type Definition’. D’un langage de définition de données DDL (‘Data Definition Language’) des bases
de données et un document est l’analogue d’un article d ’une base de données.
L’objectif n’est pas atteint pour des applications
D’un langage évolué dans sa partie définition de données comme C++ ou Java. Un
informatiques: la définition des types par les DTD est trop schéma définit l’analogue d ’une classe et un document est une instance de cette
classe.
orientée documents textuels.
Un document XML doit pouvoir être validé relativement à son schéma.
Conséquence : nombreuses propositions pour améliorer le
typage en XML.
21 22
11
Un grand nombre de types de données intégrées comme les booléens, les entiers, les Fournir des types primitifs analogues à ceux qui existent en
intervalles de temps, etc. De plus, il est possible de créer de nouveaux types par ajout de SQL ou en Java.
contraintes sur un type existant.
Définir un système de typage suffisamment riche pour
Des types de données utilisateurs qui nous permettent de créer notre propre type de importer/exporter des données d’une base de données.
données nommé.
Distinguer les aspects reliés à la représentation lexicale des
La notion d'héritage : Les éléments peuvent hériter du contenu et des attributs d'un autre données de ceux gouvernant les ensembles de données
élément. C'est sans aucun doute l'innovation la plus intéressante de XML Schema. sous-jacents.
Le support des espaces de nom. Permettre de créer des types de données usagers dérivés
de types existants en contraignant certaines propriétés
Les indicateurs d'occurrences des éléments peuvent être tout nombre non négatif.
(domaine, précision, longueur, format).
Une grande facilité de conception modulaire de schémas.
23 24
12
Types primitifs (‘Primitive’) Non défini en référence à d’autres types..
Types listes (‘List’) Types dont les valeurs sont des listes de valeurs de
types atomiques.
25 26
13
lenght : la longueur d’une donnée.
Type Forme lexicale
minLenght : la longueur minimum.
String Bonjour
maxLenght : la longueur maximum.
boolean {true, false, 1, 0}
pattern : défini par une expression régulière.
float 2345E3
enumeration : un ensemble discret de valeurs.
double 23.456789E3 whitespace : contraintes de normalisation des chaînes relativement aux espaces (preserve,
replace, collapse).
decimal 808.1
maxInclusive : une valeur max comprise.
dateTime 1999-05-31T13:20:00-05:00.
maxExclusive : une valeur max exclue.
binary 0100
minInclusive : une valeur min comprise.
uriReference http://www.cnam.fr maxInclusive : une valeur min exclue.
27 28
14
Un schéma XML est un document XML.
<xsd:schema mlns:xsd="http://www.w3.org/2000/10/XMLSchema">
<xs:element name=“personne">
<xs:complexType>
<xs:sequence>
</xs:sequence>
</xs:complexType>
</xs:element>
</xsd:schema>
29 30
15
<!DOCTYPE une_DTD_adresse
<?xml version="1.0"?>
[ <!ELEMENT Addresse_postale_dz
<Addresse_postale_dz pays="Algérie">
(nom, rue, ville, wilaya, code_postal)>
<nom>Mr Karim Omar</nom> <!ELEMENT nom (#PCDATA)>
<rue>rue 1er Novembre</rue> <!ELEMENT rue (#PCDATA)>
16
<xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema">
Un schéma XML est construit par assemblage de différents
<xsd:complexType name="Addresse_postale_dz" >
<xsd:sequence> composants.
<xsd:element name="nom" type="xsd:string" />
</xsd:schema>
Déclaration d’attributs.
33 34
17
Un élément XML est déclaré par la balise ‘element’ Un attribut est une valeur nommée et typée associée à un
élément.
de XML schéma qui a de nombreux attributs.
Le type d’un attribut défini en XML schéma est
Les deux principaux attributs sont:
obligatoirement simple.
- name : Le nom de l’élément (de la balise associée).
<xsd:complexType name="TypeRapport">
- type : Le type qui peut être simple ou complexe. <xsd:attribute name= "Date_creation" type="xsd:date"/>
…...
35 36
18
L'élément attribute de XML Schema peut avoir deux Use = required : L’attribut doit apparaître et prendre la valeur
fixée si elle est définie.
attributs optionnels : use et value.
Use= prohibited : L’attribut ne doit pas apparaître.
On peut ainsi définir des contraintes de présence et
Use = optional : L’attribut peut apparaître et prendre une
de valeur.
valeur quelconque.
Selon ces deux attributs, la valeur peut: Use= default : Si l’attribut à une valeur définie il la prend sinon il
prend la valeur par défaut.
être obligatoire ou non
Use= fixed : La valeur de l’attribut est obligatoirement la valeur
être définie ou non par défaut. définie.
Exemple: <xsd:attribute name= "Date_peremption" Exemple : <xsd:attribute name= "Date_creation"
type="xsd:date" use="default" value= "2012-12-31"/> type="xsd:date" use="required"/>
37 38
19
39
La valeur de l'attribut default doit être conforme au type déclaré Types simples définis par dérivation d'un autre type
simple, au moyen de l’élément <xsd:simpleType ...>
Exemple
20
Décimal avec deux chiffres après la virgule
<xsd:simpleType name= "Mois">
<xsd:simpleType name= "DeuxDecimales">
<xsd:restriction base="xsd:string"> <xsd:restriction base="xsd:decimal">
<xsd:maxLength value="32"/>
</xsd:restriction> </xsd:restriction>
</xsd:simpleType>
</xsd:simpleType>
41 42
21
Permet de donner une expression régulière qui Déclarés au moyen de l'élément <xsd:complexType name="...
devra être vérifiée pour que la valeur soit
Ils peuvent contenir d’autres éléments, des attributs.
acceptée.
Exemple
Exemple
ISBN est une chaîne de dix caractères numériques <xsd:complexType name= "TypePrix">
<xsd:simpleType name="isbnType">
<xsd:simpleContent>
<xsd:restriction base="xsd:string">
<xsd:extension base="DeuxDecimales">
<xsd:pattern value="[0-9]{10}"/>
<xsd:attribute name="Unite" type= "FrancEuro" />
</xsd:restriction>
</xsd:simpleType> </xsd:extension>
</xsd:simpleContent>
43 </xsd:complexType> 44
22
46
Un type sequence est défini par une suite de sous-éléments qui Dans une DTD Valeur de minOccurs Valeur de maxOccurs
doivent être présents dans l'ordre donné.
* 0 unbounded
Le nombre d'occurences de chaque sous-élément est défini par les
attributs minOccurs et maxOccurs. 1 (pas nécessaire, valeur par
+ unbounded
défaut)
<xsd:complexType name= "Commande">
1 (pas nécessaire,
<xsd:sequence> ? 0
valeur par défaut)
<xsd:element name= "Ad_livraison" type="Addresse"/>
1 (pas nécessaire, valeur par 1 (pas nécessaire,
<xsd:element name= "Ad_facturation" type="Addresse"/> rien
défaut) valeur par défaut)
<xsd:element name= "texte" type="xsd:string" minOccurs="1" />
nombre entier m
<xsd:element name="items" type="Items" maxOccurs= "30" />
impossible nombre entier n quelconque quelconque supérieur
</xsd:sequence> ou égal à n
</xsd:complexType>
45 46
23
Un seul des éléments listés doit être présent.
C’est une composition de type ensembliste. Dans un document
Le nombre d'occurences possible est déterminé par les attributs minOccurs et maxOccurs de
conforme, les éléments listés doivent être tous présents au plus une
l’élément.
fois. Il peuvent apparaître dans n'importe quel ordre.
Exemple : Une personne est identifiée soit par un nom (Name) ou de trois noms : fisrtName, middleName
(optionnel) et lastName.
<xsd:complexType name= "Commande">
<xsd:complexType name= "type_Noms">
<xsd:all>
<xsd:choice>
</xsd:sequence> </xsd:all>
</xsd:choice> </xsd:complexType>
</xsd:complexType>
47 48
24