Rédaction d'une DTD - Notice documentaire
Avant de faire une DTD pour la notice documentaire analysée, nous avons besoin de voir la notion de séparateur.
Nous avons vu la référence bibliographique suivante :
Dumoulin, Roger, Comment obtenir un blé de qualité ? Paris, Editions du Meunier, 2043. 212p.
Mais ceci n'est qu'une façon de la rédiger. On pourrait avoir :
Dumoulin, Roger, Comment obtenir un blé de qualité ? Paris : Editions du Meunier, 2043. 212p.
Dumoulin, Roger. Comment obtenir un blé de qualité ? Paris : Editions du Meunier, 2043. 212p.
Dumoulin, Roger. — Comment obtenir un blé de qualité ? Paris, Editions du Meunier, 2043. 212p.
Dumoulin, Roger (2043) Comment obtenir un blé de qualité ? Paris, Editions du Meunier,. 212p.
etc.
Nous avons aussi vu d'autres références qui comportaient, elles aussi, des différences, comme :
la référence d'un ouvrage Dumoulin, Roger, Comment obtenir un blé de qualité ? Paris, Editions du Meunier, 2043. 212p.
la référence d'un article Flaye, Ingrid, « Comment détecter les fines mouches ? », Revue d'entomologie extrapolée, 25 : 3 (2022), pp. 5-10.
la référence d'un DVD de musique Après la pluie, le beau temps [enr. sonore] / Spielerisch Georges — München : Meteo Records ; [Paris : distr Diskgraph], 2028 — (2 h 12 min 32 s) : DVD.
Notion de séparateur
Une référence bibliographique est toujours constituée d'informations de différentes catégories. Il faut donc séparer ces différents types d'information à l'aide de « séparateurs » (qui sont conventionnels) .
Exemples de séparateurs : , . ; / [] () — etc.
Ces séparateurs sont conventionnels, ce qui signifie :
qu'ils constituent des normes partagées par une communauté
mais que, ces communautés pouvant varier, les normes peuvent varier même s'il y a — officiellement — une norme universelle
Des normes varient toujours selon les époques et les domaines, ce qui fait que la façon de noter les séparateurs va varier aussi
Un séparateur n'est pas une information. On n'a donc pas à le prendre en compte dans un fichier XML. Mais c'est à l'édition (affichage sur un écran, impression) que ce séparateur devra être restitué.
Nous devons donc distinguer :
– le traitement des informations contenues dans un document (un fichier XML ne comporte que ces informations) ;
– l'édition (papier ou sur écran) d'un document ; cette édition se fera selon une certaine disposition (les séparateurs en feront partie) qui répond à des normes de présentation.
C'est par l'utilisation du langage XSLT ou par les feuilles de style CSS (les deux ne faisant pas partie de ce cours) que ces séparateurs seront restitués.
Nous n'aborderons donc pas dans ce cours l'édition des documents. Cela devrait faire partie d'un cours ultérieur.
Nous allons maintenant étudier ce qu'est la DTD d'un fichier XML
La DTD d'un document permet de :
déclarer les catégories d'information contenues dans le document à l'aide de balises ;
donner les règles qui définissent les rapports entre ces catégories d'information.
C'est en quelque sorte la « grammaire » du document
Reprenons le fichier XML que nous avons précédemment constitué pour la notice : <notice><titre>Comment obtenir un blé de qualité ?</titre><auteur><nom>Dumoulin</nom><prenom>Roger</prenom></auteur><lieu>Paris</lieu><date>2043</date><edition>Editions du Meunier</edition><collation>212</collation><collection>Industrie agricole</collection><sujet>Agriculture</sujet><isbn>12-342354-9</isbn></notice> Avant de rédiger une DTD pour ce fichier XML, nous allons d'abord représenter notre fichier sous la forme indentée. |
Du fichier XML à la DTD
Dans une DTD, nous déclarons les balises. Nous allons donc déclarer les balises
<notice>, <titre>, <auteur>, <nom>, <prenom>, <lieu>, <date>, <edition>, <collation>, <collection>, <sujet>, <isbn>.
Remarquons que :
1. nous suivons l'ordre d'apparition dans le fichier ;
2. chaque balise de cette énumération représente un couple (balise ouvrante, balise fermante) ;
3. chaque balise n'apparaît qu'une fois.
La syntaxe pour déclarer une DTD est <!DOCTYPE suivi du nom de balise racine du fichier XML. Dans ce cas précis, la syntaxe sera : <!DOCTYPE notice
Puis nous donnons les règles qui définissent les rapports entre les balises. Ainsi, la balise <notice> a pour successeurs immédiats les balises <titre>, <auteur>, <lieu>, <date>, <edition>, <collation>, <collection>, <sujet>, <isbn> ; puis la balise <auteur> a pour successeurs immédiats les balises, <nom> et <prenom>.
Méthode : Déclaration de règles de réécriture ("déclaration-règle")
La balise <notice> a pour successeurs immédiats les balises <titre>, <auteur>, <lieu>, <date>, <edition>, <collation>, <collection>, <sujet>, <isbn>. Nous dirons que :
la balise <notice> se réécrit <titre> + <auteur> + <lieu> + <date> + <edition> + <collation> + <collection> + <sujet> + <isbn>
et nous écrirons comme suit dans la DTD du fichier XML
<!ELEMENT notice (titre, auteur, lieu, date, edition, collation, collection, sujet, isbn)>
La balise <auteur>a pour successeurs immédiats les balises <nom> et <prenom>. Nous dirons que :
la balise <auteur> se réécrit <nom> + <prenom>
et nous écrirons
<!ELEMENT auteur (nom, prenom)>
Syntaxe de la déclaration de la balise :
1. ouvrir un chevron : <
2. écrire un point d'exclamation : <!
3. écrire le mot clé "élément" : <!ELEMENT
4. écrire le nom de la balise déclarée : <!ELEMENT notice
5. écrire les noms des balises "successeurs immédiats" entre parenthèses et séparées par une virgule : <!ELEMENT notice (titre, auteur, lieu, date, edition, collation, collection, sujet, isbn)
6. écrire le chevron fermant : <!ELEMENT notice (titre, auteur, lieu, date, edition, collation, collection, sujet, isbn)>
Il s'agit effectivement d'une déclaration (on déclare des balises) mais c'est aussi une règle (on indique les relations entres les balises ou on montre des balises dérivent d'une balise initiale).
Syntaxe : Généralisation à l'ensemble de déclaration-règle du fichier
Nous obtenons :
<!ELEMENT notice (titre, auteur, lieu, date, edition, collation, collection, sujet, isbn)>
<!ELEMENT auteur (nom, prenom)>
Méthode : Déclaration de type de données ("déclaration")
Les balises <titre>, <auteur>, <lieu>, <date>, <edition>, <collation>, <collection>, <sujet>, <isbn> sont des balises terminales : elles n'ont pas de successeurs.
La balise <titre>, par exemple, étant terminale, comporte un contenu textuel. Elle est donc du type "texte".
On déclarera ce type de façon suivante :
<!ELEMENT titre (#PCDATA)>
1. ouvrir un chevron : <
2. écrire un point d'exclamation : <!
3. écrire le mot clé "élément" : <!ELEMENT
4. écrire le nom de la balise déclarée : <!ELEMENT titre
5. écrire le mot-clé PCDATA précédé d'un # entre parenthèses : <!ELEMENT titre (#PCDATA)
6. écrire le chevron fermant : <!ELEMENT titre (#PCDATA)>
PCDATA signifie parsed character data, c'est-à-dire données caractères analysables (en anglais, parsing signifie analyser grammaticalement, mais ici parsed signifiera simplement analysé, c'est-à-dire décomposé).
Syntaxe : Généralisation à l'ensemble de déclaration-type de données
Nous obtenons :
<!ELEMENT titre (#PCDATA)>
<!ELEMENT nom (#PCDATA)>
<!ELEMENT prenom (#PCDATA)>
<!ELEMENT lieu (#PCDATA)>
<!ELEMENT date (#PCDATA)>
<!ELEMENT edition (#PCDATA)>
<!ELEMENT collation (#PCDATA)>
<!ELEMENT collection (#PCDATA)>
<!ELEMENT sujet (#PCDATA)>
<!ELEMENT isbn (#PCDATA)>
La déclaration
<!DOCTYPE notice
ne se termine pas, au bout de la ligne, par un chevron fermant tout simplement parce que ce chevron fermant se trouvera à la fin de la DTD.
Nous aurons ainsi :
<!DOCTYPE notice
[
ensemble des déclarations-règles de la DTD
et ensemble des déclarations de type de données
]
>
Remarque : "notice" est le nom de la balise racine du fichier XML
Syntaxe :
Dans le cours prochain, nous aborderons la notion de propriété d'une catégorie d'information, notion qui nous conduira à la notion d'attribut.