|
Nous l'avons déjà évoqué, il est possible de substituer des chaînes de caractères définies par des chaîne de substitutions. Pour cela on utilise une sorte d'alias : les entités.
En plus des entités prédéfinies que nous avons déjà abordé, il existe deux autres types d'entités qui sont elles définies dans la DTD et qui permettent de définir ses propres éléments de substitution (chaînes de caractères, fichiers externes...). Il s'agit des entités internes et des entités externes (qui comprennent les entités externes XML et les entités externes non analysables).
De manière globale, l'appel vers une entité est toujours le même. Il s'effectue au sein du document de données, en utilisant le nom de l'entité précédée du caractère "&" et suivie par ";". L'entité sera alors partout remplacée par sa valeur de substitution.
Voyons maintenant comment utiliser les deux types d'entités énoncées :
Les entités internes |
Dans une entité interne, l'entité est définie à l'intérieur même du document XML; on y spécifie le nom de l'entité et une chaîne de caractères de substitution (sorte de constantes).
Voyons cela par un exemple :
|
On aura le rendu suivant lors de l'ouverture de ce fichier dans un navigateur :
A noter qu'on peut également définir des entités paramètres du même style, mais permettant de définir des équivalent de macros pour les DTD. Elles permettent de définir des règles de DTD réutilisables, ce qui peut s'avérer très utiles pour des règles complexes de contrôle d'éléments réutilisées pour plusieurs éléments.
Pour utiliser ces entités on utilisera la même syntaxe que pour les entités internes en faisant juste précéder le nom de l'entité du caractère "%".
Voici un exemple présentant la syntaxe à utiliser :
|
Lors de l'appel de l'entité il est, pour ce type d'entités, obligatoire d'utiliser des parenthèses.
Remarque : Dans l'exemple précédent les éléments référencés doivent tous être également référencés dans la DTD.
Les entités externes |
Une entité est dite externe lorsque sa valeur est définie dans un autre document que celui où elle est déclarée. On en distingue deux types :
Une entité externe XML est une entité externe dont la valeur est du code XML. Cela permet notamment de segmenter un gros document en plusieurs sous-documents. L'entité référencée sera parsée.
On spécifie, lors de la déclaration de l'entité, une URI vers le fichier dont le contenu sera utilisé comme donnée de substitution :
<!ENTITY nomEntiteExterneXML SYSTEM "URIFichierDonnées">
|
Lors de l'appel de l'entité dans le document, l'ensemble des données référencées par l'URI spécifiée seront insérées à la place de la chaîne.
On peut également faire une référence vers un FPI (Formal Public Identifier) (comme vu dans la partie DTD), ce qui permet d'établir une indirection entre le nom symbolique et une URL. L'URL est utilisée pour localiser la DTD si le FPI ne parvient pas à être résolu.
La déclaration d'une entité externe XML adressée par FPI est de la forme :
<!ENTITY nomEntiteExterneXML PUBLIC "FPIentite" "URLentite">
|
Voici un exemple d'utilisation :
|
Lors de la référence à une telle entité, le système consulte son fichier catalogue. Si le FPI y figure, il tente de remplacer la référence par le contenu du fichier local. Sinon, il va voir à l'URL comme précédemment.
Une entité externe non analysable est une entité externe dont la valeur n'est pas du code XML. Cela permet d'inclure des documents non XML (fichier binaire, son, images). L'entité référencée ne sera pas parsée.
Une description du format des données doit impérativement être déclarée dans la DTD à l'aide de la commande <!NOTATION . Sa forme est la suivante :
<!NOTATION nomNotation SYSTEM "URLDescription_ou_Application">
|
La déclaration d'une entité non analysable s'effectue en spécifiant le type de données de l'entité par l'intermédaire du mot clé NDATA (pour Notation DATA).
<!ENTITY nomEntiteExterneNonXML SYSTEM "URLFichierDonnées " NDATA nomNotation>
|
Les entités externes non XML constituent donc une manière puissante de faire référence à des fichiers dans un document XML.
Cette partie sur les entités clos notre présentation des DTD. Intéressons nous à présent aux Schémas XML.
<< Page Précédente Les DTD |
Page Suivante > > XML Schemas |