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)> |