Académique Documents
Professionnel Documents
Culture Documents
Plan
Introduction
XML
XML Validation
DTD
Structure
Entités
Utiliser DTD
XSD
Schéma XML
Types simples
Types complexes
5
Annotation
XML
XML pour « eXtensible Markup Language » (Langage de balisage extensible
Il est naturellement utilisé pour décrire des données en s'appuyant sur des balises
et des règles personnalisables.
Note
En informatique, les langages de balisage représentent une classe de langages
spécialisés dans l'enrichissement d'information textuelle.
Ils utilisent des balises, unités syntaxiques délimitant une séquence de
caractères ou marquant une position précise à l'intérieur d'un flux de
caractères (par exemple un fichier texte).
une balise traduit une catégorie d'information
XML
10
Structure XML : balise
XML
Structure d’un document XML
Prologue + Corps
12
XML
Structure d’un document XML
14
Note
Unicode est une norme de codage de caractères universelle qui attribue un code à
chaque caractère et symbole dans toutes les langues du monde.
Codage des caractères= Character encoding
Encoding Types :There are mainly two types of encoding − UTF-8 and UTF-16
UTF stands for UCS Transformation Format, and UCS itself means Universal
Character Set.
UTF-8 utilise un octet au minimum pour encoder les caractères tandis que UTF-16
utilise au minimum deux octets. ... UTF-8 est un codage de longueur variable et prend 1
à 4 octets, selon le point de code. UTF-16 est également un codage de caractères de
longueur variable, mais prend 2 ou 4 octets. D'autre part, UTF-32 est fixé à 4 octets..
15
16
Document XML bien formé
Un document bien formé respecte la syntaxe de base XML
Exemples d’erreurs de bonne formation
absence de déclaration XML
mauvaise syntaxe des balises
pas d’élément racine, pas de fermeture, croisement,…
mauvaise formation des noms XML
caractères spéciaux mal utilisés
17
18
Les parseurs XML
XML est uniquement un langage de structuration et de
représentation de données.
Il ne comporte pas d'instructions de contrôle et ne permet
donc pas d'exploiter directement les données.
Pour réaliser des applications XML, il faut donc avoir recourt aux
langages de programmation classiques (Java, Perl, C++, Python...).
SAX est bien adapté pour les traitements qui ne nécessitent qu'une seule
passe sur le document, ou dans le cas de gros volumes de données, s'il
n'est pas nécessaire d'avoir une représentation complète des données en
mémoire.
23
24
Structure XML : CDATA
Le contenu
ϒ d’une balise ne peut pas contenir certains caractères comme >,
<, & doivent être remplacés par leur encodage html.
CDATA permet
ϒ de contourner cette limitation et de saisir n’importe quel
caractère comme contenu.
ϒ
Le contenu du CDATA est interprété par l’éditeur XML comme du texte
brute.
Note
Une portion CDATA dans un document XML est une portion entière de ce
document qui n'est pas prise en compte par l'analyseur. On peut ainsi avoir
plusieurs pages de CDATA, comportant tous les caractères spéciaux que l'on veut,
sans perturber l'analyseur XML.
Dans l’exemple, la valeur des attributs étaient de type CDATA dans les DTD.
Une portion de texte CDATA apparaît entre les balises <![CDATA[ et ]]>
26
Structure XML : commentaire
ϒ
Permet de commenter et simplifier la lecture du contenu XML pour
l’humain.
27
28
DTD
DTD : Document Type Definition
DTD permet de décrire la structure d'un document XML
liste des balises
30
DTD
Avec une DTD, des groupes indépendants de personnes peuvent se mettre
d'accord sur une DTD standard pour l'échange de données.
Une application peut utiliser une DTD pour vérifier que les données XML sont
valides.
Ceci est le fichier DTD: annuaire.dtd
31
Ceci est le fichier DTD: "bibliography.dtd"
https://www.irif.fr/~carton/Enseignement/XML/Cours/Syntax/index.html 32
https://www.irif.fr/~carton/Enseignement/XML/Cours/Syntax/index.html 33
DTD
Structure : élément
34
DTD
Structure : élément
Type DTD XML
36
Note
Type DTD XML
Rather than being composed of a start tag, data, and an end tag,
the empty element is a combined start and end tag.
DTD
Structure : élément
Type DTD XML
Elément <!ELEMENT elt (s1, s2)> <elt>
avec plusieurs <!ELEMENT s1 EMPTY> <s1/>
sous <s2/>
<!ELEMENT s2 EMPTY>
éléments </elt>
Exemple:
<ELEMENT monElement1 ANY>
<!ELEMENT monElement2 EMPTY>
Permet d’avoir dans le fichier xml :
<monElement1><monElement2/>bonjour</monElement1>
<monElement1>au revoir<monElement2/></monElement1>
<monElement1></monElement1>
39
...
Elément à
DTD contenu non
défini
<!ELEMENT elt ANY>
Structure : élément
You can declare an element using the ANY keyword in the content. It is most
often referred to as mixed category element. ANY is useful when you have
yet to decide the allowable contents of the element.
Here, the ANY keyword indicates that text (PCDATA) and/or any
elements declared within the DTD can be used within the content of the
<elementname> element. They can be used in any order any number of
times. However, the ANY keyword does not allow you to include
elements that are not declared within the DTD
40
Elément à
DTD contenu non
défini
<!ELEMENT elt ANY>
Structure : élément
Example: Following is a simple example demonstrating the element
declaration with ANY content −
41
https://www.tutorialspoint.com/dtd/dtd_elements.htm
DTD
Structure : élément
Cardinalité Signification
<!ELEMENT elt (s1)> Le contenu de la balise elt est une seule
balise s1
42
DTD
Structure : attribut
DTD
Structure : attribut
44
DTD
Structure : identifiant
Un attribut peut être déclaré comme identifiant d’un élément avec le mot clé ID
Un attribut peut être déclaré comme référence vers un autre élément (comme
une clé étrangère) avec le mot clé IDREF
45
DTD
Les entités
46
DTD
Les entités
47
DTD
Les entités
Ou
48
DTD
Les entités
Entité externe : même rôle que l’entité générale, sauf que les informations sont
stockés dans un fichier externe
49
DTD
Utiliser une DTD
50
DTD
Utiliser une DTD interne
Ici, la DTD
est déclaré
directement
dans le
document XML
dans la balise
DOCTYPE
51
DTD
Utiliser une DTD externe
SYSTEM : λla DTD est indiquée en fournissant sa localisation par son URI
PUBLIC : la DTD est dans le domaine public (norme), indiquée par son
identifiant (FPI) et sa localisation par son URI
Les FPI (Formal Public Identifier) sont des identifiants de documents hérités de SGML. Ils
52
sont plutôt remplacés en XML par les URI qui jouent le même rôle
XSD
XSD pour XML Schema Definition;
Les schémas ont été introduits pour combler certaines lacunes des
DTD.
53
XSD
Avantages par rapport à DTD :
54
XSD
Un schéma XML se compose
essentiellement de déclarations d'éléments
et d'attributs et de définitions de types
55
XSD
Type de données
57
XSD
Type simple
58
XSD
Type simple
59
XSD
Type simple
60
XSD
Type simple : Restriction
61
XSD
Type simple : Restriction
Exemples de contraintes
maxExclusive : limite supérieure (exclue)
maxInclusive : limite supérieure (incluse)
minExclusive : limite inférieure (exclue)
minInclusive : limite inférieure (incluse)
enumeration : liste de valeurs autorisée
length : nombre de caractères ou d’élément d’une liste autorisée
62
XSD
Type simple : Restriction
minLength : nombre minimum de caractères ou d’élément d’une liste
pattern : expression régulière à respecter
fractionDigits : nombre maxi de digits autorisé
totalDigits : nombre exact de digits autorisé
whiteSpace : politique de gestion des espaces blancs (tab, retour ligne,
fin de ligne, …)
XSD
Type simple : Restriction
64
XSD
Type simple : Listes
Il existe trois types de liste : NMTOKENS, ENTITIES, IDREFS
Ces types existent pour garder la compatibilité avec les DTD
65
XSD
Type simple : Union
66
XSD
Type complexe
Un élément de type complexe peut contenir d'autres éléments et / ou
des attributs
Un attribut ne peut être de type complexe
Un élément de type complexe peut être
XSD
Type complexe
68
XSD
Type complexe
XSD
Type complexe
70
XSD
Type complexe
Trois balises
ϒ indicateurs d’ordre peuvent être utilisé pour indiquer la
logique de placements des sous éléments dans le document XML:
<sequence>
λ : les sous éléments doivent respectés l’ordre de
déclaration dans le type
<choice>
λ : un seul des sous éléments déclarés est utilisé
71
XSD
Type complexe
72
Pour définir une valeur infinie, fixer la valeur à unbounded
XSD
Type complexe
Il est possible de créer un type d’élément dont le contenu est composé de
texte et de sous éléments en même temps
L’attribut mixed de la balise complexType doit être positionné à true
Pour plus de detail, voir la
section 5.5.4. de la reference
https://www.irif.fr/~carton/En
seignement/XML/Cours/Sche
mas/index.html
(Une copie de ce cours vous a
été normalement transféré)
73
XSD
Type complexe
74
XSD
Type
complexe
75
XSD
Visibilité des Types
Un type est visible par tous les descendants du noeud dans lequel il a été déclaré.
Un type déclaré sous le noeud principal (root) <schema> est visible dans tout le
document XSD.
Un type déclaré sous un nœud autre que le root, n’est visible que dans ce nœud.
76
XSD
Structure : élément
77
XSD
Structure : élément
Définir
ϒ le type de données à l’intérieur de l’élément.
78
XSD
Structure : attribut
La définition
ϒ d’attributs associés à un élément se fait par la balise
<attribute>.
name : nom de l’attribut
type : type de l’attribut, ne peut être qu’un type simple.
use : permet de préciser si l’attribut est obligatoire, optionnel ou interdit:
required : obligatoire
optional : optionnel
prohibited : interdite
Valeurs possibles :
fixed : valeur fixe, ne change pas
default : valeur par défaut.
79
XSD
Structure : attribut
80
XSD
Structure : attribut
ϒ Définir l’attribut et l’utiliser
dans la définition du type.
λ
Définir l’attribut
directement à
l’intérieur du
type.
81
XSD
Annotation
82
Structure d’un document XSD
XSD est un document XML, Il commence par un entête et un élément
racine (root)
• L'espace de noms des schémas XML est identifié par • Voir l’exemple de l’éditeur xml
d’Eclipse: Catalogue.xsd
l'URI http://www.w3.org/2001/XMLSchema . +readme file
• https://www.w3.org/2001/XMLSc
• Il est généralement associé au préfixes xsd ou xs. hema
• Tout le schéma est inclus dans l'élément xsd:schema. • https://www.w3.org/2009/XMLSc
83
hema/XMLSchema.xsd
http://www.datypic.com/books/defxmlschema/chapter05.html
84
XSD
http://www.datypic.com/books/defxmlschema/chapter05.html
85
XSD
http://www.datypic.com/books/defxmlschema/chapter05.html
86
Espaces de nom (XML Namespaces)
Les espaces de nom XML est une spécification W3C, son
objectif est de:
permettre l’utilisation de plusieurs vocabulaires (plusieurs
Complément: xmlns
Suite à la diversité des schémas xml, il devient indispensable
d'identifier la provenance de chaque élément et de chaque
attribut afin de permettre une validation correcte.
Les espaces de noms jouent justement ce rôle.
Chaque élément ou attribut appartient à un espace de noms
qui détermine le schema dont il est issu. Cette appartenance
est marquée par la présence dans le nom d'un préfixe
associé à l'espace de noms
88
Complément: xmlns
Un espace de noms est déclaré par un pseudo attribut dont le nom prend la
forme xmlns:prefix où prefix est un nom XML ne contenant pas le caractère ':'. La
valeur de ce pseudo attribut est l'URI qui identifie l'espace de noms.
Complément: xmlns
Ce nom local est également un nom XML ne contenant pas le caractère ':'
Dans la terminologie XML, les noms sans caractère ':' sont appelés NCNAME qui
est l'abréviation de No Colon Name et les noms qualifiés sont appelés QNAME qui
est, bien sûr, l'abréviation de Qualified Name. 90
Creating an XML file from an XSD file
The following example is an XML Schema file called "note.xsd" that defines the elements of the XML document fhat follows
("note.xml"):
92
https://www.w3schools.com/xml/schema_howto.asp
λ
λ
93
https://www.w3schools.com/xml/schema_howto.asp
Utiliser un XSD
A la différence du DTD, n’importe quel élément de la XSD peut
servir de racine pour le document XML