Beruflich Dokumente
Kultur Dokumente
Technologie Web
XML et DTD
Alexandre Pauchet
Plan
1 Introduction
2 Document XML
3 Les DTD
INSA - ASI TechnoWeb : XML 3/30
Introduction (1/4)
Origines : SGML et HTML
HTML
HTML = HyperText Markup Language
Modèle de représentation d’hyper-documents
Très utilisé par les serveurs et les clients WEB
Défini selon le standard SGML
SGML
Standard Generalized Markup Language
Représentation de données et de documents structurés
Méta-langage de balisage de documents
XML
eXtensible Markup Language
Standard développé par le W3C
Forme extensible de HTML : définition de balises
Sous ensemble restreint de SGML : applications WEB
Peut être utilisé avec les protocoles (HTTP, MIME) et les mécanismes
(URL) du WEB
INSA - ASI TechnoWeb : XML 4/30
Introduction (2/4)
Comparaison HTML/XML
Introduction (3/4)
Structure, contenu et présentation
Introduction (4/4)
Exemple : Description d’un article en XML
Exemple
<? xml v e r s i o n=" 1 . 0 " encoding="UTF−8" s t a n d a l o n e=" y e s "?>
<!DOCTYPE album [
<!ELEMENT album ( t i t r e , auteur , contenu )>
<!ELEMENT t i t r e (#PCDATA)>
<!ELEMENT a u t e u r (#PCDATA)>
<!ELEMENT contenu ( p i s t e +)>
<!ELEMENT p i s t e (#PCDATA)>
]>
<? x ml −st yl es heet type=" t e x t / c s s " h r e f=" styleAlbum . c s s "?>
<album>
< t i t r e>Le monde de la chatouille</ t i t r e>
<a u t e u r>Sacha Touille</ a u t e u r>
<contenu>
<p i s t e>01 - Guiliguili</ p i s t e>
<p i s t e>02 - Gratouilli</ p i s t e>
</ contenu>
</album>
INSA - ASI TechnoWeb : XML 7/30
Prologue
Déclaration XML
Déclaration de type
Instructions de traitement
Déclaration XML
<? xml v e r s i o n=" 1 . 0 " [ encoding=" encodage " ] [ s t a n d a l o n e=" y e s | no" ] ?>
Déclaration de type
<!DOCTYPE elt−racine Info−DTD [ déclarations internes ] >
Instructions “facultatives”
Leur contenu est transmis à une application pour traitement
<? c i b l e arg1=" v a l 1 " arg2=" v a l 2 " . . . ?>
Exemple
<? x ml −st yl es heet type=" t e x t / c s s " h r e f=" s t y l e . c s s " ?>
INSA - ASI TechnoWeb : XML 11/30
Caractères spéciaux
Pour le contenu de tags et les attributs, XML prédéfinit les 5 entités suivantes :
& → & ’ → ' > → > < → < " → "
Commentaires
<!−−ceci est un commentaire −−>
CDATA
Indique à l’analyseur de ne pas tenir compte du balisage :
<![CDATA[=>texte non regarde par l’analyseur]]>
personne.dtd
<? xml v e r s i o n=" 1 . 0 " encoding="UTF−8"?>
<!ELEMENT personne ( i d e n t i t e , a c t i v i t e ∗)>
<!ELEMENT i d e n t i t e ( prenom , nom)>
<!ELEMENT prenom (#PCDATA)>
<!ELEMENT nom (#PCDATA)>
<!ELEMENT a c t i v i t e (#PCDATA)>
Dupond.xml
<? xml v e r s i o n=" 1 . 0 " encoding="UTF−8" s t a n d a l o n e="no"?>
<!DOCTYPE personne SYSTEM " . / personne . dtd " >
<personne>
<i d e n t i t e>
<prenom>Eustache</prenom>
<nom>Dupond</nom>
</ i d e n t i t e>
<a c t i v i t e>détective</ a c t i v i t e>
<a c t i v i t e>gardien de nuit</ a c t i v i t e>
</ personne>
INSA - ASI TechnoWeb : XML 18/30
DTD
Remarque
Un document sans DTD peut être affiché mais ne peut pas être interprété.
INSA - ASI TechnoWeb : XML 20/30
Elle décrit
Les éléments types :
noms de balises autorisées,
ordre et imbrication des balises,
caractère optionnel des éléments.
Les attributs pour chaque élément :
noms des attributs autorisés,
caractère optionnel/obligatoire des attributs,
type,
valeur par défaut.
INSA - ASI TechnoWeb : XML 21/30
3 types de déclaration
DTD interne
<!DOCTYPE racine [declarations]>
Prologue
Le prologue est identique à un document XML, excepté standalone
et DOCTYPE qui n’ont aucun sens dans une DTD.
Utilité : déclarer l’encodage utilisé dans la DTD
Une DTD n’a pas nécessairement de prologue
Exemple
<? xml v e r s i o n=" 1 . 0 " encoding="UTF−8" ?>
Exemple
<!ELEMENT auteur (nom, prenom, initial)>
INSA - ASI TechnoWeb : XML 24/30
Un élément peut :
être vide,
contenir n’importe quel élément déclaré de la DTD,
être formaté selon un modèle.
Déclaration d’attribut
<! ATTLIST element a t t r i b u t type v a l u e>
personne.dtd
<? xml v e r s i o n=" 1 . 0 " encoding="UTF−8"?>
<!ELEMENT a r b r e ( personne+)>
<!ELEMENT personne ( prenom , nom, nom?)>
<! ATTLIST personne i n d i v i d u a l _ i d ID #REQUIRED parent_id IDREFS #IMPLIED>
<!ELEMENT prenom (#PCDATA)>
<!ELEMENT nom (#PCDATA)>
<! ATTLIST nom m a r i t a l ( o u i | non ) #IMPLIED>
arbre.xml
<? xml v e r s i o n=" 1 . 0 " encoding="UTF−8" s t a n d a l o n e="no"?>
<!DOCTYPE a r b r e SYSTEM " . / a r b r e−g e n e a l o g i q u e . dtd " >
<a r b r e>
<personne i n d i v i d u a l _ i d="e10001" parent_id="e10002 e10003">
<prenom>Bart</prenom><nom>Simpson</nom>
</ personne>
<personne i n d i v i d u a l _ i d="e10002">
<prenom>Homer</prenom><nom>Simpson</nom>
</ personne>
<personne i n d i v i d u a l _ i d="e10003">
<prenom>Marge</prenom><nom m a r i t a l=" o u i ">Simpson</nom><nom>Bouvier</nom>
</ personne>
</ a r b r e>
INSA - ASI TechnoWeb : XML 27/30
Déclaration d’entité
Entité = alias pour un groupe de données
Notation
<!NOTATION nomNotation SYSTEM|PUBLIC "notation">
Elle identifie par un nom le format des entités non analysées par le
parseur XML.
Elle définit le format des données et les applications qui permettent
de les traiter.
Exemples
<!NOTATION GIF SYSTEM "GIF">