XML DTD
École Nationale des Sciences
Appliquées d’Oujda
Chapitre 1 :
XML, DTD
31 janvier 2022
Zineb BOUGROUN XML 1 / 29
XML DTD
Plan du cours
1 XML
2 DTD
Zineb BOUGROUN XML 2 / 29
XML DTD
Plan du cours
1 XML
2 DTD
Zineb BOUGROUN XML 2 / 29
XML DTD
Plan du cours
1 XML
2 DTD
Zineb BOUGROUN XML 3 / 29
XML DTD
Qu’est ce que XML et pourquoi l’utiliser ?
• XML est un format fondé sur des balises comme HTML, mais il décrit le
contenu plutôt que la présentation du contenu.
• XML tend à se généraliser comme format de document, c’est
dorénavant le format de fichiers de Office et LibreOffice.
• il s’agit d’un langage orienté texte et formé de balises qui permettent
d’organiser les données de manière structurée. XML dérive de SGML
(Standard Generalized Markup Language) et de HTML (HyperText
Markup Language)
Zineb BOUGROUN XML 4 / 29
XML DTD
XML = eXtensible Markup Language
• contient des déclarations, éléments, commentaires, définition de
caractères spéciaux et instructions (facultatives) de traitement
• c’est un arbre : il doit avoir une racine et les éléments doivent s’imbriquer
proprement
• Plus simple que SGML, plus complexe mais moins confus et plus
performant que HTML
• Recommandation officielle du W3C depuis le 10 février 1998
• Idéal pour l’échange de données semi-structurées
• Utilisable entre machines
Zineb BOUGROUN XML 5 / 29
XML DTD
XML
Balise (ou tag ou label)
• marque de début et fin permettant de repérer un élément de données
(textuel)
• forme : de début, de fin
• les balises indiquent la signification des sections marquées
Elément de données
• texte encadré par une balise de début et une de fin
• les éléments de données peuvent être imbriquées
Attribut
• couple nom="valeur" qualifiant une balise
Les utilisateurs définissent leurs propres balises Il est possible d’imposer une
grammaire spécifique (DTD, Schéma)
Zineb BOUGROUN XML 6 / 29
XML DTD
STRUCTURE D’UN DOCUMENT XML
Zineb BOUGROUN XML 7 / 29
XML DTD
Document bien formé
• Un document doit commencer par une déclaration XML
• Le document doit contenir un et un seul élément racine
• Toutes les balises avec un contenu doivent être fermées
• Toutes les balises sans contenu doivent se terminer par les caractères />
• Les balises ne doivent pas se chevaucher
• La casse doit être respectée pour toutes les occurrences de noms de
balise (MAJUSCULES ou minuscules).
• Les valeurs d’attributs doivent être entre guillemets
Un document respectant ces critères est dit “bien formé”
Zineb BOUGROUN XML 8 / 29
XML DTD
XML : format interne (arbre)
Zineb BOUGROUN XML 9 / 29
XML DTD
Attributs vs. éléments
Il faut plutôt utiliser un élément
• lorsque l’ordre est important (l’ordre des attributs est au hasard)
• lorsqu’on veut réutiliser un élément plusieurs fois (avec le même parent)
• lorsqu’on veut (dans le futur) avoir des descendants / une structure
interne
• pour représenter un type de données (objet) plutôt que son usage,
autrement dit : une "chose" est un élément et ses propriétés sont des
"attributs"
Il faut plutôt utiliser un attribut
• pour indiquer l’usage/type/etc. d’un élément
• lorsque vous voulez imposer des valeurs par défaut dans la DTD
Zineb BOUGROUN XML 10 / 29
XML DTD
Plan du cours
1 XML
2 DTD
Zineb BOUGROUN XML 11 / 29
XML DTD
XML, DTD, Schéma
• Un document XML peut être associé à :
• Une DTD ou un schéma pour décrire la structure du document XML
Zineb BOUGROUN XML 12 / 29
XML DTD
Relations de conformité
Zineb BOUGROUN XML 13 / 29
XML DTD
DTD (DEFINITIONS DE TYPES DE DOCUMENT )
• C’est une grammaire qui permet de définir le «vocabulaire» et la
structure qui sera utilisée dans le document XML (l’imbrication des
balises)
• possibilité de décrire si les balises sont obligatoires ou optionnelles
• Il existe d’autres types de grammaires comme XML Schema (XSD),
Relax NG, etc. leur puissance sémantique est plus élevée (on peut
exprimer plus de contraintes)
• DTD est le plus répandu
• XML Schema le plus souvent utilisé pour formaliser des langages
"webservices", par ex. SOAP
Zineb BOUGROUN XML 14 / 29
XML DTD
Document Valide
• Document bien formé
• être associé à une DTD (ou une autre grammaire)
• et être conforme à cette DTD ou une grammaire d’un autre type comme
XSD (XML Schema Definition) ou RelaxNG
Zineb BOUGROUN XML 15 / 29
XML DTD
Document Valide
• La DTD est déclarée dans le document XML par la balise !DOCTYPE
• Elle peut être :
• incluse dans le code source du fichier XML, ou DTD interne :
<!DOCTYPE élément-racine [déclaration des éléments]>
• décrite dans un fichier externe, ou DTD externe :
<!DOCTYPE élément-racine SYSTEM "nom_fichier.dtd">
Zineb BOUGROUN XML 16 / 29
XML DTD
Document Valide
Zineb BOUGROUN XML 17 / 29
XML DTD
Document Valide
Zineb BOUGROUN XML 18 / 29
XML DTD
DTD
La DTD contient :
• Une ou plusieurs définitions d’éléments introduites par la
balise !ELEMENT :
<!ELEMENT nom-élément valeur>
• Une ou plusieurs listes d’attributs introduites par la balise !ATTLIST :
<!ATTLIST nom-élément attribut type défaut>
• Une ou plusieurs définitions d’entité introduites par la balise !ENTITY :
<!ENTITY nom-entité "valeur">
ou
<!ENTITY nom-entité SYSTEM "nom_fichier">
Zineb BOUGROUN XML 19 / 29
XML DTD
DTD : ELEMENTS
Chaque balise d’un document XML valide doit être déclarée à l’aide d’un
élément dans la DTD associée.
Syntaxe
<!ELEMENT nom-élément valeur-élément>
• nom-élément est une balise du document XML
• valeur-élément prend l’une des trois formes :
• (contenu) : Déclaration d’un élément à contenu explicite. Exemple :
<!ELEMENT sujet (#PCDATA)>
• EMPTY : Déclaration d’un élément vide. Utilisé en HTML pour les sauts de
ligne (BR), image, filet horizontal (HR) etc. Exemple :
<!ELEMENT br EMPTY>
• ANY : Déclaration d’un élément pouvant contenir tout type de donnée.
Exemple :
<!ELEMENT note ANY>
Zineb BOUGROUN XML 20 / 29
XML DTD
DTD : ELEMENTS
Contenu explicite :
• Combinaison d’un ou plusieurs items :
• Mot-clé #PCDATA (Parsed Character Data) : le contenu est une chaîne de
caractères
• Nom d’un autre élément de la DTD
• Chaque item peut être suivi par un caractère facultatif d’occurrence :
• ? : l’item apparaît zéro ou au plus une fois
• + : l’item apparaît au moins 1 fois
• * : l’item apparaît zéro fois ou plus
• Les items sont séparés par :
• Le caractère virgule « , » si les 2 items sont tous deux inclus dans le contenu
• Le caractère pipe « | » si le contenu est un choix entre les 2 items
Les items peuvent être regroupés à l’aide de parenthèses pour définir des
ordres de priorité ou d’occurrence
Zineb BOUGROUN XML 21 / 29
XML DTD
DTD : ELEMENTS
Zineb BOUGROUN XML 22 / 29
XML DTD
DTD : ELEMENTS
Zineb BOUGROUN XML 23 / 29
XML DTD
DTD : ATTRIBUT
• Les balises ouvrantes et les balises vides peuvent contenir des couples
nom-valeur des attributs
• Les attributs possibles d’un élément du document XML sont déclarés
dans la DTD associée.
Zineb BOUGROUN XML 24 / 29
XML DTD
DTD : ATTRIBUT
Syntaxe
<!ATTLIST nom-élément nom-attribut type valeur-défaut>
• nom-élément est le nom d’un élément défini dans la DTD par la
balise !ELEMENT
• nom-attribut est le nom de l’attribut présentement défini pour l’élément
nom-élément
• type peut prendre l’une des valeurs :
• CDATA : la valeur correspond au contenu de l’élément
• (choix1|choix2|. . .) : la valeur doit être l’une des choix énumérés
• ID : la valeur est un identifiant unique
• ENTITY : la valeur est une entité
• valeur-défaut prend l’une des valeurs :
• valeur : valeur par défaut donnée à l’attribut
• #REQUIRED : attribut obligatoire, sans valeur par défaut
• #IMPLIED : attribut optionnel, sans valeur par défaut
• #FIXED valeur : valeur fixe
Zineb BOUGROUN XML 25 / 29
XML DTD
DTD : exemple
Zineb BOUGROUN XML 26 / 29
XML DTD
DTD : ENTITÉS
Définition d’une entité XML
• Une entité est une variable utilisée pour définir du texte.
• L’intérêt d’une entité consiste à pouvoir remplacer autant de fois que
nécessaire dans le document XML l’entité par le texte qui lui est associé.
• Dans le document XML, la référence à une entité est introduite par le
caractère "&" suivi du nom de l’entité, et terminée par le caractère " ;". Il
existe 5 entités prédéfinies en XML : lt, gt, amp, apos et quot (caractères
< > & ’ ")
Une entité est définie avec la balise !ENTITY, et dite :
• Interne si sa valeur est donnée dans la DTD
<!ENTITY nom-entité "valeur">
• Externe si sa valeur est fournie dans un fichier externe à la DTD
<!ENTITY nom-entité SYSTEM "nom_fichier">
Zineb BOUGROUN XML 27 / 29
XML DTD
DTD : ENTITÉS
Zineb BOUGROUN XML 28 / 29
XML DTD
DTD : ENTITÉS
Zineb BOUGROUN XML 29 / 29