Les entités paramètres externes permettent de construire une DTD complexe et volumineuse à partir de plusieurs autres DTD complémentaires.

La déclaration dans la DTD d'une entité paramètre externe s'effectue comme suit :

<!ENTITY % nom SYSTEM "URI">

Les références d'entités paramètres externes sont utilisées dans la DTD de la manière suivante :

%nom_entité;
Déclaration dans la DTD :
<!ENTITY % règles SYSTEM "http//www.monsite.com/regles.dtd">
Utilisation de l'entité dans la même DTD :
%règles;
Exemple :
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE societe [
<!ENTITY % services SYSTEM "services.dtd">
%services;
<!ENTITY % divisions SYSTEM "divisions.dtd">
%divisions;
<!ENTITY % employes SYSTEM "employes.dtd">
%employes;

<!ELEMENT societe (services, divisions, employes)>
]>
<societe>
  <services>
    <service id="DG001">
      <designation>Direction générale</designation>
    </service>
    <service id="ST001">
      <designation>Service technique</designation>
    </service>
    <service id="SC001">
      <designation>Service commercial</designation>
    </service>
    <service id="SC101">
      <designation>Service clientèle</designation>
    </service>
    <service id="RH001">
      <designation>Ressources humaines</designation>
    </service>
    <service id="SQ001">
      <designation>Service qualité</designation>
    </service>
    <service id="SP001">
      <designation>Service production</designation>
    </service>
    <service id="RD001">
      <designation>Recherche et développement</designation>
    </service>
  </services>
  <divisions>
    <division id="A001" services="DG001 RH001"/>
    <division id="B001" services="SC001 SC101"/>
    <division id="C001" services="SP001 SQ001 RD001"/>
  </divisions>
  <employes>
    <employe id="RJ1002" service="DG001">
      <nom>Robierre</nom>
      <prenom>Jean</prenom>
    </employe>
    <employe id="LA1012" service="DG001">
      <nom>Lardut</nom>
      <prenom>Anne</prenom>
    </employe>
    <employe id="GA1013" service="ST001">
      <nom>Guilde</nom>
      <prenom>Angélique</prenom>
    </employe>
    <employe id="HP1022" service="SC001">
      <nom>Henry</nom>
      <prenom>Paul</prenom>
    </employe>
    <employe id="MM1045" service="RH001">
      <nom>Mortier</nom>
      <prenom>Marc</prenom>
    </employe>
    <employe id="LS1102" service="SQ001">
      <nom>Lebreton</nom>
      <prenom>Sophie</prenom>
    </employe>
    <employe id="JM1095" service="RD001">
      <nom>Jolie</nom>
      <prenom>Martine</prenom>
    </employe>
    <employe id="MT1036" service="SC101">
      <nom>Marcelin</nom>
      <prenom>Tania</prenom>
    </employe>
    <employe id="LL1029" service="SC101">
      <nom>Léger</nom>
      <prenom>Laurence</prenom>
    </employe>
    <employe id="DM1052" service="SC001">
      <nom>Duroi</nom>
      <prenom>Maxime</prenom>
    </employe>
  </employes>
</societe>

<?xml version="1.0" encoding="UTF-8"?>
<!-- Fichier services.dtd -->
<!ELEMENT designation (#PCDATA)>
<!ELEMENT service (designation)>
<!ATTLIST service
            id ID #REQUIRED
>
<!ELEMENT services (service+)>

<?xml version="1.0" encoding="UTF-8"?>
<!-- Fichier divisions.dtd -->
<!ELEMENT division EMPTY>
<!ATTLIST division
            id ID #REQUIRED
            services IDREF #REQUIRED
>
<!ELEMENT divisions (division+)>

<?xml version="1.0" encoding="UTF-8"?>
<!-- Fichier employes.dtd -->
<!ELEMENT employe (nom, prenom)>
<!ATTLIST employe
            id ID #REQUIRED
            service IDREF #REQUIRED
>
<!ELEMENT employes (employe+)>
<!ELEMENT nom (#PCDATA)>
<!ELEMENT prenom (#PCDATA)>