|
Marcilio
de Brito
Docteur en science
de l'information et de la communication
Professeur invité à l'ENSSIB
| Exemple pour comprendre une structure
de DTD |
|
Vu logique du document
DTD correspondante
Le langage XML : l'élément
Le langage XML : ordonnancement
de contenus
Le langage XML : indication d'occurences
Attribut : une méthode de qualification
Avant de passer à la description
des DTD-SciELO nous proposons un petit aperçu sur la
structure des DTDs et ceci pour mieux comprendre les composants
relatifs aux revues électroniques.
L'exemple suivant est assez répandu sur le web et nous
l'avons choisi par son objectivité (sources : Frédéric
Lopes
,
Bruno Chatel et Pierre Attar
).
Pour partager des informations il faut communiquer avec les
mêmes balises pour décrire les mêmes informations.
Dans cette optique, on utilise une DTD (Document Type Definition)
ou un schéma XML (XML Schema). Il s'agit à peu
près des mêmes mécanismes. La différence
cruciale entre les deux est que la DTD est un outil de SGML,
et que XML Schema a été créé pour
XML.
Ce principe peut être illustré par la description
du contenu d'un document XML.
Tout d'abord, il faut y préciser le nom des balises
que l'on peut ou doit utiliser dans un document XML, et les
éléments fils possibles. Il faut indiquer également
le type de données, ces éléments pourront
contenir des valeurs : numériques, textuelles, alphanumériques.
Si un document structuré n'a pas de DTD (ce n'est pas
obligatoire), on dit qu'il est bien formé.
Si une DTD ou un schéma XML est déclaré
et que le document XML le respecte, on dira que ce dernier
est valide. Pour cela, il faut déclarer la DTD ou le
schéma dans le code XML.
Supposons ainsi la représentation d'un répertoire
:
Vue
logique du modèle
Différencier arbre du modèle et arbre d'objets
typés des instances
(source Bruno Chatel et Pierre Attar)
<!DOCTYPE carnet-adresse
SYSTEM "carnet-adresse.dtd">
Sous cette déclaration, nous allons créer une
DTD adaptée à notre répertoire :
DTD
correspondante
| <!ELEMENT
CARNET-ADRESSE (ADRESSE+)> |
| <!ATTLIST
CARNET-ADRESSE |
DATE-CREATION
|
CDATA
#REQUIRED |
Modèles
de contenus |
DATE-MAJ
|
CDATA
#REQUIRED> |
Valuation
: attributs |
| |
| <!ELEMENT
ADRESSE |
.(IDENTITE,
COORDONNEES, COORDONNEES?, NOTE*)>
|
| <!ELEMENT
IDENTITE (NOM, PRENOM, SURNOM?)> |
<!ELEMENT
NOM (#PCDATA)>
(PRENOM? SURNOM et NOTE suivent la syntaxe de NOM) |
| <!ELEMENT
COORDONNEES |
(ADRESSE-POSTALE,
TELEPHONE*,.INTERNET?)>
|
Organisation
des contenus |
|
| <!ELEMENT
TELEPHONE (#PCDATA)> |
| <!ATTLIST
TELEPHONE |
TYPE (STANDARD|DIRECT|
............FAX|MOBILE)
#REQUIRED>
|
Occurences
optionnelles |
| Typage
de données |
Ceci est enregistré dans
un fichier texte, sous le nom "repertoire.dtd".
Ainsi, votre document XML n'est plus "bien formé",
mais "valide".
<!ELEMENT CARNET-ADRESSE (ADRESSE+)>
Nous commençons par déclarer la balise de plus
haut niveau. Le nom de l'élément XML fils, c'est-à-dire
ADRESSE, est écrit entre parenthèse.
<!ELEMENT ADRESSE (IDENTITE, COORDONNEES, COORDONNEES?,
NOTE*) >
Ici, nous déclarons les éléments fils
de <ADRESSE>. Nous spécifions les élément
fils <IDENTITE>, <COORDONNEES>, éventuellement
autres <COORDONNEES> et une ou plusieurs <NOTE>.
<!ELEMENT NOM (#PCDATA)>
<!ELEMENT TELEPHONE (#PCDATA)>
Ici, on voit que les éléments <NOM> et
<TELEPHONE> n'ont pas d'élément fils.
Ils peuvent comporter n'importe quelle donnée alphanumérique.

Le
langage XML : l'élément (source Bruno Chatel
et Pierre Attar)
Déclaration
d'un élément par son contenu
| Contenu
déclaré |
Modèle
de contenu ( ) |
vide
<!ELEMENT imag EMPTY> |
textuel
<!ELEMENT titre (#PCDATA)>
occurrence implicite
groupe
<!ELEMENT val (déclarée | mesurée)>
groupe et/ou textuel
<!ELEMENT p (#PCDATA|val)*> |
Le
langage XML : ordonnancement de contenus (source Bruno Chatel
et Pierre Attar)
 |
<!ELEMENT para (titre, sspara+)> |
 |
<!ELEMENT para (titre, sspara+)> |
 |
<!ELEMENT para (liste|texte)> |
 |
<!ELEMENT para ANY> |

Le
langage XML : indication d'occurences (source Bruno Chatel
et Pierre Attar)
 |
<!ELEMENT chap (titre, sspara+)> |
 |
<!ELEMENT sspara (titre?,.texte+)> |
 |
<!ELEMENT table (lem, déf+)> |
 |
<!ELEMENT para (titre,.sspara*)> |

Attribut
: une méthode de qualification (source Bruno Chatel
et Pierre Attar)

Mise à jour : mercredi
5 décembre 2001
Droits d'auteur réservés Marcilio de Brito -
décembre 2001
|