13.07.2015 Views

Entités et notations dans les DTD - Pearson

Entités et notations dans les DTD - Pearson

Entités et notations dans les DTD - Pearson

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

7Entités <strong>et</strong> <strong>notations</strong><strong>dans</strong> <strong>les</strong> <strong>DTD</strong>Les entités sont simplement des entrées textuel<strong>les</strong> automatiques,c’est-à-dire des raccourcis d’écriture. Grâce à el<strong>les</strong>, vous pouvezassocier un nom à un texte qui sera substitué à l’entité à chaque foisqu’elle apparaît <strong>dans</strong> le document.Il existe plusieurs types d’entités qui fonctionnent toutes de la mêmefaçon <strong>et</strong> qui sont toutes définies au sein d’une <strong>DTD</strong>. Leurs différencesportent sur <strong>les</strong> endroits où la substitution pourra avoir lieu <strong>et</strong> sur le typede données qu’el<strong>les</strong> peuvent contenir.Ces types peuvent être classés en deux catégories : <strong>les</strong> entités généra<strong>les</strong><strong>et</strong> <strong>les</strong> entités paramètres. Les premières ne peuvent être substituées que<strong>dans</strong> un document XML, tandis que <strong>les</strong> secondes ne peuvent l’être que<strong>dans</strong> une <strong>DTD</strong>.Les entités généra<strong>les</strong> peuvent el<strong>les</strong>-mêmes être subdivisées en entitésinternes <strong>et</strong> externes, analysées ou non analysées. Les entités paramètrespeuvent aussi être subdivisées en entités internes <strong>et</strong> externes, mais el<strong>les</strong>sont toujours analysées.


92P<strong>et</strong>it manuel de prise en main de XMLCréer une entité généraleLa forme d’entité la plus simple est définie <strong>dans</strong> une<strong>DTD</strong> <strong>et</strong> représente simplement du texte. Officiellement,on <strong>les</strong> appelle entités généra<strong>les</strong> internes, maison <strong>les</strong> désigne souvent sous le terme de raccourcis.Ces entités sont créées à l’aide de la syntaxe, où nom_ent est lenom que l’on souhaite donner à l’entité <strong>et</strong> qui seracelui sous lequel elle sera désignée <strong>dans</strong> le documentXML ; contenu est le texte qui sera substituéà l’entité <strong>dans</strong> le document.dtdFigure 7.1 Les entités généra<strong>les</strong> internes facilitentl’inclusion de phrases longues qui reviennent souvent<strong>dans</strong> un document XML.CONSEILS• Le nom de l'entité doit respecter <strong>les</strong> règ<strong>les</strong> desnoms XML valides.• En XML, il existe déjà cinq entités généra<strong>les</strong>prédéfi nies : &amp;, &lt;, &gt;, &quot; <strong>et</strong>&apost; (voir page 14). Toutes <strong>les</strong> autresentités doivent être déclarées <strong>dans</strong> la <strong>DTD</strong>avant leur utilisation.• De nombreuses entités courantes ont déjà étédéfi nies, prêtes à être incluses <strong>dans</strong> vos propres<strong>DTD</strong>. Pour plus de détails, voir <strong>les</strong> conseils dela page 95.


Chapitre 7Entités <strong>et</strong> <strong>notations</strong> <strong>dans</strong> <strong>les</strong> <strong>DTD</strong> 93xmlLe fait le plus intéressant à propos desjardins est qu’il existe une forte controversesur leur existence même...Dans tous <strong>les</strong> cas, il est intéressant de noterque l’imagination des poètes <strong>et</strong> des ancienshistoriens a créé l’une des sept &mdm;.Figure 7.2 Il est plus simple <strong>et</strong> plus rapide de taper &mdm;que merveil<strong>les</strong> du monde.htmlLES JARDINS SUSPENDUS DE BABYLONELes jardins suspendus de Babylone a étéconstruit en 600 BC<strong>et</strong> détruit(e) par un tremblement de terre en226 BC....Le fait le plus intéressant à propos des jardinsest qu’il existe une forte controverse sur leurexistence même...Dans tous <strong>les</strong> cas, il est intéressant de noterque l’imagination des poètes <strong>et</strong> des ancienshistoriensa créé l’une des sept merveil<strong>les</strong> du monde....Utiliser <strong>les</strong> entités généra<strong>les</strong>Pour utiliser <strong>dans</strong> un document XML une entité quevous avez définie <strong>dans</strong> une <strong>DTD</strong>, il suffit de préfixerson nom par une esperlu<strong>et</strong>te (&) <strong>et</strong> de le faire suivred’un point-virgule (;) : l’entité no_ent, par exemple,s’utilisera donc sous la forme &no_ent;.CONSEILS• Vous ne pouvez utiliser une entité générale que sielle a été défi nie <strong>dans</strong> la <strong>DTD</strong> utilisée par votredocument XML. Dans le cas contraire, le processeuraffi rmera qu'elle n'existe pas.• Les références de caractères perm<strong>et</strong>tent d'ajouterdes symbo<strong>les</strong> spéciaux : &246;, par exemple,produit le caractère ö. Bien qu’el<strong>les</strong> leur ressemblent,ce ne sont pas des entités <strong>et</strong> el<strong>les</strong> n’ont pasbesoin d’être déclarées <strong>dans</strong> la <strong>DTD</strong> (voirAnnexe B).• Les entités généra<strong>les</strong> ne peuvent être utilisées quepar <strong>les</strong> documents XML, pas par <strong>les</strong> feuil<strong>les</strong> XSLT(il existe des moyens de contourner c<strong>et</strong>te restriction,mais ils sont complexes <strong>et</strong> lourds).• Vous pouvez utiliser une entité <strong>dans</strong> une autredéfi nition d'entité du moment que cela n'induitpas de référence cyclique.Figure 7.3 L’entité de la Figure 7.2 est substituéelors de l’analyse du document XML.


94P<strong>et</strong>it manuel de prise en main de XMLCréer une entité généraleexterneSi le texte de votre entité est plus long ou si elle doitpouvoir être utilisée <strong>dans</strong> plusieurs <strong>DTD</strong>, il estsouvent plus pratique de la sauvegarder <strong>dans</strong> unfichier séparé portant l’extension .ent.Quand vous aurez besoin de c<strong>et</strong>te entité <strong>dans</strong> une<strong>DTD</strong>, il suffira d’utiliser la syntaxe , où nom_ent est le nomde l’entité, SYSTEM indique qu’il s’agit d’une entitéexterne <strong>et</strong> entite.uri est l’emplacement du fichiercomprenant le contenu de c<strong>et</strong>te entité.CONSEILS• entite.uri peut désigner un fi chier local à votreordinateur ou un fi chier situé sur une machine duréseau local ou sur Intern<strong>et</strong>.• L'extension .ent n’est pas obligatoire (n’importequelle autre extension convient), mais c’est laplus employée.• Grâce aux entités externes, vous pouvez en faitcréer une <strong>DTD</strong> à partir de plusieurs autres.dtdLe fait le plus intéressant à propos desjardins est qu’il existe une forte controversesur leur existence même....Dans tous <strong>les</strong> cas, il est intéressant de noterque l’imagination des poètes <strong>et</strong> des ancienshistoriens a créé l’une des sept &mdm;.Figure 7.4 Ici, on définit l’entité pour qu’elle représente uneportion de texte XML complète. Vous remarquerez qu’elleinclut l’entité mdm définie à la Figure 7.1. Ce texte est sauvegardé<strong>dans</strong> le fichier jardins.ent.dtdFigure 7.5 L’entité histoire_jardins pointe vers l’URI dufichier contenant le texte de l’entité.


Chapitre 7Entités <strong>et</strong> <strong>notations</strong> <strong>dans</strong> <strong>les</strong> <strong>DTD</strong> 95xml...Les jardinssuspendus de BabyloneAl Hillah en Irak0600226tremblement de terre&histoire_jardins;...Figure 7.6 Assurez-vous de placer standalone=”no” <strong>dans</strong>la déclaration XML. Vous pouvez ensuite utiliser l’entitégénérale externe &histoire_jardins; <strong>dans</strong> le document.Utiliser <strong>les</strong> entités généra<strong>les</strong>externesUne entité externe peut être utilisée <strong>et</strong> partagée avecd’autres utilisateurs. Vous pouvez également emprunterleurs entités externes.Pour utiliser une entité générale externe, vous devezajouter standalone=”no” à la déclaration XML,comme à la Figure 7.6. C<strong>et</strong>te directive indique auprocesseur que le document a besoin d’un fichierexterne ; ici, celui qui contient la définition de l’entité.Ensuite, l’entité s’utilise exactement comme uneentité interne.CONSEILS• Une URI (Uniform Resource Identifier) est unechaîne de caractères perm<strong>et</strong>tant d’identifi er <strong>et</strong> delocaliser une ressource. On la confond souventavec une URL (Uniform Resource Locator) bienque, techniquement, une URI puisse être une URLou un URN (Universal Resource Name). Dans lecadre de ce livre, URI <strong>et</strong> URL ont la même signification.• Vous pouvez utiliser un lien vers une liste d'enti tésstandard, comme www.w3.org/TR/xhtml1/#h-A2.Cela vous perm<strong>et</strong> d’utiliser des références d’enti tésmnémotechniques pour <strong>les</strong> caractères accentuéssans devoir <strong>les</strong> défi nir vous-même.• Une entité générale (comme cel<strong>les</strong> que nous avonsdécrites <strong>dans</strong> <strong>les</strong> pages précédentes) est défi niecomme une composante de la <strong>DTD</strong> <strong>et</strong> est utilisée<strong>dans</strong> un document XML. Il existe un autre typed'entité qui perm<strong>et</strong> d'ajouter du contenu à la <strong>DTD</strong>elle-même. Ces entités sont appelées entités paramètres<strong>et</strong> utilisent une syntaxe un peu différente(voir la section "Créer <strong>et</strong> utiliser des entitésparamètres", plus loin <strong>dans</strong> ce chapitre).Figure 7.7 L’entité définie à la Figure 7.5 contient un élément,du texte <strong>et</strong> une autre entité. Le principe est le même :on tape un texte court <strong>et</strong> le processeur le remplace par lecontenu qu’il désigne. Notez que tous <strong>les</strong> éléments provenantd’une entité générale externe doivent quand même être définis<strong>dans</strong> la <strong>DTD</strong> pour que le document soit valide.


96P<strong>et</strong>it manuel de prise en main de XMLCréer des entités pourdu contenu non analyséPour l’instant, nous n’avons présenté que des entitésreprésentant du texte. Cel<strong>les</strong>-ci sont également appeléesentités analysées car le processeur <strong>les</strong> lit <strong>et</strong> <strong>les</strong>analyse pendant le parcours du document XML. Lesentités non analysées, que nous allons étudier ici, nereprésentent généralement pas du texte (bien qu’el<strong>les</strong>le puissent) <strong>et</strong> sont totalement ignorées du processeur.El<strong>les</strong> peuvent donc servir à intégrer du contenunon textuel ou non XML <strong>dans</strong> un document XML.Il peut s’agir de n’importe quoi : du texte, un fichierimage ou vidéo, un document PDF, <strong>et</strong>c.Pour créer une entité représentant ce type de contenu,il faut d’abord indiquer <strong>dans</strong> une <strong>DTD</strong> comment l<strong>et</strong>raiter à l’aide d’une notation. La syntaxe d’unenotation est de la forme , où nom_n est le nom perm<strong>et</strong>tant d’identifierle contenu non analysé, instr_n est généralementune information (comme une URI) qui définit l<strong>et</strong>raitement du contenu (il n’existe pas de formatofficiel <strong>et</strong> vous devez donc consulter la documentationde votre processeur XML pour plus de détails).Pour définir une entité désignant un contenu nonanalysé, on utilise la syntaxe , où entité.uridésigne l’emplacement du fichier du contenu nonanalysé <strong>et</strong> nom_n est le nom de la notation crééeprécédemment.CONSEILS• Lors de la création de la notation, instr_notationpeut être un type MIME (qui est un standardIntern<strong>et</strong> perm<strong>et</strong>tant de décrire des types decontenus), une URI pointant vers une applicationinterne ou externe capable de traiter le contenunon analysé, ou quasiment n’importe quoi (celan’a aucune importance puisque le processeurXML ne le traite pas). Selon la spécifi cation duW3C, il n’existe pas de format standard pourc<strong>et</strong>te information <strong>et</strong> chaque application XMLpeut l’utiliser comme elle le souhaite.• Les entités non analysées sont nécessairementdes entités généra<strong>les</strong> car el<strong>les</strong> sont intégréesau corps d'un document XML.Figure 7.8 Une donnée non analysée classique : une imageJPEG, stockée <strong>dans</strong> le fichier lighthouse.jpg.dtdFigure 7.9 Le nom identifiant l’élément de notation jpgsera utilisé lors de la création de l’entité pour le contenunon analysé.dtdFigure 7.10 Le nom de l’entité, image_phare, fait référenceà un fichier externe, appelé lighthouse.jpg. On peut obtenirplus d’informations sur ce fichier en examinant l’identifiantde notation jpg.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!