Résumé
Le prologue des documents XML comporte plusieurs informations :
Préciser qu'il s'agit d'un document XML
Identifier le jeu de caractères utilisé
Identifier la grammaire utilisée (le schéma)
Le premier élément est obligatoire, les deux autres sont facultatifs.
Si aucun jeu de caractères n'est spécifié, une application XML doit supposer qu'il s'agit du jeu de caractères Unicode, encodé en UTF-8 ou en UTF-16.
Si aucun schéma n'est identifié, le document est considéré bien formé. Si un schéma est spécifié, le document peut alors être validé (contre les règles définies dans le schéma).
L'identification du document XML est nécessairement au début du document et a la forme suivante: <?xml version="1.0"?> Il s'agit en fait d'une instruction de traitement.
L'encodage, s'il est spécifié, se retrouve dans l'instruction de traitement qui identifie le document XML: <?xml version="1.0" encoding="ISO-8859-1"?>. Dans cet exemple, il s'agit d'un document XML dont le jeu de caractères est l'ISO-Latin 1 (norme ISO 8859-1), et donc pas l'Unicode. Dans l'exemple précédent, le jeu de caractères était l'Unicode, avec encodage UTF-8 ou UTF-16, soit la valeur par défaut.
Il n'est pas indispensable d'indiquer le schéma dont un document XML est une "instance" (où sont les règles qu'il respecte ?). Afin d'éviter les liens morts (quand un schéma public est utilisé depuis Internet, quand des fichiers locaux ont été déplacés), un environnement applicatif peut définir des moyens extérieurs au document pour conserver cette information (catalogues). Ceci s'impose désormais, car plusieurs emplois d'un schéma sont possibles (aide à l'édition, validation de lots avec génération de rapports). Toutefois, nous allons évoquer la syntaxe des DTDs, car de nombreux documents l'emploient encore (exemple: HTML), et elle montre très bien ce que l'on attend de cette information.
La DTD peut être référencée de la façon suivante: <!DOCTYPE racine PUBLIC "identificateur public" "uri de la DTD"> Ici, "racine" identifie l'élément qui contient tous les autres dans le document. La mention PUBLIC et la chaîne de caractères qui suit, optionnelles, précisent un identificateur public pour cette DTD. Enfin la chaîne de caractères qui la suit, obligatoire, précise la localisation de la DTD à l'aide d'une URI.
Très souvent, un appel à une DTD sera de la forme suivante: <!DOCTYPE racine SYSTEM "racine.dtd"> Cela qui signifie que la DTD est dans un fichier nommé "racine.dtd" et qui se situe dans le même répertoire que le document.
On peut enfin inclure une DTD à l'intérieur du document lui-même, de la façon suivante: <!DOCTYPE racine [ <!ELEMENT racine EMPTY> ]>. Ici, la DTD (fort simple) indique que le document n'a qu'un élément vide <racine/>. Il s'agit d'une pratique assez rare, elle peut être employée pour déclarer des entités, où redéfinir certaines règles, spécifiquement pour ce document.