Les mots retenus pour être utilisés dans la modélisation d'un dictionnaire appartiennent au même champs sémantique : le gigantisme. Ce sont :
  1. Titanesque
  2. Colossal
  3. Cyclopéen
  4. Gigantesque
  5. Éléphantesque
  6. Prométhéen
  7. Cyclope
  8. Titan
  9. Colosse
  10. Pantagruélique
Voici la modélisation XML avec feuille de style, sans feuille de style, le squelette du dictionnaire et la DTD.

DTD commentée

  • <!ELEMENT dictionnaire (entree+) >
    Définition de la balise racine, dictionnaire, qui doit au moins comprendre une entrée.
  • <!ELEMENT entree (mot, formes, definition+) >
    Balise entree qui doit comprendre le nom de l'entrée (le mot qu'elle définit), la liste de ses formes, et au moins une définition
  • <!ELEMENT mot (#PCDATA)>
    Le nom de l'entrée
  • <!ELEMENT formes (forme+) >
    La liste des formes, qui comprend au moins une forme
  • <!ELEMENT forme (ortho*,prononciation*) >
    Chaque forme peut avoir une ou plusieurs orthographe ou une ou plusieurs prononciation, mais il n'est pas nécessaire de les préciser si elles sont identiques à une forme précédente ou au nom de l'entrée
  • <!ELEMENT ortho (#PCDATA) >
    L'orthographe d'une forme donnée du mot
  • <!ELEMENT prononciation (#PCDATA) >
    Sa prononciation
  • <!ELEMENT definition (etymologie?,sens+)>
    Chaque définition peut comporter une étymologie et doit comporter au moins un sens.
  • <!ELEMENT etymologie (#PCDATA|racine)* >
    Chaque étymologie comprend du texte explicatif et peut contenir une racine.
  • <!ELEMENT racine (#PCDATA) >
    Chaque racine contient du texte
  • <!ELEMENT sens (acception+)>
    Chaque sens peut-être constitué d'au moins une acception
  • <!ELEMENT acception (#PCDATA|syn|exemple|emplois|contexte)*>
    Chaque acception peut comporter du texte, des synonymes, des exemples, des emplois, et des contextes d'utilisation
  • <!ELEMENT syn (#PCDATA) >
    Chaque synonyme contient du texte
  • <!ELEMENT emplois (#PCDATA) >
    La liste d'emplois est textuelle
  • <!ELEMENT contexte (#PCDATA)>
    de même que les contextes
  • <!ELEMENT exemple (citation,auteur?,ouvrage?,date?) >
    Chaque exemple doit contenir une citation, qui peut éventuellement être située selon son auteur, sa source, et sa date de parution
  • <!ELEMENT citation (#PCDATA) >
    Les citations sont textuelles
  • <!ELEMENT auteur (#PCDATA) >
    Les noms d'auteurs aussi
  • <!ELEMENT ouvrage (#PCDATA) >
    Ceux d'ouvrages également
  • <!ELEMENT date (#PCDATA)>
    La date aussi (curieusement, on ne peut spécifier qu'il sagit d'une donnée numérique dans un DTD)
  • <!ATTLIST racine langue CDATA #REQUIRED>
    La balise racine reçoit un attribut obligatoire, qui est sa langue de provenance
  • <!ATTLIST forme type CDATA #IMPLIED>
    La balise forme reçoit un attribut facultatif, qui est son type (genre, nombre, forme de base, forme alternative, fléchie...)
  • <!ATTLIST definition type CDATA #IMPLIED>
    Chaque définition reçoit un attribut facultatif, qui est sa catégorie grammaticale. Il serait possible de spécifier cet attribut comme une liste fermée pour empêcher l'introduction de catégories inexistantes. La catégorie grammaticale est un attribut de cette balise et nom de mot, car un mot peut changer de catégorie grammaticale en fonction de sa définition. Ce devrait peut-être même être un attribut de "sens".
Mon document XML a été validé en utilisant un script python (Basé sur celui-ci), lequel m'a permis d'éliminer un certain nombre d'erreurs, comme en témoignent les captures d'écran suivantes (cliquer pour élargir) :
Au bout du compte, mon dictionnaire et mon DTD ont fini par se correspondre parfaitement.