8.DTD

8.3.La syntaxe

Reprenons les différents indicateurs d'occurences:
  • pas de symbole veut dire 1 et 1 seul élément
  • + veut dire 1 ou plusieurs éléments
  • * veut dire 0 ou plusieurs éléments
  • ? veut dire 0 ou 1 éléments
Ces symbles sont placés juste après les noms des éléments.

Et voici les différents connecteurs possibles:
  • , les différents éléments séparés par une virgule doivent apparaître dans l'ordre donné
  • | signifie qu'un seul des deux éléments séparés par ce symbole doit apparaître dans le fichier XML
Ces symbles sont placés entre deux éléments.
  • On peut composer les différents connecteurs en utilisant les parenthèses. Toutefois, il faut veiller à ne pas définir une gramaire trop ambigüe par exemple ((nom,prenom)|(nom,surnom)) n'est pas correct, il est préférable d'écrire (nom,(prenom|surnom)).
  • On peut autoriser plusieurs éléments répétés, par exemple (adresse,telephone)* ce qui permet de créer des couples (adresse,telephone).
Les attributs (déclarés par ATTLIST) possèdent différents contrôles:
  • CDATA pour une chaîne quelconque de caracères
  • ID pour un nom unique dans le document (identifiant)
  • IDREF pour un numéro d'identifiant du document (création d'un lien dans le document)
  • ENTITY entité externe
  • ENTITIES liste d'ENTITY séparées par des espaces
  • NMTOKEN pour un mot sans espace
  • NMTOKENS pour une liste de NMTOKEN séparés par des espaces
Les valeurs des attributs peuvent être précisées par la DTD.
  • #REQUIRED signifie que la valeur est obligatoire dans le document
  • #IMPLIED signifie que s'il n'y a pas de valeur dans le document, c'est à l'application de donner la sienne par défaut
  • #FIXED signifie que la valeur doit être celle de la DTD
  • une valeur par défaut que va prendre l'attribut si aucune valeur n'est donnée dans le fichier XML

8.4.Conclusion

Il est très important d'avoir une bonne DTD et donc de passer du temps à sa conception. C'est elle qui vous permettra de construire des documents XML valides. Il peut-être aussi astucieux d'utiliser des DTD existantes et éventuellement de les modifier, c'est généralement plus efficace que de tout refaire à 0. Par exemple, il est plus que probable qu'une DTD définissant un annuaire existe déjà et qu'il prend en compte des choses auxquelles vous n'aviez pas pensé comme l'Etat aux USA par exemple.
Jusque là, on a défini une structure qui pourra être utilisée dans de nombreux outils. On peut ainsi stocker des données (dans des fichiers XML) reste à trouver le moyen de les mettre en forme: c'est le rôle entre autres d'XSL.