XML et DTD - Plateforme e-learning Moodle de l`INSA de Rouen

Transcription

XML et DTD - Plateforme e-learning Moodle de l`INSA de Rouen
INSA - ASI
TechnoWeb : XML
Technologie Web
XML et DTD
Alexandre Pauchet
INSA Rouen - Département ASI
BO.B.RC.18, [email protected]
1/37
INSA - ASI
Plan
1
Introduction
2
Document XML
3
Les DTD
4
XML et CSS
TechnoWeb : XML
2/37
INSA - ASI
TechnoWeb : XML
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
3/37
INSA - ASI
TechnoWeb : XML
Introduction
4/37
(2/4)
Comparaison HTML/XML
<p>Alexandre Pauchet</p>
<p>
INSA de Rouen<b r />
BP08<b r />
Avenue de l´Université<b r />
76800 Saint - Étienne du
Rouvray
</p>
<e n s e i g n a n t c o r p s=" m a î t r e de c o n f é r e n c e s ">
<prenom>Alexandre</prenom>
<nom>Pauchet</nom>
<a d r e s s e>
<s t r u c t u r e>INSA de Rouen</ s t r u c t u r e>
<bp>BP08</bp>
<r u e>Avenue de l´Université</ r u e>
<cp>76800</cp>
< v i l l e>Saint Étienne du Rouvray</ v i l l e>
</ a d r e s s e>
</ e n s e i g n a n t>
Balises et sémantiques
associées sont prédéfinies
Extensibilité du langage
Mélange de structurations
logique et physique
Affichage déléguée (CSS, XSL)
Affichage déléguée (CSS)
Perte du sens
Structuration logique
Modularité et réutilisation des structures
Facilite l’accès à des sources de données
hétérogènes
INSA - ASI
TechnoWeb : XML
Introduction
(3/4)
Structure, contenu et présentation
1 document = 3 aspects différents
Le contenu (le fond)
La structure logique
La présentation (la forme)
XML : séparation contenu textuel/structure logique
Autres contenus = ressources externes (photos, vidéos, sons, . . . )
Présentation décrite par moyens complémentaires (CSS, XSL, . . . )
Présentation indépendante des contenus et de la structure
5/37
INSA - ASI
Introduction
TechnoWeb : XML
(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>
6/37
INSA - ASI
TechnoWeb : XML
Document XML
(1/10)
Structure d’un document XML
Prologue
Déclaration XML
Déclaration de type
Instructions de traitement
Arbre des éléments
Éléments (balises)
Attributs
Entités
...
7/37
INSA - ASI
TechnoWeb : XML
Document XML
(2/10)
Prologue : déclaration XML
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" ] ?>
La déclaration XML indique :
la conformité du document à une version de la norme XML,
le jeu de caractères utilisé dans le document,
la présence ou non de références externes.
Cette déclaration est facultative mais fortement conseillée
notamment pour le problème d’encodage des caractères
8/37
INSA - ASI
TechnoWeb : XML
Document XML
(3/10)
Prologue : déclaration de type
Déclaration de type
<!DOCTYPE elt−racine Info−DTD [ déclarations internes ] >
La DTD (Document Type Definition) d’un document XML définit la
grammaire d’un document XML :
Elle facilite l’échange de fichiers (fournit une description)
Elle facilite la validation de document (impose une grammaire)
Elle peut être :
Interne/externe : un document ou plusieurs documents
System/public : stockée localement ou publiée sur internet
9/37
INSA - ASI
TechnoWeb : XML
Document XML
(4/10)
Prologue : instructions de traitement
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 " . . . ?>
: nom d’une application (xml est un mot réservé)
arguments passés à l’application cible
cible
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 " ?>
10/37
INSA - ASI
TechnoWeb : XML
Document XML
11/37
(5/10)
Structure et éléments
Structure d’un document XML
Un document XML est une structure logique arborescente
Élément/noeud = constituant logique du document
Éléments non prédéfinis mais choisis en fonction du type de
document à représenter
L’ensemble de la structure est ordonnée
Le contenu est structuré en éléments qualifiés par des attributs valués
Un élément est représenté par une paire de balises (tags) et leur
contenu
Les balises ouvrantes portent les éventuels attributs
L’imbrication et l’ordre des éléments reflètent la structure
INSA - ASI
TechnoWeb : XML
Document XML
(6/10)
Contraintes syntaxiques
Un document possède une racine et une seule.
Les éléments :
doivent avoir une balise ouvrante et une balise fermante,
peuvent être vides (éléments auto-fermants),
doivent être imbriquées,
peuvent avoir 0,1 ou plusieurs attributs.
Un nom d’élément :
doit commencer par une lettre ou un “ _”,
peut comporter des chiffres, des lettres, “ -”, “ .” ou “ _”,
peut posséder un nom de domaine : "domaineDeNoms:nomElement",
est sensible à la casse.
Les attributs d’un élément :
donnent des précisions sur les éléments et sur leur contenu,
doivent avoir un nom et une valeur,
ne sont pas sensibles à l’ordre.
12/37
INSA - ASI
TechnoWeb : XML
Document XML
13/37
(7/10)
Commentaires, CDATA et Entités prédéfinies
Caractères spéciaux
Pour le contenu de tags et les attributs, XML prédéfinit les 5 entités suivantes :
& → &amp;
’ → &apos;
> → &gt;
< → &lt;
" → &quot;
Commentaires
<!−−ceci est un commentaire −−>
Contraintes sur les commentaires :
Tout le contenu sera ignoré par l’analyseur XML
Pas de commentaire à l’intérieur d’autres tags
CDATA
Indique à l’analyseur de ne pas tenir compte du balisage :
<![CDATA[=>texte non regarde par l’analyseur]]>
INSA - ASI
TechnoWeb : XML
Document XML
(8/10)
Bonne formation et validité
Document XML bien formé
Un document XML est bien formé s’il respecte la syntaxe XML :
il contient 1 ou plusieurs éléments,
un seul élément contient tous les autres (racine),
les éléments sont correctement imbriqués,
les balises de début et fin correspondent (casse comprise),
les noms d’attributs sont uniques par élément,
les valeurs d’attributs sont entre " ou ’,
les valeurs d’attributs ne référencent pas d’entités externes,
les entités sont déclarées avant d’être utilisées.
Document XML valide
Un document XML est valide s’il se conforme à sa DTD
⇒ le document est conforme à un modèle de structure
14/37
INSA - ASI
TechnoWeb : XML
Document XML
15/37
(9/10)
Conseils pour l’écriture de documents XML
Choisir des noms d’éléments (balises) qui représentent leur rôle
(sémantique), ils doivent être aussi explicites que possible.
Le balisage doit être indépendant de la réalisation physique du
document (ex : pas de <gras>).
Préférer un balisage méta-typographique : (ex :
<important>, <ligne>, <cellule>).
La position d’un élément à l’intérieur d’un autre est importante
(l’ordre des balises est préservé).
Inclure dans le document des métadonnées descriptives afin de
décrire le document.
L’indexation d’un document se fait sur le contenu des balises, pas sur
les valeurs des attributs.
INSA - ASI
TechnoWeb : XML
Document XML
16/37
(10/10)
Conseils pour l’écriture de documents XML
Utilisez un élément (balise) lorsque :
le contenu comporte plusieurs mots,
l’ordre est important (il n’y a pas d’ordre sur les attributs),
l’information fait partie du contenu du document par opposition à un
attribut ajustant le comportement d’une balise. Si un analyseur n’est
pas capable de traiter un document XML, il affichera le contenu des
balises mais pas les attributs.
Utilisez un attribut lorsque :
l’information modifie la balise d’un point de vue du traitement
exemple : <liste type="numérotée">... </liste>,
vous souhaitez contrôler les valeurs,
l’information est un identifiant unique ou une référence à l’identifiant
d’une autre balise.
INSA - ASI
Les DTD
TechnoWeb : XML
(1/14)
Un exemple simple de DTD
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>
17/37
INSA - ASI
TechnoWeb : XML
Les DTD
(2/14)
DTD d’un document
DTD
DTD = Document Type Definition
Elle définit éléments et règles d’utilisation (noms des éléments,
attributs possibles pour un élément, imbrications)
⇒Modèle de document XML
Si un document n’a pas de DTD et qu’il suit les règles définies par
XML, il est bien formé
Si un document est bien formé et qu’il fait référence à une DTD à
laquelle il est conforme, il est valide
Ni la DTD, ni le document XML ne contiennent d’information
concernant l’affichage, c’est la CSS qui définira la présentation
18/37
INSA - ASI
TechnoWeb : XML
Les DTD
19/37
(3/14)
Document sans DTD
Document sans DTD
Le balisage est défini de manière informel
Il doit être bien formé pour pouvoir être affiché par un navigateur
Le document doit préciser dans sa déclaration XML qu’il est
autonome (SDD = Standalone Document Declaration)
Remarque
Un document sans DTD peut être affiché mais ne peut pas être interprété.
INSA - ASI
TechnoWeb : XML
Les DTD
(4/14)
A quoi sert la DTD ?
DTD = grammaire du document XML
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.
20/37
INSA - ASI
TechnoWeb : XML
Les DTD
21/37
(5/14)
Déclaration de DTD
3 types de déclaration
DTD interne
<!DOCTYPE racine [declarations]>
DTD externe “locale”
<!DOCTYPE racine SYSTEM "fichier.dtd">
<!DOCTYPE racine SYSTEM "http://www.adresse/fichier.dtd">
DTD externe publique
<!DOCTYPE r a c i n e PUBLIC "nomConnu" "URL">
Remarque : on peut combiner une partie de DTD interne et une partie de
DTD externe (locale ou publique).
INSA - ASI
TechnoWeb : XML
Les DTD
22/37
(6/14)
Prologue d’une DTD
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" ?>
Remarque : l’encodage de la DTD n’est pas propagé aux documents XML
utilisant cette DTD
INSA - ASI
TechnoWeb : XML
Les DTD
(7/14)
Contenu d’une DTD
Déclarations dans les DTD
Déclarations des éléments autorisés :
<!ELEMENT nomBalise (contenu)>
Déclaration de l’ordre des éléments dans (contenu)
Déclarations des attributs des éléments :
<!ATTLIST element attribut type>
Remarque : l’ordre des déclarations n’est pas important.
Exemple
<!ELEMENT auteur (nom, prenom, initial)>
23/37
INSA - ASI
TechnoWeb : XML
Les DTD
(8/14)
Déclaration d’un élément
Déclaration d’un élément
<!ELEMENT nomElement EMPTY|ANY|(modeleContenu)>
Un élément peut :
être vide,
contenir n’importe quel élément déclaré de la DTD,
être formaté selon un modèle.
Les éléments non vides peuvent contenir :
uniquement des données,
<!ELEMENT nomElement (#PCDATA)>
uniquement d’autres éléments,
<!ELEMENT nomElement (element1, element2, ...)>
<!ELEMENT nomElement (element+, element∗, element?)>
<!ELEMENT nomElement ((element1)|(element2)|...)>
des données et d’autres éléments.
24/37
INSA - ASI
TechnoWeb : XML
Les DTD
(9/14)
Déclaration d’attribut
Déclaration d’attribut
<! ATTLIST element a t t r i b u t type [ o p t i o n ]>
Principaux types d’attributs :
: données textuelles ne contenant pas de balises XML
: liste de valeurs possibles
ENTITY : entité déclarée dans la DTD
NOTATION : notation déclarée dans la DTD
ID : l’attribut possède une valeur unique pour chaque élément
IDREF : l’attribut se réfère à un ID d’un autre attribut
IDREFS : l’attribut peut se référer à plusieurs ID, chaque valeur étant
séparée par un espace.
CDATA
(valeur1|...|valeurN)
option
vaut :
une valeur par défaut,
#REQUIRED : valeur d’attribut obligatoire,
#IMPLIED : valeur d’attribut optionnelle,
#FIXED ’val’ : définit une valeur fixée pour l’attribut.
25/37
INSA - ASI
Les DTD
TechnoWeb : XML
(10/14)
Exemple
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>
26/37
INSA - ASI
TechnoWeb : XML
Les DTD
27/37
(11/14)
Déclaration d’entité
Déclaration d’entité
Entité = alias pour un groupe de données
→
Générales internes :
<!ENTITY nom "chaine">
Générales externes :
<!ENTITY nom SYSTEM "URI">
&nom;
→
→
Paramètres internes :
<!ENTITY %nom "chaine">
Paramètres externes :
<!ENTITY %nom SYSTEM "URI">
&nom;
%nom;
→
%nom;
Non analysables : <!ENTITY nom SYSTEM "URI" NDATA notation>
Elles permettent de déclarer du contenu non-XML dans un document
XML (audio, vidéos, images...)
NB : les entités générales peuvent être substituées dans le corps d’un
document XML, les entités paramètres dans la DTD elle-même.
INSA - ASI
TechnoWeb : XML
Les DTD
28/37
(12/14)
Composition de DTD
Inclusion d’une DTD dans une DTD
<!ENTITY %secondeDTD SYSTEM "secondeDTD . dtd ">
...
% secondeDTD ;
En cas de conflit de nom :
Si plusieurs déclarations d’un même élément, la 1ère est prise en
compte
Si plusieurs déclarations d’attribut pour un même élément,
concaténation
Si plusieurs déclarations d’un même attribut pour un même élément,
la 1ère est prise en compte
INSA - ASI
TechnoWeb : XML
Les DTD
(13/14)
Déclaration de notation
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">
<!NOTATION GIF89a PUBLIC "−//Compuserve//Notation Graphics Interchange Format 89a//EN">
29/37
INSA - ASI
TechnoWeb : XML
Les DTD
30/37
(14/14)
Une alternative au DTD : les schémas XML
Inconvénients des DTD
Syntaxe particulière
⇒ apprentissage plus long, pas d’automatisation possible, . . .
1 seul type de données : PCDATA
Pas de définition précise du nombre d’occurrences
Peu de vérifications des données à l’intérieur d’un élément
Avantages des Schémas XML sur les DTD
Typage des données : plusieurs type de données, création de nouveaux
types, . . .
Syntaxe XML
Schémas orientés objet : extension/restriction des types, . . .
INSA - ASI
TechnoWeb : XML
XML et CSS
(1/6)
Les feuilles de style
Objectif : séparation du contenu et de la présentation
⇒ interopérabilité
Distribution à plusieurs médias (multiplateforme)
Personnalisation (adaptation de l’affichage aux groupes)
⇒ réutilisabilité (traitement par des techniques encore inexistantes)
⇒ faciliter la recherche d’informations
Plusieurs formats :
CSS : Cascading Style Sheets
XSL : eXtensible Stylesheet Language
XSL-T : eXtensible Stylesheet Language Tranform
31/37
INSA - ASI
TechnoWeb : XML
XML et CSS
32/37
(2/6)
Utilisation de CSS
Principe
XML [+ DTD] + CSS ⇒ Document formaté
<?xml-stylesheet type="text/css" href="fichier.css" ?>
Remarques :
Toutes les balises définis dans un document XML / une DTD
peuvent faire l’objet d’un traitement
L’ordre des éléments (balises) dans un document XML est respecté ;
il faut tenir compte de ces possibilités lorsque l’on rédige une CSS
INSA - ASI
TechnoWeb : XML
XML et CSS
(3/6)
Déclaration d’une règle
Syntaxe :
sélecteur[, sélecteur...] {déclarations}
sélecteur d’élément : element
sélecteur d’id : #id
sélecteur de classe : .class
sélecteur universel : *
Sélecteur de descendant : element element
Sélecteur d’enfant : element>element
Sélecteur d’adjacent : element+element
Sélecteur de précédence : element1~element2
33/37
INSA - ASI
TechnoWeb : XML
XML et CSS
34/37
(4/6)
Sélecteurs de paramètre
elem[att] : sélectionne les éléments de type elem contenant
l’attribut att, quelque soit la valeur de l’attribut.
elem[att=val] : sélectionne les éléments de type elem dont
l’attribut att vaut val.
elem[att∼=val] : sélectionne les éléments de type elem dont
l’attribut liste att contient val.
elem[attˆ=val] : sélectionne les éléments de type elem dont
l’attribut att débute par val.
elem[att$=val] : sélectionne les éléments de type elem dont
l’attribut att se termine par val.
elem[att*=val] : sélectionne les éléments de type elem dont
l’attribut att contient la sous-chaîne val.
Remarque : il est possible de combiner plusieurs sélecteurs de paramètre
elem[sel1][sel2]...[seln]
INSA - ASI
TechnoWeb : XML
XML et CSS
35/37
(4/6)
Éléments et propriétés
Affichage d’un élément :
“display: block” ⇒ affichage comme élément block
“display: inline” ⇒ affichage comme élément inline
“display: none” ⇒ pas d’affichage
Par défaut les élément sont considérés comme inline
Propriétés identiques à celles du HTML
polices de caractères :
font-size, font-style, font-family, font-weight
textes :
line-height, text-align, text-indent, text-transform
blocs :
height, width, margin-right, margin-left, margin-top, marginbottom, padding-right, padding-left, padding-top, paddingbottom, border-style, border-top-width, border-right-width,
...
INSA - ASI
TechnoWeb : XML
XML et CSS
36/37
(5/6)
CSS : génération de contenu
Les pseudo-éléments :before et :after permettent de générer du
contenu avant et après un élément
Le contenu généré est déclaré par la propriété content
Les pseudo-éléments générés héritent du style de l’élément référence
Exemple
c o l l e c t i o n: be for e
{
content: " Dans : " ;
display: inline ;
font - style: italic ;
}
INSA - ASI
XML et CSS
TechnoWeb : XML
(6/6)
Exemple
Exemple
* {
display: block ;
padding - left: 10 px ;
}
album {
width: 500 px ;
background - color: teal ;
font - family: arial ;
color: white ;
font - size: 12 pt ;
}
titre , auteur {
display: inline ;
font - size: 16 pt ;
font - weight: bold ;
}
auteur { color: red ; }
auteur:before { content: " ( " ; }
auteur:after { content: " ) " ; }
37/37

Documents pareils