La création d'une DTD personnelle consiste à utiliser les modules appropriés à une activité particulière.

Avant d'aborder plus en détail la conception d'une DTD, il est souhaitable de prendre connaissance de l'utilisation des entités XML, puisqu'elles seront largement utilisées dans cette section.

  1. Déclaration des entités
  2. Les entités internes
  3. Les entités externes
  4. Les entités analysables
  5. Les entités non-analysables

Construire sa propre Définition de Type de Document demande avant tout de définir correctement ses besoins.

Si le document à concevoir ne nécessite qu'une structure cellulaire alors il faudra faire appel au module des tableaux.
Si le document semble plus complexe, en combinant des tableaux et des éléments textuels, par exemple, alors il sera nécessaire de lister les éléments HTML utilisés puis de repérer les modules pertinents.

Ce travail effectué, il ne restera plus qu'à référencer les modules dans la DTD personnelle comme suit :

<!-- Déclaration -->
<!ENTITY % table
             PUBLIC "-//W3C//ELEMENTS XHTML Tables 1.0//EN"
             "http://www.w3.org/TR/xhtml-modularization/dtD/XHTML1-table.mod">
<!-- Appel -->
%table;

Bien que cette construction soit tout à fait valable, il est préférable de prendre de bonnes habitudes immédiatement.

Dans ce cas, un gain de souplesse est obtenu en construisant sa déclaration sur le modèle suivant :

<!ENTITY % xhtml-nom.module "INCLUDE|IGNORE">
<![%xhtml-nom.module;[
<!-- Déclaration -->
<!ENTITY % xhtml-nom.mod
          PUBLIC "-//W3C//ELEMENTS XHTML Nom Complet 1.0//EN"
          "http://www.w3.org/TR/xhtml-modularization/dtD/xhtml-nom-1.mod">
<!-- Appel -->
%xhtml-nom.mod;
]]>

Cette méthode plus dense permet d'inclure ou d'ignorer le module concerné par l'intermédiaire de la déclaration d'entité et en particulier des mots-clés INCLUDE ou IGNORE.

Ensuite, la construction est totalement identique pour chaque module à déclarer, il suffit seulement de changer les noms abrégé et public du module impliqué.

L'exemple précité donnera alors ceci :

<!ENTITY % xhtml-tables.module "INCLUDE">
<![%xhtml-table.module;[
<!-- Déclaration -->
<!ENTITY % xhtml-table.mod
          PUBLIC "-//W3C//ELEMENTS XHTML Tables 1.0//EN"
          "http://www.w3.org/TR/xhtml-modularization/dtD/xhtml-table-1.mod">
<!-- Appel -->
%xhtml-nom.mod;
]]>
Sommaire