<!doctype html public '-//W3C//DTD HTML 4.0 Transitional//EN' 'http://www.w3.org/TR/REC-html40-971218/loose.dtd'> <HTML lang="fr">  <HEAD>  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">  <link rel='STYLESHEET' type='text/css' href='/StyleSheets/TR/rec.css'>  <TITLE>Langage de balisage extensible (XML) 1.0</TITLE> </HEAD>  <BODY BACKGROUND='/Icons/Backgrounds/recbg.jpg'>   <table cellpadding='5' border='1' bgcolor='#f5dcb3' width='85%'>  <tr>   <td valign="top">Ce document est une traduction de la recommandation <A    HREF='http://www.w3.org/TR/1998/REC-xml-19980210'>Extensible Markup    Language (XML) 1.0</a> du <A HREF='http://www.w3.org/'>W3C</a>,    date du 10 fvrier 1998. Cette version traduite peut contenir des    erreurs absentes de l'original, dues  la traduction elle-mme. La    version originale en anglais, seule normative, se trouve  l'adresse <A    HREF='http://www.w3.org/TR/1998/REC-xml-19980210'>http://www.w3.org/TR/1998/REC-xml-19980210</a>.     <dl>     <dt>Traducteurs&nbsp;:</dt>      <dd>Patrick ANDRIES (CAFI)       <a href="mailto:pandries@cafi.org">&lt;pandries@cafi.org&gt;</a></dd>      <dd>Samira CUNY (Universit de Bristol)       <a href="mailto:glsc@bris.ac.uk">&lt;glsc@bris.ac.uk&gt;</a></dd>      <dd>Franois YERGEAU (Alis Technologies)       <a href="mailto:yergeau@alis.com">&lt;yergeau@alis.com&gt;</a></dd>    </dl>     <p><A href="http://www.w3.org/Consortium/Legal/ipr-notice.html#Copyright">Copyright</A>    &copy; 1998 <A href="http://www.w3.org">W3C</A>    (<A href="http://www.lcs.mit.edu">MIT</A>,    <A href="http://www.inria.fr/">INRIA</A>,    <A href="http://www.keio.ac.jp/">Keio</A>), tous droits rservs. Les    rgles du W3C sur <A    href="http://www.w3.org/Consortium/Legal/ipr-notice.html#Legal    Disclaimer">la responsabilit</A>, <A    href="http://www.w3.org/Consortium/Legal/ipr-notice.html#W3C    Trademarks">les marques de commerce</A>, <A    href="http://www.w3.org/Consortium/Legal/copyright-documents.html">les    droits d'auteur</A> et <A    href="http://www.w3.org/Consortium/Legal/copyright-software.html">les    licences de logiciels</A> sont applicables.</p>     <p>&nbsp;</p>   </td>  </tr> </table>  <hr>  <H3 align='right'><A HREF='http://www.w3.org/'><IMG border='0'  align='left' alt='W3C'  src='http://www.w3.org/Icons/WWW/w3c_home'></A>REC-xml-19980210</H3> <br> <H1 align='center'>Langage de balisage extensible (XML) 1.0</H1>  <h3 align='center'>Recommandation du W3C, 10 fvrier 1998 </h3>  <DL>  <DT>Cette version&nbsp;:</DT>   <dd><A HREF='http://www.w3.org/TR/1998/REC-xml-19980210'>http://www.w3.org/TR/1998/REC-xml-19980210</A>   <dd><A HREF='http://www.w3.org/TR/1998/REC-xml-19980210.xml'>http://www.w3.org/TR/1998/REC-xml-19980210.xml</A>   <dd><A HREF='http://www.w3.org/TR/1998/REC-xml-19980210.html'>http://www.w3.org/TR/1998/REC-xml-19980210.html</A>   <dd><A HREF='http://www.w3.org/TR/1998/REC-xml-19980210.pdf'>http://www.w3.org/TR/1998/REC-xml-19980210.pdf</A>   <dd><A HREF='http://www.w3.org/TR/1998/REC-xml-19980210.ps'>http://www.w3.org/TR/1998/REC-xml-19980210.ps</A>   <DT>Version la plus rcente&nbsp;:</DT>   <dd><A HREF='http://www.w3.org/TR/REC-xml'>http://www.w3.org/TR/REC-xml</A>   <DT>Version prcdente&nbsp;:</DT>   <dd><A HREF='http://www.w3.org/TR/PR-xml-971208'>http://www.w3.org/TR/PR-xml-971208</A>    <dt>Rdacteurs&nbsp;:</dt>   <DD>Tim Bray (Textuality and Netscape)     <A HREF='mailto:tbray@textuality.com'>&lt;tbray@textuality.com&gt;</A></DD>   <DD>Jean Paoli (Microsoft)     <A HREF='mailto:jeanpa@microsoft.com'>&lt;jeanpa@microsoft.com&gt;</A></DD>   <DD>C. M. Sperberg-McQueen (University of Illinois at Chicago)     <A HREF='mailto:cmsmcq@uic.edu'>&lt;cmsmcq@uic.edu&gt;</A></DD>  </dl>  <h2>Sommaire</h2>  <P>Le langage de balisage extensible (Extensible Markup Language, XML) est un sous-ensemble de SGML qui est compltement dcrit dans ce document.  Son but est de permettre au SGML gnrique d'tre transmis, reu et trait sur le Web de la mme manire que l'est HTML aujourd'hui.  XML a t conu pour tre facile  mettre en &#339;uvre et interoprable avec SGML et HTML.</p>  <h2>Statut de ce document</h2>  <p>Ce document a t examin par des membres du W3C et d'autres parties intresses et a t approuv par le Directeur comme Recommandation du W3C.  Ce document est stable et peut servir de rfrence ou tre cit comme standard dans un autre document. En promulgant cette recommandation, le W3C cherche  attirer l'attention sur la spcification et  promouvoir sa mise en &#339;uvre.  Cette action amliore la fonctionalit et l'interoprabilit du Web.</p>  <P>Ce document prcise une syntaxe cre en extrayant un sous-ensemble d'une norme internationale de traitement de texte existante et largement utilise (le langage normalis de balisage gnralis, ISO 8879:1986(F) tel qu'amend et corrig), dans le but de l'utiliser sur le Web.  C'est un produit de l'activit XML du W3C, sur laquelle on trouvera de l'information  l'adresse <a href='http://www.w3.org/XML'>http://www.w3.org/XML</A>.  Une liste des recommandations en vigueur du W3C et d'autres documents techniques se trouve  l'adresse <A HREF='http://www.w3.org/TR'>http://www.w3.org/TR</A>.</P>  <P>Ce document utilise le terme URI, dfini dans <a href='#Berners-Lee'>[Berners-Lee et al.]</A>, un travail en cours destin  mettre  jour les documents <A href='#RFC1738'>[IETF RFC1738]</A> et <A href='#RFC1808'>[IETF RFC1808]</A>.</P>  <P>La liste des erreurs connues de cette spcification est disponible  l'adresse <a HREF='http://www.w3.org/XML/xml-19980210-errata'>http://www.w3.org/XML/xml-19980210-errata</A>.</P>  <P>On est pri de signaler toute erreur dans ce document  <a HREF='mailto:xml-editor@w3.org'>xml-editor@w3.org</A>.</P>  <H1>Langage de balisage extensible (XML) 1.0</H1> <H1></H1> <h2>Table des matires</h2>    1. <a href='#sec-intro'>Introduction</a><br> &nbsp;&nbsp;&nbsp;&nbsp;1.1 <a href='#sec-origin-goals'>Origine et buts</a><br> &nbsp;&nbsp;&nbsp;&nbsp;1.2 <a href='#sec-terminology'>Terminologie</a><br> 2. <a href='#sec-documents'>Documents</a><br> &nbsp;&nbsp;&nbsp;&nbsp;2.1 <a href='#sec-well-formed'>Documents XML bien forms</a><br> &nbsp;&nbsp;&nbsp;&nbsp;2.2 <a href='#charsets'>Caractres</a><br> &nbsp;&nbsp;&nbsp;&nbsp;2.3 <a href='#sec-common-syn'>Constructions syntaxiques communes</a><br> &nbsp;&nbsp;&nbsp;&nbsp;2.4 <a href='#syntax'>Donnes textuelles et balisage</a><br> &nbsp;&nbsp;&nbsp;&nbsp;2.5 <a href='#sec-comments'>Commentaires</a><br> &nbsp;&nbsp;&nbsp;&nbsp;2.6 <a href='#sec-pi'>Instructions de traitement</a><br> &nbsp;&nbsp;&nbsp;&nbsp;2.7 <a href='#sec-cdata-sect'>Sections CDATA</a><br> &nbsp;&nbsp;&nbsp;&nbsp;2.8 <a href='#sec-prolog-dtd'>Prologue et dclaration de type de document</a><br> &nbsp;&nbsp;&nbsp;&nbsp;2.9 <a href='#sec-rmd'>Dclaration  de document autonome</a><br> &nbsp;&nbsp;&nbsp;&nbsp;2.10 <a href='#sec-white-space'>Traitement du blanc</a><br> &nbsp;&nbsp;&nbsp;&nbsp;2.11 <a href='#sec-line-ends'>Traitement des fins de ligne</a><br> &nbsp;&nbsp;&nbsp;&nbsp;2.12 <a href='#sec-lang-tag'>Identification de langue</a><br> 3. <A HREF='#sec-logical-struct'>Structures logiques</A><BR> &nbsp;&nbsp;&nbsp;&nbsp;3.1 <A HREF='#sec-starttags'>Balises ouvrantes, balises fermantes et balises d'lment vide</A><BR> &nbsp;&nbsp;&nbsp;&nbsp;3.2 <A HREF='#elemdecls'>Dclarations de type d'lment</A><BR> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.2.1 <A HREF='#sec-element-content'>Contenu lmentaire pur</A><BR> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.2.2 <A HREF='#sec-mixed-content'>Contenu mixte</A><BR> &nbsp;&nbsp;&nbsp;&nbsp;3.3 <A HREF='#attdecls'>Dclarations de liste d'attributs</A><BR> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.3.1 <A HREF='#sec-attribute-types'>Types d'attribut</A><BR> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.3.2 <A HREF='#sec-attr-defaults'>Valeurs implicites des attributs</A><BR> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.3.3 <A HREF='#AVNormalize'>Normalisation de valeur d'attribut</A><BR> &nbsp;&nbsp;&nbsp;&nbsp;3.4 <A HREF='#sec-condition-sect'>Sections conditionnelles</A><BR> 4. <a href='#sec-physical-struct'>Structures physiques</a><br> &nbsp;&nbsp;&nbsp;&nbsp;4.1 <a href='#sec-references'>Appels de caractre et d'entit</a><br> &nbsp;&nbsp;&nbsp;&nbsp;4.2 <a href='#sec-entity-decl'>Dclarations d'entits</a><br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.2.1 <a href='#sec-internal-ent'>Entits internes</a><br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.2.2 <a href='#sec-external-ent'>Entits externes</a><br> &nbsp;&nbsp;&nbsp;&nbsp;4.3 <a href='#TextEntities'>Entits analysables</a><br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.3.1 <a href='#sec-TextDecl'>La dclaration de texte</a><br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.3.2 <a href='#wf-entities'>Entits analysables bien formes</a><br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.3.3 <a href='#charencoding'>Codage des caractres dans les entits</a><br> &nbsp;&nbsp;&nbsp;&nbsp;4.4 <a href='#entproc'>Traitement des entits et des appels par un processeur XML</a><br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.4.1 <a href='#not-recognized'>Non reconnu</a><br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.4.2 <a href='#included'>Inclus</a><br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.4.3 <a href='#include-if-valid'>Inclus si validation</a><br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.4.4 <a href='#forbidden'>Interdit</a><br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.4.5 <a href='#inliteral'>Inclus dans littral</a><br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.4.6 <a href='#notify'>Signal</a><br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.4.7 <a href='#bypass'>Non interprt</a><br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.4.8 <a href='#as-PE'>Inclus comme EP</a><br> &nbsp;&nbsp;&nbsp;&nbsp;4.5 <a href='#intern-replacement'>Construction du texte de remplacement d'une entit interne</a><br> &nbsp;&nbsp;&nbsp;&nbsp;4.6 <a href='#sec-predefined-ent'>Entits prdfinies</a><br> &nbsp;&nbsp;&nbsp;&nbsp;4.7 <a href='#Notations'>Dclarations de notation</a><br> &nbsp;&nbsp;&nbsp;&nbsp;4.8 <a href='#sec-doc-entity'>L'entit document</a><br> 5. <a href='#sec-conformance'>Conformit</a><br> &nbsp;&nbsp;&nbsp;&nbsp;5.1 <a href='#proc-types'>Processeurs validateurs et non-validateurs</a><br> &nbsp;&nbsp;&nbsp;&nbsp;5.2 <a href='#safe-behavior'>Utilisation des processeurs XML</a><br> 6. <A HREF='#sec-notation'>Notation</A><br> <h3>Annexes</h3> A. <a href='#sec-bibliography'>Bibliographie</a><br> &nbsp;&nbsp;&nbsp;&nbsp;A.1 <a href='#sec-existing-stds'>Bibliographie normative</a><br> &nbsp;&nbsp;&nbsp;&nbsp;A.2 <a href='#null'>Autres ouvrages</a><br> B. <a href='#CharClasses'>Classes de caractres</a><br> C. <a href='#sec-xml-and-sgml'>XML et SGML (annexe informative)</a><br> D. <a href='#sec-entexpand'>Dveloppement des appels d'entit et de caractres (annexe informative)</a><br> E. <a href='#determinism'>Modles de contenu dterministes (annexe informative)</a><br> F. <A HREF='#sec-guessing'>Auto-dtection du codage de caractres (annexe informative)</A><br> G. <A HREF='#sec-xml-wg'>Groupe de travail XML du W3C (annexe informative)</A><BR>  <hr>   <h2><a name='sec-intro'>1. Introduction</a></h2>  <p>Le Langage de balisage extensible [en anglais Extensible Markup Language] (abrg XML) dcrit une classe d'objets de donnes appels <a href='#dt-xml-doc'>documents XML</a> et dcrit partiellement le comportement des programmes qui les traitent.  XML est un profil d'application ou une forme restreinte de SGML, le langage normalis de balisage gnralis <a href='#ISO8879'>[ISO 8879]</a>.  Par construction, les documents XML sont des documents conformes  SGML.</p>  <p>Les documents XML se composent d'units de stockage appeles <a href='#dt-entity'>entits</a>, qui contiennent des donnes analysables ou non. Les donnes analysables se composent de <a href='#dt-character'>caractres</a>, certains formant les <a href='#dt-chardata'>donnes textuelles</a>, et le reste formant le <a href='#dt-markup'>balisage</a>.  Le balisage dcrit les structures logique et de stockage du document. XML fournit un mcanisme pour imposer des contraintes  ces structures.</p>  <p><a name='dt-xml-proc'></a>Un module logiciel appel <b>processeur XML</b> est utilis pour lire les documents XML et pour accder  leur contenu et  leur structure.  <a name='dt-app'></a>On suppose qu'un processeur XML effectue son travail pour le compte d'un autre module, appel <b>l'application</b>. Cette spcification dcrit le comportement requis d'un processeur XML, c'est  dire la manire dont il doit lire des donnes XML et les informations qu'il doit fournir  l'application.</p>  <h3><a name='sec-origin-goals'>1.1 Origine et buts</a></h3>  <p>XML a t dvelopp par un groupe de travail (GT) XML [XML Working Group] (initialement connu sous le nom de comit d'examen ditorial SGML [SGML Editorial Review Board]) constitu sous les auspices du Consortium du World Wide Web (W3C) en 1996. Le GT tait prsid par Jon Bosak de Sun Microsystems avec la participation active d'un groupe d'intrt XML [XML Special Interest Group] (auparavant connu sous le nom de groupe de travail de SGML [SGML Working Group]) galement organis par le W3C. La liste des membres du groupe de travail XML est donne en annexe. Dan Connolly agissait comme contact du W3C auprs du GT.</p>  <p>Les objectifs de conception de XML sont les suivants&nbsp;: <ol>  <li>XML devrait pouvoir tre utilis sans difficult sur Internet&nbsp;;</li>  <li>XML devrait soutenir une grande varit d'applications&nbsp;;</li>  <li>XML devra tre compatible avec SGML&nbsp;;</li>  <li>Il devrait tre facile d'crire des programmes traitant les documents XML&nbsp;;</li>  <li>Le nombre d'options dans XML doit tre rduit au minimum, idalement  aucune&nbsp;;</li>  <li>Les documents XML devraient tre lisibles par l'homme et raisonnablement clairs&nbsp;;</li>  <li>La conception de XML devrait tre prpare rapidement&nbsp;;</li>  <li>La conception de XML sera formelle et concise&nbsp;;</li>  <li>Il devrait tre facile de crer des documents XML&nbsp;;</li>  <li>La concision dans le balisage de XML est de peu d'importance.</li> </ol>   <p>Cette spcification, ainsi que certaines normes associes (Unicode et l'ISO/CEI 10646 pour les caractres, le RFC 1766 Internet pour les balises d'identification de langue, l'ISO 639 pour les codes de noms de langue et l'ISO 3166 pour les codes de noms de pays) fournissent toutes les informations ncessaires pour comprendre la version 1.0 de XML et pour construire des programmes pour la traiter.</p>  <p>Cette version de la spcification de XML peut tre distribue librement,  condition que tout le texte et les notices juridiques demeurent intacts.</p>   <h3><a name='sec-terminology'>1.2 Terminologie</a></h3>   <p>La terminologie employe pour dcrire les documents XML est dfinie dans cette spcification. Les termes dfinis dans la liste suivante sont utiliss pour tablir ces dfinitions et pour dcrire les actions d'un processeur XML&nbsp;:  <dl>  <dt><b>pouvoir</b> (verbe)</dt>  <dd><a name='dt-may'></a>il n'y a pas obligation pour les documents   conformes et les processeurs XML de se comporter tel que dcrit.</dd>   <dt><b>devoir</b> (verbe)</dt>  <dd>il y a obligation pour les documents conformes et les   processeurs XML de se comporter tel que dcrit&nbsp;; tout manquement   est une erreur.</dd>   <dt><b>erreur</b></dt>  <dd><a name='dt-error'></a>une violation des rgles de cette   spcification. Les rsultats sont indtermins. Un logiciel conforme   peut dtecter et signaler une erreur et peut s'en remettre.</dd>   <dt><b>erreur fatale</b></dt>  <dd><a name='dt-fatal'></a>une erreur   qu'un <a href='#dt-xml-proc'>processeur XML</a> conforme doit   dtecter et signaler  l'application.  la suite d'une erreur fatale,   le processeur peut continuer  traiter les donnes pour rechercher   d'autres erreurs et peut signaler de telles erreurs    l'application. Afin d'aider la correction des erreurs, le processeur   peut rendre disponibles  l'application des donnes non-traites   (mlange de donnes textuelles et de balisage). Ds qu'une erreur   fatale est dtecte, toutefois, le processeur ne doit pas continuer   le traitement normal (c'est  dire qu'il ne doit pas continuer    transmettre  l'application d'une faon normale les donnes   textuelles et l'information sur la structure logique du   document).</dd>   <dt><b>au gr de l'utilisateur</b></dt>  <dd>un logiciel conforme peut ou doit (selon le verbe dans la phrase)   se comporter tel que dcrit&nbsp;; s'il le fait, il doit fournir    l'utilisateur un moyen d'activer ou de dsactiver le comportement   dcrit.</dd>    <dt><b>contrainte de validit</b></dt>  <dd>une rgle qui s'applique  tous les documents XML    <a href='#dt-valid'>valides</a>. Les violations des contraintes de   validit sont des erreurs&nbsp;; elles doivent, au gr de   l'utilisateur, tre signales par les <a   href='#dt-validating'>processeurs XML validateurs</a>.</dd>    <dt><b>contrainte de forme</b></dt>  <dd>une rgle qui s'applique  tous les documents XML <a   href='#dt-wellformed'>bien forms</a>. Les violations des   contraintes de forme sont des <a href='#dt-fatal'>erreurs   fatales</a>.</dd>   <dt><b>correspondance</b></dt>  <dd><a name='dt-match'></a>(De chanes de caractres ou de   noms&nbsp;:) Deux chanes de caractres ou deux noms correspondent   s'ils sont identiques. Les caractres possdant des   reprsentations multiples dans l'ISO/CEI 10646 (c--d les caractres   avec des formes prcompose et base+diacritiques) correspondent   seulement s'ils ont la mme reprsentation dans les deux chanes de   caractres. Au gr de l'utilisateur, les processeurs peuvent   normaliser de tels caractres  une certaine forme canonique. Aucune   transformation de casse n'est effectue.  (De chanes de caractres   et de rgles de grammaire&nbsp;:) toute chane appartenant au   langage engendr par une production grammaticale est rpute   correspondre  cette production.  (Du contenu et des modles   de contenu&nbsp;:) un lment correspond  sa dclaration quand il   se conforme  la forme dcrite dans la contrainte &nbsp;<a   href='#elementvalid'>lment valide</a>&nbsp;.</dd>   <dt><b> des fins de compatibilit</b></dt>  <dd><a name='dt-compat'></a>un dispositif de XML uniquement inclus   pour s'assurer que XML demeure compatible avec SGML.</dd>   <dt><b> des fins d'interoprabilit</b></dt>  <dd><a name='dt-interop'></a>une recommandation non-contraignante   incluse pour accrotre les chances de traitement de document XML par   des processeurs SGML antrieurs  l'annexe &nbsp;WebSGML   Adaptations&nbsp; de l'ISO 8879.</dd>  </dl>    <h2><a name='sec-documents'>2. Documents</a></h2>   <p><a name='dt-xml-doc'></a>Un objet de donnes est un <b>document XML</b> s'il est <a href='#dt-wellformed'>bien form</a>, tel que prcis dans cette spcification. De plus, un document XML bien form peut tre <a href='#dt-valid'>valide</a> s'il obit  certaines autres contraintes.</p>   <p>Chaque document XML a une structure logique et une structure physique. Physiquement, le document se compose d'units appeles <a href='#dt-entity'>entits</a>.  Une entit peut <a href='#dt-entref'>appeler</a> d'autres entits pour causer leur inclusion dans le document. Un document commence  la &nbsp;racine&nbsp; ou <a href='#dt-docent'>entit document</a>. Logiquement, le document se compose de dclarations, d'lments, de commentaires, d'appels de caractre et d'instructions de traitement, qui sont indiqus dans le document par du balisage explicite. Les structures logiques et physiques doivent s'imbriquer correctement, tel que dcrit dans &nbsp;<a href='#wf-entities'>4.3.2&nbsp;Entits analysables bien formes</a>&nbsp;.</p>  <h3><a name='sec-well-formed'>2.1 Documents XML bien forms</a></h3>   <p><a name='dt-wellformed'></a>Un objet textuel est un document XML bien form si&nbsp;:</p>  <ol>  <li>pris dans son ensemble, il  correspond  la production tiquete   <code><a href='#NT-document'>document</a></code>&nbsp;;</li>  <li>il obit  toutes les contraintes de forme donnes dans cette   spcification&nbsp;;</li>  <li>chacune des <a href='#dt-parsedent'>entits analysables gnrales</a>   qui est appele directement ou indirectement dans le document est <a   href='#wf-entities'>bien forme</a>.</li> </ol>  <p> </p> <table cellpadding='5' border='1' bgcolor='#f5dcb3' width='100%'>  <tr align='left'>   <td><strong>Document</strong></td>  </tr>  <tr>   <td>    <table border='0' bgcolor='#f5dcb3'>     <tr valign='top'>      <td align='right'><a name='NT-document'></a>[1]&nbsp;</td>      <td align='right'><font><code>document</code></font></td>      <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code><a href='#NT-prolog'>prologue</a>       <a href='#NT-element'>lment</a>       <a href='#NT-Misc'>Divers</a>*</code></font></td>     </tr>    </table>   </td>  </tr> </table> <p> </p>  <p>La correspondance  la production <code><a href='#NT-document'>document</a></code> implique que&nbsp;:</p>  <ol>  <li>le document contient un ou plusieurs <a   href='#dt-element'>lments</a>&nbsp;;</li> <li><a   name='dt-root'></a>il y a un seul lment, appel la <b>racine</b>,   ou l'lment document, dont aucune partie n'apparat dans le <a   href='#dt-content'>contenu</a> d'un autre lment.  Pour tous les   autres lments, si la <a href='#dt-stag'>balise de dbut</a> est   dans le contenu d'un autre lment, la <a href='#dt-etag'>balise de   fin</a> est dans le contenu du mme lment. Autrement dit, les   lments, dlimits par des balises de dpart et de fin,   s'imbriquent correctement les uns dans les autres.</li> </ol>   <p><a name='dt-parentchild'></a>En consquence, pour chaque lment <code>F</code> (autre que la racine) dans le document, il y a un autre lment <code>P</code> dans le document tel que <code>F</code> est dans le contenu de <code>P</code>, mais n'est dans le contenu d'aucun autre lment qui est dans le contenu de <code>P</code>. <code>P</code> est connu comme <b>parent</b> de <code>F</code>, et <code>F</code> comme <b>fils</b> de <code>P</code>.</p>    <h3><a name='charsets'>2.2 Caractres</a></h3>   <p><a name='dt-text'></a>Une entit analysable contient du <b>texte</b>, une suite de <a href='#dt-character'>caractres</a> qui peuvent reprsenter du balisage ou des donnes textuelles.  <a name='dt-character'></a>Un <b>caractre</b> est une unit de texte tel que prcis par l'ISO/CEI 10646 <a href='#ISO10646'>[ISO/CEI 10646]</a>.  Les caractres admissibles sont la tabulation, le retour de chariot, le retour  la ligne, et les caractres d'Unicode et de l'ISO/CEI 10646 permis par la production <a href='#NT-Char'>[2]</a> ci-dessous.  L'utilisation des &nbsp;caractres de compatibilit&nbsp;, tel que dfinis dans la section 6.8 de <a href='#Unicode'>[Unicode]</a>, est dconseille.</p>  <table cellpadding='5' border='1' bgcolor='#f5dcb3' width='100%'>  <tr align='left'>   <td><strong>Ensemble de caractres</strong></td>  </tr>  <tr>   <td>    <table border='0' bgcolor='#f5dcb3'>     <tr valign='top'>      <td align='right'><a name='NT-Char'></a>[2]&nbsp;</td>      <td align='right'><font><code>Car</code></font></td>       <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code>#x9 |&nbsp;#xA |&nbsp;#xD       |&nbsp;[#x20-#xD7FF] |&nbsp;[#xE000-#xFFFD]        |&nbsp;[#x10000-#x10FFFF]</code></font></td>       <td align='center'><font><code> /* </code></font></td>      <td align='left'><font><code>tout caractre Unicode, sauf les       seizets d'indirection, FFFE et FFFF. */</code></font></td>     </tr>    </table>   </td>  </tr> </table> <p> </p>  <p>Le mcanisme de codage des positions de code de caractre en configurations binaires peut varier d'une entit  l'autre. Tous les processeurs XML doivent accepter les codages UTF-8 et UTF-16 de l'ISO/CEI 10646&nbsp;; les mcanismes pour signaler lequel des deux est utilis ou pour introduire d'autres codages sont discuts ci-dessous dans &nbsp;<a href='#charencoding'>4.3.3&nbsp;Codage des caractres dans les entits</a>&nbsp;.</p>  <h3><a name='sec-common-syn'>2.3 Constructions syntaxiques communes</a></h3>   <p>Ce paragraphe dfinit quelques symboles souvent utiliss dans la grammaire.</p>  <p><code><a href='#NT-S'>S</a></code> (sparateurs, blanc) se compose d'un ou plusieurs des caractres espace (#x20), retour de chariot, retour  la ligne, ou tabulation.</p>  <table cellpadding='5' border='1' bgcolor='#f5dcb3' width='100%'>  <tr align='left'>   <td><strong>Sparateurs</strong></td>  </tr>  <tr>   <td>    <table border='0' bgcolor='#f5dcb3'>     <tr valign='top'>      <td align='right'><a name='NT-S'></a>[3]&nbsp;</td>      <td align='right'><font><code>S</code></font></td>      <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code>(#x20 |&nbsp;#x9 |&nbsp;#xD |&nbsp;#xA)+</code></font></td>     </tr>    </table>   </td>  </tr> </table> <p></p>  <p>Par commodit, les caractres sont classifis en lettres, chiffres ou autres caractres. Une lettre est un caractre de base alphabtique ou syllabique ou encore un caractre idographique. Des dfinitions compltes des classes de caractres sont donnes dans &nbsp;<a href='#CharClasses'>B.&nbsp;Classes de caractres</a>&nbsp;.</p>  <p><a name='dt-name'></a>Un <b>nom</b> est une unit lexicale commenant par une lettre ou par un des caractres de ponctuation d'une courte liste, suivi de lettres, de chiffres, de traits d'union, de traits de soulignement, de deux points ou de points finals, tous connus comme caractres constitutifs de nom. Les noms commenant par la chane de caractres &nbsp;<code>xml</code>&nbsp;, ou par n'importe quelle chane de caractres correspondant  <code>(('X'|'x') ('M'|'m') ('L'|'l'))</code>, sont rservs  des fins de normalisation dans cette version ou dans des versions ultrieures de la spcification.</p>  <p><b>Note&nbsp;:</b> Le caractre deux points dans les noms XML est rserv pour l'exprimentation avec les espaces de nom. On s'attend  ce que sa signification soit normalise bientt&nbsp;; les documents utilisant les deux points dans un but exprimental pourront alors ncessiter une mise  jour. (Il n'y a aucune garantie que le mcanisme d'espace de nom ventuellement adopt pour XML utilise en fait les deux points comme sparateur.) Dans la pratique, ceci signifie que les auteurs ne devraient pas utiliser les deux points dans les noms XML, sauf en tant qu'lment exprimental d'espace de nom, mais que les processeurs XML devraient accepter les deux points comme caractre constitutif de nom.</p>  <p><code>Un <a href='#NT-Nmtoken'>AtomeNml</a></code> (atome nominal) est une suite de caractres constitutifs de nom.</p>  <table cellpadding='5' border='1' bgcolor='#f5dcb3' width='100%'>  <tr align='left'>   <td><strong>Noms et atomes nominaux</strong></td>  </tr>  <tr>   <td>    <table border='0' bgcolor='#f5dcb3'>     <tr valign='top'>      <td align='right'><a name='NT-NameChar'></a>[4]&nbsp;</td>      <td align='right'><font><code>CarNom</code></font></td>      <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code><a href='#NT-Letter'>Lettre</a>       |&nbsp;<a href='#NT-Digit'>Chiffre</a>        |&nbsp;'.' |&nbsp;'-' |&nbsp;'_' |&nbsp;':'       |&nbsp;<a href='#NT-CombiningChar'>CarJonctif</a>        |&nbsp;<a href='#NT-Extender'>ModificateurLettre</a></code></font>      </td>     </tr>     <tr valign='top'>      <td align='right'><a name='NT-Name'></a>[5]&nbsp;</td>      <td align='right'><font><code>Nom</code></font></td>      <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code>(<a href='#NT-Letter'>Lettre</a> |&nbsp;'_' |&nbsp;':')       (<a href='#NT-NameChar'>CarNom</a>)*</code></font>      </td>     </tr>     <tr valign='top'>      <td align='right'><a name='NT-Names'></a>[6]&nbsp;</td>      <td align='right'><font><code>Noms</code></font></td>      <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code><a href='#NT-Name'>Nom</a>        (<a href='#NT-S'>S</a> <a href='#NT-Name'>Nom</a>)*</code></font>      </td>     </tr>     <tr valign='top'>      <td align='right'><a name='NT-Nmtoken'></a>[7]&nbsp;</td>      <td align='right'><font><code>AtomeNml</code></font></td>      <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code>(<a href='#NT-NameChar'>CarNom</a>)+</code></font></td>     </tr>     <tr valign='top'>      <td align='right'><a name='NT-Nmtokens'></a>[8]&nbsp;</td>      <td align='right'><font><code>AtomesNmx</code></font></td>      <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code><a href='#NT-Nmtoken'>AtomeNml</a>       (<a href='#NT-S'>S</a> <a href='#NT-Nmtoken'>AtomeNml</a>)*</code></font>      </td>     </tr>    </table>   </td>  </tr> </table> <p></p>  <p>Une chane dlimite, ne contenant pas les guillemets (anglais, &quot; ou ') utiliss comme dlimiteur, constitue ce que l'on appelle &nbsp;un littral&nbsp;. Des littraux sont utiliss pour prciser le contenu des entits internes (<code><a href='#NT-EntityValue'>ValeurEntit</a></code>), des valeurs des attributs (<code><a href='#NT-AttValue'>ValeurAtt</a></code>) et des identificateurs externes (<code><a href='#NT-SystemLiteral'>LittralSystme</a></code>).  Notez qu'un <code><a href='#NT-SystemLiteral'>LittralSystme</a></code> peut tre analys sans rechercher le balisage.</p>  <table cellpadding='5' border='1' bgcolor='#f5dcb3' width='100%'>  <tr align='left'>   <td><strong>Littraux</strong></td>  </tr>  <tr>   <td>    <table border='0' bgcolor='#f5dcb3'>     <tr valign='top'>      <td align='right'><a name='NT-EntityValue'></a>[9]&nbsp;</td>      <td align='right'><font><code>ValeurEntit</code></font></td>      <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code>'"' ([^%&amp;"]        |&nbsp;<a href='#NT-PEReference'>AppelEP</a>        |&nbsp;<a href='#NT-Reference'>Appel</a>)*       '"' </code></font>      </td>     </tr>     <tr valign='top'>      <td align='right'></td>      <td></td>      <td></td>      <td align='left'><font><code>|"'" ([^%&amp;']        |&nbsp;<a href='#NT-PEReference'>AppelEP</a>        |&nbsp;<a href='#NT-Reference'>Appel</a>)*        "'"</code></font>      </td>     </tr>     <tr valign='top'>      <td align='right'><a name='NT-AttValue'></a>[10]&nbsp;</td>      <td align='right'><font><code>ValeurAtt</code></font></td>      <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code>'"' ([^&lt;&amp;"]        |&nbsp;<a href='#NT-Reference'>Appel</a>)* '"' </code></font>      </td>     </tr>     <tr valign='top'>      <td align='right'></td>      <td></td>      <td></td>      <td align='left'><font><code>|"'" ([^&lt;&amp;']        |&nbsp;<a href='#NT-Reference'>Appel</a>)* "'"</code></font>      </td>     </tr>     <tr valign='top'>      <td align='right'><a name='NT-SystemLiteral'></a>[11]&nbsp;</td>      <td align='right'><font><code>LittralSystme</code></font></td>      <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code>('"' [^"]* '"') |("'" [^']* "'")</code></font></td>     </tr>     <tr valign='top'>      <td align='right'><a name='NT-PubidLiteral'></a>[12]&nbsp;</td>      <td align='right'><font><code>IdPubLittral</code></font></td>      <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code>'"' <a href='#NT-PubidChar'>CarIdPub</a>* '"'        |&nbsp;"'" (<a href='#NT-PubidChar'>CarIdPub</a> - "'")* "'"</code></font>      </td>     </tr>     <tr valign='top'>      <td align='right'><a name='NT-PubidChar'></a>[13]&nbsp;</td>      <td align='right'><font><code>CarIdPub</code></font></td>      <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code>#x20 |&nbsp;#xD |&nbsp;#xA        | [a-zA-Z0-9] | [-'()+,./:=?;!*#@$_%]</code></font>      </td>     </tr>    </table>   </td>  </tr> </table> <p></p>   <h3><a name='syntax'>2.4 Donnes textuelles et balisage</a></h3>   <p>Le <a href='#dt-text'>texte</a> se compose de  <a href='#dt-chardata'>donnes textuelles</a> et de balisage. Le  <a name='dt-markup'></a><b> balisage</b> prend la forme de  <a href='#dt-stag'>balises ouvrantes</a>, de  <a href='#dt-etag'>balises fermantes</a>, de  <a href='#dt-empty'>balises d'lments vides</a>,  <a href='#dt-entref'>d'appels d'entit</a>,  <a href='#dt-charref'>d'appels de caractre</a>, de  <a href='#dt-comment'>commentaires</a>, de dlimiteurs de  <a href='#dt-cdsection'>section CDATA</a>, de  <a href='#dt-doctype'>dclarations de type de document</a>, et  <a href='#dt-pi'>d'instructions de traitement</a>.</p>  <p><a name='dt-chardata'></a>Tout le texte qui n'est pas du balisage constitue les <b>donnes textuelles</b> du document.  Il est  noter que du texte correspondant au non-terminal <a href="#NT-S">S</a> (production [3]) est du balisage et non pas des donnes textuelles.</p>  <p>Les caractres esperlute (&amp;) et crochet gauche (&lt;) peuvent apparatre sous leur forme littrale <em>seulement</em> quand ils sont utiliss comme dlimiteurs de balisage ou dans un <a href='#dt-comment'>commentaire</a>, une <a href='#dt-pi'>instruction de traitement</a>, ou une <a href='#dt-cdsection'>section CDATA</a>. S'ils sont ncessaires ailleurs, ils doivent tre <a href='#dt-escape'>dguiss</a> en utilisant des <a href='#dt-charref'>appels de caractres numriques</a> ou en utilisant les chanes de caractres &nbsp;<code>&amp;amp;</code>&nbsp; et &nbsp;<code>&amp;lt;</code>&nbsp; respectivement. Le crochet droit (&gt;) peut tre reprsent en utilisant la chane de caractres &nbsp;<code>&amp;gt;</code>&nbsp; et doit, <a href='#dt-compat'>pour compatibilit</a>, tre dguis en utilisant &nbsp;<code>&amp;gt;</code>&nbsp; ou un appel de caractre quand il apparat dans la chane de caractres &nbsp;<code>]]&gt;</code>&nbsp; dans du contenu, quand cette chane ne marque pas la fin d'une <a href='#dt-cdsection'>section CDATA</a>.</p>  <p>Dans le contenu des lments, toute chane de caractres ne contenant pas un dlimiteur de dbut de balisage est considr donne textuelle. Dans une section CDATA, toute chane de caractres ne contenant pas le dlimiteur de fin de section CDATA, &nbsp;<code>]]&gt;</code>&nbsp;, est considr donne textuelle.</p>  <p>L'apostrophe (') peut tre reprsente par &nbsp;<code>&amp;apos;</code>&nbsp;, et le caractre guillemet anglais (") par &nbsp;<code>&amp;quot;</code>&nbsp;, afin de permettre  des valeurs d'attribut de contenir ces caractres.</p>  <table cellpadding='5' border='1' bgcolor='#f5dcb3' width='100%'>  <tr align='left'>   <td><strong>Donnes textuelles</strong></td>  </tr>  <tr>   <td>    <table border='0' bgcolor='#f5dcb3'>     <tr valign='top'>      <td align='right'><a name='NT-CharData'></a>[14]&nbsp;</td>      <td align='right'><font><code>DonnesTextuelles</code></font></td>      <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code>[^&lt;&amp;]* - ([^&lt;&amp;]* ']]&gt;' [^&lt;&amp;]*)</code></font></td>     </tr>    </table>   </td>  </tr> </table> <p></p>        <h3><a name='sec-comments'>2.5 Commentaires</a></h3>   <p><a name='dt-comment'></a>Les <b>commentaires</b> peuvent apparatre n'importe o dans un document en dehors d'autre <a href='#dt-markup'>balisage</a>&nbsp;; de plus, ils peuvent apparatre dans la dclaration de type de document aux endroits permis par la grammaire. Ils ne font pas partie des <a href='#dt-chardata'>donnes textuelles</a> du document&nbsp;; un processeur XML peut permettre  une application de rcuprer le texte des commentaires.  <a href='#dt-compat'> des fins de compatibilit</a>, la chane &nbsp;<code>--</code>&nbsp; (double trait d'union) ne doit pas apparatre  l'intrieur de commentaires.</p>  <table cellpadding='5' border='1' bgcolor='#f5dcb3' width='100%'>  <tr align='left'>   <td><strong>Commentaires</strong></td>  </tr>  <tr>   <td>    <table border='0' bgcolor='#f5dcb3'>     <tr valign='top'>      <td align='right'><a name='NT-Comment'></a>[15]&nbsp;</td>      <td align='right'><font><code>Commentaires</code></font></td>      <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code>'&lt;!--' ((<a href='#NT-Char'>Car</a> - '-')        |&nbsp;('-' (<a href='#NT-Char'>Car</a> - '-')))* '--&gt;'</code></font>      </td>     </tr>    </table>   </td>  </tr> </table> <p></p>  <p>Exemple de commentaire&nbsp;:</p>  <table cellpadding='5' border='1' bgcolor='#80ffff' width='100%'>  <tr>   <td><code><font>&lt;!--&nbsp;dclarations&nbsp;pour&nbsp;&lt;en-tte&gt;&nbsp;&amp;&nbsp;&lt;corps&gt;&nbsp;--&gt;</font></code></td>  </tr> </table>  <p>Il est  noter que la grammaire ne permet pas qu'un commentaire se termine par <code>---&gt;</code>.  L'exemple suivant est <b>mal  form</b>&nbsp;:</p>  <table cellpadding='5' border='1' bgcolor='#80ffff' width='100%'>  <tr>   <td><code><font>&lt;!--&nbsp;B+, B ou B---&gt;</font></code></td>  </tr> </table>   <h3><a name='sec-pi'>2.6 Instructions de traitement</a></h3>   <p><a name='dt-pi'></a>Les <b>instructions de traitement</b> (IT) permettent aux documents de contenir des instructions pour des applications.</p>  <table cellpadding='5' border='1' bgcolor='#f5dcb3' width='100%'>  <tr align='left'>   <td><strong>Instructions de traitement</strong></td>  </tr>  <tr>   <td>    <table border='0' bgcolor='#f5dcb3'>     <tr valign='top'>      <td align='right'><a name='NT-PI'></a>[16]&nbsp;</td>      <td align='right'><font><code>IT</code></font></td>      <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code>'&lt;?' <a href='#NT-PITarget'>CibleIT</a>        (<a href='#NT-S'>S</a> (<a href='#NT-Char'>Car</a>* -        (<a href='#NT-Char'>Car</a>* '?&gt;' <a href='#NT-Char'>Car</a>*)))?       '?&gt;'</code></font></td>     </tr>     <tr valign='top'>      <td align='right'><a name='NT-PITarget'></a>[17]&nbsp;</td>      <td align='right'><font><code>CibleIT</code></font></td>      <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code><a href='#NT-Name'>Nom</a> -        (('X' |&nbsp;'x') ('M' |&nbsp;'m') ('L' |&nbsp;'l'))</code></font>      </td>     </tr>    </table>   </td>  </tr> </table>  <p>Les IT ne font pas partie des <a href='#dt-chardata'>donnes textuelles</a> des documents mais doivent tre transmises  l'application. Une IT commence par une cible (<code><a href='#NT-PITarget'>CibleIT</a></code>) qui identifie l'application  laquelle l'instruction est destine. Les noms de cible &nbsp;<code>XML</code>&nbsp;, &nbsp;<code>xml</code>&nbsp; et ainsi de suite sont rservs  des fins de standardisation dans cette version ou des versions ultrieures de cette spcification. Le mcanisme de <a href='#dt-notation'>Notation</a> de XML peut tre utilis pour la dclaration formelle des cibles d'IT.</p>   <h3><a name='sec-cdata-sect'>2.7 Sections CDATA</a></h3>   <p><a name='dt-cdsection'></a>Les <b>sections CDATA</b> peuvent se trouver  n'importe quel endroit acceptable pour des donnes textuelles&nbsp;; elles sont employes pour dguiser des blocs de  texte contenant des caractres qui seraient autrement identifis comme balisage. Les sections CDATA commencent par la chane &nbsp;<code>&lt;![CDATA[</code>&nbsp; et se terminent par la chane &nbsp;<code>]]&gt;</code>&nbsp;.</p>  <table cellpadding='5' border='1' bgcolor='#f5dcb3' width='100%'>  <tr align='left'>   <td><strong>Sections CDATA </strong></td>  </tr>  <tr>   <td>    <table border='0' bgcolor='#f5dcb3'>     <tr valign='top'>      <td align='right'><a name='NT-CDSect'></a>[18]&nbsp;</td>      <td align='right'><font><code>SectionDT</code></font></td>      <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code><a href='#NT-CDStart'>DbutDT</a>        <a href='#NT-CData'>DonnesDT</a>        <a href='#NT-CDEnd'>FinDT</a></code></font>      </td>     </tr>     <tr valign='top'>      <td align='right'><a name='NT-CDStart'></a>[19]&nbsp;</td>      <td align='right'><font><code>DbutDT</code></font></td>      <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code>'&lt;![CDATA['</code></font></td>     </tr>     <tr valign='top'>      <td align='right'><a name='NT-CData'></a>[20]&nbsp;</td>      <td align='right'><font><code>DonnesDT</code></font></td>      <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code>(<a href='#NT-Char'>Car</a>* -        (<a href='#NT-Char'>Car</a>* ']]&gt;' <a href='#NT-Char'>Car</a>*))</code></font>      </td>     </tr>     <tr valign='top'>      <td align='right'><a name='NT-CDEnd'></a>[21]&nbsp;</td>      <td align='right'><font><code>FinDT</code></font></td>      <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code>']]&gt;'</code></font></td>     </tr>    </table>   </td>  </tr> </table>  <p>Dans une section CDATA, seule la chane de caractres <code><a href='#NT-CDEnd'>FinDT</a></code> est identifie comme balisage, de sorte que les crochets gauches et les esperlutes peuvent s'y trouver littralement&nbsp;; ils n'ont pas besoin (et ne peuvent pas) tre dguiss en utilisant &nbsp;<code>&amp;lt;</code>&nbsp; et &nbsp;<code>&amp;amp;</code>&nbsp;.  Les sections CDATA ne peuvent pas s'imbriquer.</p>  <p>Voici un exemple de section CDATA, dans lequel &nbsp;<code>&lt;accueil&gt;</code>&nbsp; et &nbsp;<code>&lt;/accueil&gt;</code>&nbsp; sont reconnus comme <a href='#dt-chardata'>donnes textuelles</a>, et non comme <a href='#dt-markup'>balisage</a>&nbsp;:</p>  <table cellpadding='5' border='1' bgcolor='#80ffff' width='100%'>  <tr>   <td><code><font>&lt;![CDATA[&lt;accueil&gt;Bonjour!&lt;/accueil&gt;]]&gt;</font></code></td>  </tr> </table> <p></p>   <h3><a name='sec-prolog-dtd'>2.8 Prologue et dclaration de type de document</a></h3>   <p><a name='dt-xmldecl'></a>Les documents XML peuvent, et devraient, commencer par une <b>dclaration XML</b> qui indique la version de XML utilise. L'exemple suivant est un document XML, <a href='#dt-wellformed'>bien form</a> mais non <a href='#dt-valid'>valide</a>&nbsp;:</p>  <table cellpadding='5' border='1' bgcolor='#80ffff' width='100%'>  <tr>   <td><code><font>&lt;?xml&nbsp;version="1.0"?&gt;<br>&lt;accueil&gt;Bonjour!&lt;/accueil&gt;<br></font></code></td>  </tr> </table>  <p>ainsi que celui-ci&nbsp;:</p>  <table cellpadding='5' border='1' bgcolor='#80ffff' width='100%'>  <tr>   <td><code><font>&lt;accueil&gt;Bonjour!&lt;/accueil&gt;<br></font></code></td>  </tr> </table> <p></p>  <p>Le numro de version &nbsp;<code>1.0</code>&nbsp; devrait tre employ pour indiquer la conformit  cette version de la spcification&nbsp;; un document utilisant la valeur &nbsp;<code>1.0</code>&nbsp; mais ne se conformant pas  cette version de la spcification est en erreur. Le Groupe de travail XML a l'intention de produire des versions ultrieures  la version &nbsp;<code>1.0</code>&nbsp;, mais cette intention ne signifie aucunement un engagement  produire de futures versions de XML ni, si d'autres versions sont produites,  utiliser un plan de numrotation particulier. Puisque de futures versions ne sont pas exclues, cette construction est un moyen de permettre l'identification automatique de la version, si celle-ci devient ncessaire. Les processeurs peuvent signaler une erreur s'ils reoivent des documents tiquets avec des versions qu'ils ne connaissent pas.</p>  <p>La fonction du balisage dans un document XML est de dcrire sa structure de stockage et sa structure logique et d'associer des paires attributs-valeurs  ses structures logiques. XML fournit un mcanisme, la <a href='#dt-doctype'>dclaration de type de document</a>, pour dfinir des contraintes sur la structure logique et pour grer l'utilisation des units de stockage prdfinies.<a name='dt-valid'></a>Un document XML est <b>valide</b> si une dclaration de type de document y est associe et si le document est conforme aux contraintes qu'elle exprime.</p>  <p>La dclaration de type de document doit apparatre avant le premier <a href='#dt-element'>lment</a> dans le document.</p>  <table cellpadding='5' border='1' bgcolor='#f5dcb3' width='100%'>  <tr align='left'>   <td><strong>Prologue</strong></td>  </tr>  <tr>   <td>    <table border='0' bgcolor='#f5dcb3'>     <tr valign='top'>      <td align='right'><a name='NT-prolog'></a>[22]&nbsp;</td>      <td align='right'><font><code>prologue</code></font></td>      <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code><a href='#NT-XMLDecl'>DclXML</a>?       <a href='#NT-Misc'>Divers</a>* (<a href='#NT-doctypedecl'>dclTypeDoc</a>        <a href='#NT-Misc'>Divers</a>*)?</code></font>      </td>     </tr>     <tr valign='top'>      <td align='right'><a name='NT-XMLDecl'></a>[23]&nbsp;</td>      <td align='right'><font><code>DclXML</code></font></td>      <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code>'&lt;?xml' <a href='#NT-VersionInfo'>InfoVersion</a>        <a href='#NT-EncodingDecl'>DclCodage</a>?        <a href='#NT-SDDecl'>DclDocAuto</a>?        <a href='#NT-S'>S</a>? '?&gt;'</code></font>      </td>     </tr>     <tr valign='top'>      <td align='right'><a name='NT-VersionInfo'></a>[24]&nbsp;</td>      <td align='right'><font><code>InfoVersion</code></font></td>      <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code><a href='#NT-S'>S</a> 'version' <a href='#NT-Eq'>gal</a>        ("'" <a href='#NT-VersionNum'>NumVersion</a> "'"        |&nbsp;'"' <a href='#NT-VersionNum'>NumVersion</a> '"')</code></font>      </td>      </tr>      <tr valign='top'>       <td align='right'><a name='NT-Eq'></a>[25]&nbsp;</td>       <td align='right'><font><code>gal</code></font></td>       <td align='center'><font><code> ::= </code></font></td>       <td align='left'><font><code><a href='#NT-S'>S</a>? '='        <a href='#NT-S'>S</a>?</code></font></td>      </tr>      <tr valign='top'>       <td align='right'><a name='NT-VersionNum'></a>[26]&nbsp;</td>       <td align='right'><font><code>NumVersion</code></font></td>       <td align='center'><font><code> ::= </code></font></td>       <td align='left'><font><code>([a-zA-Z0-9_.:] |&nbsp;'-')+</code></font></td>      </tr>      <tr valign='top'>       <td align='right'><a name='NT-Misc'></a>[27]&nbsp;</td>       <td align='right'><font><code>Divers</code></font></td>       <td align='center'><font><code> ::= </code></font></td>       <td align='left'><font><code><a href='#NT-Comment'>Commentaires</a>         |&nbsp;<a href='#NT-PI'>IT</a> |&nbsp;        <a href='#NT-S'>S</a></code></font>       </td>      </tr>     </table>    </td>  </tr> </table> <p></p>  <p><a name='dt-doctype'></a>La <b>dclaration de type de document</b> XML contient ou dsigne des <a href='#dt-markupdecl'>dclarations de balisage</a> qui fournissent une grammaire pour une classe de documents. Cette grammaire est connue comme dclaration de type de document, ou <b>DTD</b>.  La dclaration de type de document peut dsigner un sous-ensemble externe (un genre spcial <a href='#dt-extent'>d'entits externes</a>) contenant des dclarations de balisage, peut contenir des dclarations de balisage directement dans un sous-ensemble interne ou peut faire les deux. La DTD d'un document se compose des deux sous-ensembles regroups.</p>  <p><a name='dt-markupdecl'></a> Une <b>dclaration de balisage</b> est une <a href='#dt-eldecl'>dclaration de type d'lment</a>, une <a href='#dt-attdecl'>dclaration de liste d'attributs</a>, une <a href='#dt-entdecl'>dclaration d'entits</a> ou une <a href='#dt-notdecl'>dclaration de notation</a>.  Ces dclarations peuvent tre contenues entirement ou partiellement dans des <a href='#dt-PE'>entits paramtres</a>, tel que dcrit ci-dessous dans les contraintes de forme et de validit. Pour plus d'informations, voir &nbsp;<a href='#sec-physical-struct'>4.&nbsp;Structure physique</a>&nbsp;.</p>  <table cellpadding='5' border='1' bgcolor='#f5dcb3' width='100%'>  <tr align='left'>   <td><strong>Dfinition de type de document</strong></td>  </tr>  <tr>   <td>    <table border='0' bgcolor='#f5dcb3'>     <tr valign='top'>      <td align='right'><a name='NT-doctypedecl'></a>[28]&nbsp;</td>      <td align='right'><font><code>dclTypeDoc</code></font></td>      <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code>'&lt;!DOCTYPE' <a href='#NT-S'>S</a>        <a href='#NT-Name'>Nom</a> (<a href='#NT-S'>S</a>        <a href='#NT-ExternalID'>IdExterne</a>)?        <a href='#NT-S'>S</a>? ('[' (<a href='#NT-markupdecl'>dclBalisage</a>        |&nbsp;<a href='#NT-PEReference'>AppelEP</a>        |&nbsp;<a href='#NT-S'>S</a>)* ']'        <a href='#NT-S'>S</a>?)? '&gt;'</code></font>      </td>      <td align='center'><font><code> [ </code></font></td>      <td align='left'><font><code>CV&nbsp;:       <a href='#vc-roottype'>Type de l'lment racine</a> ]</code></font></td>     </tr>     <tr valign='top'>      <td></td>      <td></td>      <td></td>      <td></td>      <td align='center'><font><code> [ </code></font></td>      <td align='left'><font><code>CF&nbsp;: <a       href='#wfc-WfExtSubset'>Sous-ensemble externe bien form</a> ]</code></font></td>     </tr>     <tr valign='top'>      <td></td>      <td></td>      <td></td>      <td></td>      <td align='center'><font><code> [ </code></font></td>      <td align='left'><font><code>CF&nbsp;: <a       href='#wfc-WfParamEnt'>Entits paramtre bien formes</a> ]</code></font></td>     </tr>     <tr valign='top'>      <td align='right'><a name='NT-markupdecl'></a>[29]&nbsp;</td>      <td align='right'><font><code>dclBalisage</code></font></td>      <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code><a href='#NT-elementdecl'>dcllment</a>        |&nbsp;<a href='#NT-AttlistDecl'>DclListeAtt</a>        |&nbsp;<a href='#NT-EntityDecl'>DclEntit</a>        |&nbsp;<a href='#NT-NotationDecl'>DclNotation</a>        |&nbsp;<a href='#NT-PI'>IT</a>        |&nbsp;<a href='#NT-Comment'>Commentaires</a></code></font>      </td>      <td align='center'><font><code> [ </code></font></td>      <td align='left'><font><code>CV&nbsp;: <a       href='#vc-PEinMarkupDecl'>Imbrication stricte des dclarations        et des EP</a> ]</code></font>      </td>     </tr>     <tr valign='top'>      <td></td>      <td></td>      <td></td>      <td></td>      <td align='center'><font><code> [ </code></font></td>      <td align='left'><font><code>CF&nbsp;: <a       href='#wfc-PEinInternalSubset'>EP dans le sous-ensemble interne</a> ]</code></font></td>     </tr>    </table>   </td>  </tr> </table>  <p>Les dclarations de balisage peuvent se composer entirement ou partiellement du <a href='#dt-repltext'>texte de remplacement</a> <a href='#dt-PE'>d'entits paramtres</a>.  Les productions ultrieures dans cette spcification pour diffrents non-terminaux (<code><a href='#NT-elementdecl'>dcllment</a></code>, <code><a href='#NT-AttlistDecl'>DclListeAtt</a></code>, et ainsi de suite) dcrivent les dclarations <em>aprs</em> que toutes les entits  paramtres aient t <a href='#dt-include'>dveloppes</a>.</p>  <a name='vc-roottype'></a><p><b>Contrainte de validit&nbsp;: Type de l'lment racine</b><br> Le <code><a href='#NT-Name'>Nom</a></code> dans la dclaration de type de document doit correspondre au type d'lment de <a href='#dt-root'>l'lment racine</a>.</p>  <a name='wfc-WfExtSubset'></a><p><b>Contrainte de forme&nbsp;: Sous-ensemble externe bien form</b><br> Le sous-ensemble externe, s'il y a lieu, doit correspondre  la production [30] <a href="#NT-extSubset">sousEnsembleExt</a>.</p>  <a name='wfc-WfParamEnt'></a><p><b>Contrainte de forme&nbsp;: Entits paramtre bien formes</b><br> Une entit paramtre appele dans une <a href="#NT-doctypedecl">dclTypeDoc</a> doit correspondre soit  la production [30] <a href="#NT-extSubset">sousEnsembleExt</a> (si externe), soit  la production [31] <a href="#NT-extSubsetDecl">dclSousEnsembleExt</a> (si interne).</p>  <a name='vc-PEinMarkupDecl'></a><p><b>Contrainte de validit&nbsp;: Imbrication stricte des dclarations et des EP</b><br> Le <a href='#dt-repltext'>texte de remplacement</a> des entits paramtres doit tre correctement imbriqu dans les dclarations de balisage. Si le premier ou le dernier caractre d'une dclaration de balisage (<code><a href='#NT-markupdecl'>dclBalisage</a></code> ci-dessus) est contenu dans le texte de remplacement d'un <a href='#dt-PERef'>appel d'entit paramtre</a>, tous les deux doivent tre contenus dans le mme texte de remplacement.</p>  <a name='wfc-PEinInternalSubset'></a><p><b>Contrainte de forme&nbsp;: EP dans le sous-ensemble interne</b><br> Dans le sous-ensemble interne de la DTD, les <a href='#dt-PERef'>appels d'entit paramtre</a> peuvent se produire seulement l o les dclarations de balisage sont permises, pas  l'intrieur des dclarations de balisage. (Ceci ne s'applique pas aux appels qui se produisent dans les entits paramtres externes ou au sous-ensemble externe.)</p>  <p>Tout comme le sous-ensemble interne, le sous-ensemble externe et les entits paramtres externes mentionns dans la DTD doivent se composer d'une srie de dclarations de balisage compltes des types permis par le symbole non-terminal <code><a href='#NT-markupdecl'>dclBalisage</a></code>, parsemes d'espaces ou <a href='#dt-PERef'>d'appels d'entit paramtre</a>.  Cependant, des parties du contenu du sous-ensemble externe ou des entits paramtres externes peuvent conditionnellement tre ignores en utilisant le mcanisme de <a href='#dt-cond-section'>section conditionnelle</a>&nbsp;; ceci n'est pas permis dans le sous-ensemble interne. Le sous-ensemble externe et toute entit paramtre externe mentionne dans la DTD doivent correspondre  la production <a href='#NT-extPE'>entParExt</a>. Cf. la section <a href='#wf-entities'>4.3.2 Entits analysables bien formes</a>.</p>   <table cellpadding='5' border='1' bgcolor='#f5dcb3' width='100%'>  <tr align='left'>   <td><strong>Sous-ensemble  externe</strong></td>  </tr>  <tr>   <td>    <table border='0' bgcolor='#f5dcb3'>     <tr valign='top'>      <td align='right'><a name='NT-extSubset'></a>[30]&nbsp;</td>      <td align='right'><font><code>sousEnsembleExt</code></font></td>      <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code><a href='#NT-TextDecl'>DclTexte</a>?       <a href='#NT-extSubsetDecl'>dclSousEnsembleExt</a></code></font>      </td>     </tr>     <tr valign='top'>      <td align='right'><a name='NT-extSubsetDecl'></a>[31]&nbsp;</td>      <td align='right'><font><code>dclSousEnsembleExt</code></font></td>      <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code>( <a href='#NT-markupdecl'>dclBalisage</a>        |&nbsp;<a href='#NT-conditionalSect'>sectConditionnelle</a>        |&nbsp;<a href='#NT-PEReference'>AppelEP</a>        |&nbsp;<a href='#NT-S'>S</a> )*</code></font>      </td>     </tr>    </table>   </td>  </tr> </table> <p></p>   <p>Le sous-ensemble externe et les entits paramtres externes diffrent galement du sous-ensemble interne, les <a href='#dt-PERef'>appels d'entit paramtre</a> y tant autoriss <em> l'intrieur</em> des dclarations de balisage, et non seulement <em>entre</em> les dclarations de balisage.</p>  <p>Exemple de document XML avec une dclaration de type de document&nbsp;:</p>  <table cellpadding='5' border='1' bgcolor='#80ffff' width='100%'>  <tr>   <td><code><font>&lt;?xml&nbsp;version="1.0"?&gt;<br>    &lt;!DOCTYPE&nbsp;accueil&nbsp;SYSTEM&nbsp;"bonjour.dtd"&gt;<br>    &lt;accueil&gt;Bonjour!&lt;/accueil&gt;<br></font></code>   </td>  </tr> </table>  <p><a href='#dt-sysid'>L'identificateur de systme</a> &nbsp;<code>bonjour.dtd</code>&nbsp; donne l'URI d'une DTD pour le document.</p>  <p>Les dclarations peuvent galement tre donnes localement, comme dans l'exemple suivant&nbsp;:</p>  <table cellpadding='5' border='1' bgcolor='#80ffff' width='100%'>  <tr>   <td><code><font>&lt;?xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"&nbsp;?&gt;<br>    &lt;!DOCTYPE&nbsp;accueil&nbsp;[<br>    &nbsp;&nbsp;&lt;!ELEMENT&nbsp;accueil&nbsp;(#PCDATA)&gt;<br>    ]&gt;<br>    &lt;accueil&gt;Bonjour!&lt;/accueil&gt;<br></font></code>   </td>  </tr> </table>  <p>Si les sous-ensembles externes et internes sont utiliss, le sous-ensemble interne est considr comme se produisant avant le sous-ensemble externe. Ceci a pour effet que les dclarations d'entits et de liste d'attributs du sous-ensemble interne ont priorit sur celles du sous-ensemble externe.</p>     <h3><a name='sec-rmd'>2.9 Dclaration de document autonome</a></h3>  <p>Les dclarations de balisage peuvent affecter le contenu du document, tel qu'il est transmis d'un <a href='#dt-xml-proc'>processeur XML</a>  une application&nbsp;; des exemples sont des valeurs d'attribut implicites et des dclarations d'entit. La dclaration de document autonome, qui peut apparatre comme composante de la dclaration de XML, prcise s'il y a de telles dclarations externes  <a href='#dt-docent'>l'entit document.</a>.</p>  <table cellpadding='5' border='1' bgcolor='#f5dcb3' width='100%'>  <tr align='left'>   <td><strong>Dclaration  de document autonome</strong></td>  </tr>  <tr>   <td>    <table border='0' bgcolor='#f5dcb3'>     <tr valign='top'>      <td align='right'><a name='NT-SDDecl'></a>[32]&nbsp;</td>      <td align='right'><font><code>DclDocAuto</code></font></td>      <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code><a href='#NT-S'>S</a> 'standalone'        <a href='#NT-Eq'>gal</a> (("'" ('yes' |&nbsp;'no') "'")        |&nbsp;('"' ('yes' |&nbsp;'no') '"')) </code></font>      </td>      <td align='center'><font><code> [ </code></font></td>      <td align='left'><font><code>CV&nbsp;:        <a href='#vc-check-rmd'>dclaration de document autonome</a> ]</code></font></td>     </tr>    </table>   </td>  </tr> </table> <p></p>  <p>Dans une dclaration de document autonome, la valeur &nbsp;<code>yes</code>&nbsp; indique qu'il n'y a pas de dclarations de balisage externes  <a href='#dt-docent'>l'entit document</a> (dans le sous-ensemble externe de DTD, ou dans une entit paramtre externe appele dans le sous-ensemble interne) qui affecterait l'information transmise du processeur XML  l'application. La valeur &nbsp;<code>no</code>&nbsp; indique qu'il y a ou peut y avoir de telles dclarations de balisage externes. Notez que la dclaration de document autonome prcise seulement la prsence de <em>dclarations</em> externes&nbsp;; la prsence, dans un document, d'appels  des <em>entits</em> externes ne change pas son caractre d'autonomie, quand ces entits sont dclares dans le sous-ensemble interne.</p>  <p>S'il n'y a aucune dclaration de balisage externe, la dclaration de document autonome n'a aucune signification. S'il y a des dclarations de balisage externes mais pas de dclaration de document autonome, la valeur &nbsp;<code>no</code>&nbsp; est prsume.</p>  <p>Tout document XML non-autonome (<code>standalone="no"</code>) peut tre converti algorithmiquement en document autonome, ce qui peut tre souhaitable pour des applications diffuses en rseau.</p>  <a name='vc-check-rmd'></a><p><b>Contrainte de validit&nbsp;: dclaration de document autonome</b><br> La dclaration de document autonome doit avoir la valeur &nbsp;<code>no</code>&nbsp; si des dclarations de balisage externes contiennent les dclarations suivantes&nbsp;:</p>  <ul>  <li>d'attributs avec des valeurs <a href='#dt-default'>implicites</a>,    si les lment auxquels s'appliquent ces attributs   apparaissent dans le document sans spcification de valeur pour ces   attributs, ou </li>  <li>d'entits (autres que <code>amp</code>, <code>lt</code>,   <code>gt</code>, <code>apos</code> et <code>quot</code>), si des <a    href='#dt-entref'>appels</a>  ces entits apparaissent dans le   document, ou </li>  <li>des attributs avec des valeurs sujettes  <a   href='#AVNormalize'>normalisation</a>, o l'attribut apparat dans le   document avec une valeur qui va changer en raison de la normalisation,   ou </li>  <li>des types d'lment avec <a href='#dt-elemcontent'>contenu   lmentaire pur</a>, si du blanc apparat directement dans toute   instance de ce type.</li> </ul>   <p>Exemple de dclaration XML avec une dclaration de document autonome&nbsp;:</p>  <table cellpadding='5' border='1' bgcolor='#80ffff' width='100%'>  <tr>   <td><code><font>&lt;?xml&nbsp;version="1.0"&nbsp;standalone='yes'?&gt;</font></code></td>  </tr> </table> <p></p>   <h3><a name='sec-white-space'>2.10 Traitement du blanc</a></h3>  <p>En ditant des documents XML, il est souvent commode d'employer &nbsp;du blanc&nbsp; (des espaces, tabulations et interlignes) pour distinguer le balisage pour une plus grande lisibilit. Du tel blanc n'est pas typiquement destin  tre inclus dans la version livre du document. D'autre part, le blanc &nbsp;significatif&nbsp; qui devrait tre prserv dans la version livre est courant, par exemple en posie et en code source.</p>  <p>Un <a href='#dt-xml-proc'>processeur XML</a> doit toujours transmettre  l'application tous les caractres d'un document qui ne sont pas du balisage. Un <a href='#dt-validating'>processeur XML validateur</a> doit galement informer l'application desquels de ces caractres constituent le blanc apparaissant dans du <a href='#dt-elemcontent'>contenu lmentaire pur</a>.</p>  <p>Un <a href='#dt-attr'>attribut</a> spcial nomm <code>xml:space</code> peut tre associ  un lment pour signaler l'intention que dans cet lment, le blanc soit prserv par les applications. Dans les documents valides, cet attribut, comme tout autre, doit tre <a href='#dt-attdecl'>dclar</a> s'il est utilis. Si dclar, il doit tre donn comme <a href='#dt-enumerated'>type numr</a> dont les seules valeurs possibles sont &nbsp;<code>default</code>&nbsp; et &nbsp;<code>preserve</code>&nbsp;. Par exemple&nbsp;:</p>  <table cellpadding='5' border='1' bgcolor='#80ffff' width='100%'>  <tr>   <td><code><font>&nbsp;&nbsp;&nbsp;&nbsp;&lt;!ATTLIST&nbsp;pome&nbsp;&nbsp;&nbsp;xml:space&nbsp;(default|preserve)&nbsp;'preserve'&gt;</font></code></td>  </tr> </table> <p></p>  <p>La valeur &nbsp;<code>default</code>&nbsp; indique que les modes implicites de traitement du blanc sont acceptables pour cet lment&nbsp;; la valeur &nbsp;<code>preserve</code>&nbsp; demande que les applications prservent tout le blanc. Cette intention dclare s'applique  tous les lments  l'intrieur du contenu de l'lment porteur de la dclaration,  moins qu'elle ne soit annule par une autre apparition de l'attribut de <code>xml:space</code>.</p>  <p><a href='#dt-root'>L'lment racine</a> de n'importe quel document est considr comme n'avoir indiqu aucune intention en ce qui concerne le traitement du blanc,  moins qu'il ne fournisse une valeur pour cet attribut ou que l'attribut ne soit dclar avec une valeur implicite.</p>   <h3><a name='sec-line-ends'>2.11 Traitement des fins de ligne</a></h3>  <p>Des <a href='#dt-parsedent'>entits XML analysables</a> sont souvent enregistres dans des fichiers qui, pour la commodit d'dition, sont organiss en lignes. Ces lignes sont typiquement spares par une combinaison du caractre retour chariot (#xD) et retour  la ligne (#xA).</p>  <p>Pour simplifier la tche des <a href='#dt-app'>applications</a>, quand une entit externe analysable ou une valeur littrale d'entit d'une entit analysable interne contient soit la squence de deux caractres littraux &nbsp;#xD#xA&nbsp; soit un littral #xD, un <a href='#dt-xml-proc'>processeur XML</a> doit transmettre  l'application le seul caractre #xA.  (Ce comportement peut simplement tre produit en normalisant toutes les bris de ligne  #xA  l'entre, avant l'analyse.)</p>   <h3><a name='sec-lang-tag'>2.12 Identification de langue</a></h3>  <p>Dans le traitement de document, il est souvent utile d'identifier la langue naturelle ou formelle dans laquelle le contenu est crit. Un <a href='#dt-attr'>attribut</a> nomm <code>xml:lang</code> peut tre insr dans les documents pour indiquer la langue utilise dans le contenu et dans les valeurs d'attributs de tout lment d'un document XML.  Dans les documents valides, cet attribut, comme tout autre, doit tre <a href='#dt-attdecl'>declar</a> s'il est utilis. Les valeurs de l'attribut sont des identificateurs de langue tels que dfinis par <a href='#RFC1766'>[IETF RFC 1766]</a>, &nbsp;Balises pour l'identification des langues&nbsp;&nbsp;:</p>  <table cellpadding='5' border='1' bgcolor='#f5dcb3' width='100%'>  <tr align='left'>   <td><strong>Identification de Langue</strong></td>  </tr>  <tr>   <td>    <table border='0' bgcolor='#f5dcb3'>     <tr valign='top'>      <td align='right'><a name='NT-LanguageID'></a>[33]&nbsp;</td>      <td align='right'><font><code>IdLang</code></font></td>      <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code><a href='#NT-Langcode'>CodeLang</a>        ('-' <a href='#NT-Subcode'>SousCode</a>)*</code></font>      </td>     </tr>     <tr valign='top'>      <td align='right'><a name='NT-Langcode'></a>[34]&nbsp;</td>      <td align='right'><font><code>CodeLang</code></font></td>      <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code><a href='#NT-ISO639Code'>CodeISO639</a> |&nbsp;       <a href='#NT-IanaCode'>CodeIana</a> |&nbsp;       <a href='#NT-UserCode'>CodeUtil</a></code></font>      </td>     </tr>     <tr valign='top'>      <td align='right'><a name='NT-ISO639Code'></a>[35]&nbsp;</td>      <td align='right'><font><code>CodeISO639</code></font></td>      <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code>([a-z] |&nbsp;[A-Z]) ([a-z] |&nbsp;[A-Z])</code></font></td>     </tr>     <tr valign='top'>      <td align='right'><a name='NT-IanaCode'></a>[36]&nbsp;</td>      <td align='right'><font><code>CodeIana</code></font></td>      <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code>('i' |&nbsp;'I') '-' ([a-z] |&nbsp;[A-Z])+</code></font></td>     </tr>     <tr valign='top'>      <td align='right'><a name='NT-UserCode'></a>[37]&nbsp;</td>      <td align='right'><font><code>CodeUtil</code></font></td>      <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code>('x' |&nbsp;'X') '-' ([a-z] |&nbsp;[A-Z])+</code></font></td>     </tr>     <tr valign='top'>      <td align='right'><a name='NT-Subcode'></a>[38]&nbsp;</td>      <td align='right'><font><code>SousCode</code></font></td>      <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code>([a-z] |&nbsp;[A-Z])+</code></font></td>     </tr>    </table>   </td>  </tr> </table>  <p>Les paragraphes qui suivent constituent un rsum non-normatif de la dfinition des codes de langue de <a href='#RFC1766'>[IETF RFC 1766]</a>.</p>  <p>Le <code><a href='#NT-Langcode'>CodeLang</a></code> peut tre&nbsp;:</p>  <ul>  <li>un code de langue  deux lettres dfini par <a   href='#ISO639'>[ISO 639]</a>, &nbsp;Codes pour la reprsentation des   noms des langues&nbsp;&nbsp;;</li>   <li>un code de langue inscrit  l'Internet Assigned Numbers   Authority <a href='#IANA'>[IANA]</a>&nbsp;; ceux-ci commencent par   le prfixe &nbsp;<code>i-</code>&nbsp; (ou   &nbsp;<code>I-</code>&nbsp;)&nbsp;;</li>   <li>un code de langue choisi par l'utilisateur ou ayant   fait l'objet d'un accord entre toutes les parties pour une   utilisation prive&nbsp;; ceux-ci doivent commencer par le prfixe   &nbsp;<code>x-</code>&nbsp; ou &nbsp;<code>X-</code>&nbsp; afin   de s'assurer qu'ils ne sont pas en conflit avec des noms normaliss   ultrieurement ou inscrits  l'IANA.</li> </ul>  <p>Il peut y avoir n'importe quel nombre de segments <code><a href='#NT-Subcode'>SousCode</a></code>&nbsp;; le premier tel sous-code, s'il existe et est form de deux lettres, doit tre un code de pays de <a href='#ISO3166'>[ISO 3166]</a>, &nbsp;Codes pour la reprsentation des noms des pays.&nbsp; Si le premier sous-code se compose de plus de deux lettres, ce doit tre un code inscrit  l'IANA pour la langue en question,  moins que le <code><a href='#NT-Langcode'>CodeLang</a></code> ne commence par le prfixe &nbsp;<code>x-</code>&nbsp; ou &nbsp;<code>X-</code>&nbsp;.</p>  <p>Il est usuel de donner le code de langue en minuscules, et le code de pays (s'il y a lieu) en majuscules. Notez que ces valeurs,  la diffrence d'autres noms dans les documents XML, ne sont pas sensibles  la casse.</p>  <p>Exemples&nbsp;:</p>  <table cellpadding='5' border='1' bgcolor='#80ffff' width='100%'>  <tr>   <td><code><font>&lt;p&nbsp;xml:lang="fr"&gt;Cachez&nbsp;ce&nbsp;sein&nbsp;que&nbsp;je&nbsp;ne&nbsp;saurais&nbsp;voir.&lt;/p&gt;<br>    &lt;p&nbsp;xml:lang="fr-FR"&gt;Ce&nbsp;programme&nbsp;a&nbsp;une&nbsp;bogue.&lt;/p&gt;<br>    &lt;p&nbsp;xml:lang="fr-CA"&gt;Ce&nbsp;programme&nbsp;a&nbsp;un&nbsp;bogue.&lt;/p&gt;<br>    &lt;sp&nbsp;qui="Faust"&nbsp;desc='leise'&nbsp;xml:lang="de"&gt;<br>    &nbsp;&nbsp;&lt;l&gt;Habe&nbsp;nun,&nbsp;ach!&nbsp;Philosophie,&lt;/l&gt;<br>    &nbsp;&nbsp;&lt;l&gt;Juristerei,&nbsp;und&nbsp;Medizin&lt;/l&gt;<br>    &nbsp;&nbsp;&lt;l&gt;und&nbsp;leider&nbsp;auch&nbsp;Theologie&lt;/l&gt;<br>    &nbsp;&nbsp;&lt;l&gt;durchaus&nbsp;studiert&nbsp;mit&nbsp;heiem&nbsp;Bemh'n.&lt;/l&gt;<br>    &nbsp;&nbsp;&lt;/sp&gt;</font></code>   </td>  </tr> </table><p></p>  <p>L'intention dclare avec <code>xml:lang</code> est considre s'appliquer  tous les attributs et au contenu de l'lment o on l'indique,  moins qu'elle ne soit annule par une apparition de <code>xml:lang</code> sur un autre lment dans ce contenu.</p>  <p>Une dclaration simple pour <code>xml:lang</code> pourrait prendre la forme</p>  <table cellpadding='5' border='1' bgcolor='#80ffff' width='100%'>  <tr>   <td><code><font>xml:lang&nbsp;&nbsp;NMTOKEN&nbsp;&nbsp;#IMPLIED</font></code></td>  </tr> </table>  <p>mais des valeurs implicites spcifiques peuvent galement tre attribues, si appropries. Dans une collection de posie franaise pour tudiants anglais, avec des gloses et des notes en anglais, l'attribut xml:lang pourrait tre dclar de cette faon&nbsp;:</p>  <table cellpadding='5' border='1' bgcolor='#80ffff' width='100%'>  <tr>   <td><code><font>&nbsp;&nbsp;&nbsp;&nbsp;&lt;!ATTLIST&nbsp;posie&nbsp;xml:lang&nbsp;NMTOKEN&nbsp;'fr'&gt;<br>    &nbsp;&nbsp;&nbsp;&nbsp;&lt;!ATTLIST&nbsp;glose&nbsp;&nbsp;xml:lang&nbsp;NMTOKEN&nbsp;'en'&gt;<br>    &nbsp;&nbsp;&nbsp;&nbsp;&lt;!ATTLIST&nbsp;note&nbsp;&nbsp;&nbsp;xml:lang&nbsp;NMTOKEN&nbsp;'en'&gt;</font></code>   </td>  </tr> </table>  <h2><a name="sec-logical-struct">3. Structures logiques</a></h2>  <p><a name="dt-element"></a>Chaque <a href="#dt-xml-doc">document XML</a> contient un ou plusieurs <b>lments</b>, dont les limites sont marques soit par des <a href="#dt-stag">balises ouvrantes</a> et <a href="#dt-etag">fermantes</a>, soit, pour les lments <a href="#dt-empty">vides</a>, par une <a href="#dt-eetag">balise d'lment vide</a>. Chaque lment a un type, identifi par un nom, parfois appel son &nbsp;identificateur gnrique&nbsp; (IG), on peut y associer un jeu de spcifications d'attribut. Chaque spcification d'attribut comprend un <a href="#dt-attrname">nom</a> et une <a href="#dt-attrval">valeur</a>.</p>  <table border="1" cellpadding="5" width="100%" bgcolor="#F5DCB3">     <tr>         <td><strong>lment</strong> </td>     </tr>     <tr>         <td><table border="0" bgcolor="#F5DCB3">             <tr>                 <td align="right" valign="top"><a                 name="NT-element"></a>[39]&nbsp;</td>                 <td align="right" valign="top"><code>lment</code></td>                 <td align="center" valign="top"><code>::= </code></td>                 <td valign="top"><a href="#NT-EmptyElemTag"><code>BaliselmVide</code></a></td>             </tr>             <tr>                 <td align="right" valign="top">&nbsp;</td>                 <td valign="top">&nbsp;</td>                 <td valign="top">&nbsp;</td>                 <td valign="top"><code>|&nbsp;</code><a                 href="#NT-STag"><code>BaliseO</code></a><code> </code><a                 href="#NT-content"><code>contenu</code></a><code>                 </code><a href="#NT-ETag"><code>BaliseF</code></a></td>                 <td align="center" valign="top"><code>[ </code></td>                 <td valign="top"><code>CF&nbsp;: </code><a                 href="#GIMatch"><code>Correspondance de type d'lment               </code></a><code> ]</code></td>             </tr>             <tr>                 <td valign="top">&nbsp;</td>                 <td valign="top">&nbsp;</td>                 <td valign="top">&nbsp;</td>                 <td valign="top">&nbsp;</td>                 <td align="center" valign="top"><code>[ </code></td>                 <td valign="top"><code>CV&nbsp;: </code><a                 href="#elementvalid"><code>lment valide</code></a><code>                 ]</code> </td>             </tr>         </table>         </td>     </tr> </table>  <p>Cette spcification ne contraint pas la smantique, l'utilisation ou (au-del de la syntaxe) les noms des types d'lments ou d'attributs, hormis le fait que les noms qui commencent par <code>(('X'|'x')('M'|'m')('L'|'l'))</code> sont rservs  des fins de standardisation dans cette version ou d'ultrieures versions de cette spcification. <a name="GIMatch"></a></p>  <p><b>Contrainte de forme&nbsp;: Correspondance de type d'lment</b><br> Le <a href="#NT-Name"><code>Nom</code></a> dans une balise fermante d'un lment doit correspondre au type d'lment de la balise ouvrante. <a name="elementvalid"></a></p>  <p><b>Contrainte de validit&nbsp;: lment valide</b><br> Un lment est valide s'il existe une dclaration correspondant  <a href="#NT-elementdecl"><code>dcllment</code></a> o le <a href="#NT-Name"><code>nom</code></a> correspond  un type d'lment, et l'une des conditions suivantes est vraie&nbsp;: </p>  <ol>     <li>La dclaration correspond  <code>EMPTY</code>         et l'lment n'a pas de <a href="#dt-content">contenu</a>.</li>     <li>La dclaration correspond  <a href="#NT-children"><code>souslments</code></a>         et la suite de <a href="#dt-parentchild">sous-lments</a>         appartient au langage engendr par l'expression         rgulire du modle de contenu, avec du blanc         optionnel (des caractres correspondant au non-terminal <a         href="#NT-S"><code>S</code></a>) entre chaque paire de         sous-lments. Il est  noter qu'une <a         href="#dt-cdsection">section CDATA</a> ne contenant que du         blanc ne correspond pas au non-terminal <a         href="#NT-S"><code>S</code></a> et par consquent ne peut         apparatre entre deux sous-lments.</li>     <li>La dclaration correspond  <a         href="#NT-Mixed"><code>Mixte</code></a> et le contenu est         constitu de <a href="#dt-chardata">donnes textuelles</a>         et <a href="#dt-parentchild">de sous-lments</a> dont         les types correspondent aux noms dans le modle du         contenu.</li>     <li>La dclaration correspond  <code>ANY</code>         et le type de chaque <a href="#dt-parentchild">sous-lment</a>         a t dclar. </li> </ol>  <h3><a name="sec-starttags">3.1 Balises ouvrantes, balises fermantes et balises d'lment vide</a></h3>  <p><a name="dt-stag"></a>Le dbut de chaque lment XML non vide est marqu d'une <b>balise ouvrante (ou balise de dbut)</b>. </p>  <table border="1" cellpadding="5" width="100%" bgcolor="#F5DCB3">     <tr>         <td><strong>Balise ouvrante</strong></td>     </tr>     <tr>         <td><table border="0" bgcolor="#F5DCB3">             <tr>                 <td align="right" valign="top"><a name="NT-STag"></a>[40]&nbsp;</td>                 <td align="right" valign="top"><code>BaliseO</code></td>                 <td align="center" valign="top"><code>::= </code></td>                 <td valign="top"><code>'&lt;' </code><a                 href="#NT-Name"><code>Nom</code></a><code> (</code><a                 href="#NT-S"><code>S</code></a><code> </code><a                 href="#NT-Attribute"><code>Attribut</code></a><code>)*                 </code><a href="#NT-S"><code>S</code></a><code>?                 '&gt;'</code></td>                 <td align="center" valign="top"><code>[ </code></td>                 <td valign="top"><code>CF&nbsp;: </code><a                 href="#uniqattspec"><code>Spcif. unique de                 l'attribut</code></a><code> ]</code></td>             </tr>             <tr>                 <td align="right" valign="top"><a                 name="NT-Attribute"></a>[41]&nbsp;</td>                 <td align="right" valign="top"><code>Attribut</code></td>                 <td align="center" valign="top"><code>::= </code></td>                 <td valign="top"><a href="#NT-Name"><code>Nom</code></a><code>                 </code><a href="#NT-Eq"><code>gal</code></a><code>                 </code><a href="#NT-AttValue"><code>ValeurAtt</code></a></td>                 <td align="center" valign="top"><code>[ </code></td>                 <td valign="top"><code>CV&nbsp;: </code><a                 href="#ValueType"><code>Type valeur de l'attribut</code></a><code>                 ]</code></td>             </tr>             <tr>                 <td valign="top">&nbsp;</td>                 <td valign="top">&nbsp;</td>                 <td valign="top">&nbsp;</td>                 <td valign="top">&nbsp;</td>                 <td align="center" valign="top"><code>[ </code></td>                 <td valign="top"><code>CF&nbsp;: </code><a                 href="#NoExternalRefs"><code>Pas d'appel                 d'entit externe</code></a><code> ]</code></td>             </tr>             <tr>                 <td valign="top">&nbsp;</td>                 <td valign="top">&nbsp;</td>                 <td valign="top">&nbsp;</td>                 <td valign="top">&nbsp;</td>                 <td align="center" valign="top"><code>[ </code></td>                 <td valign="top"><code>CF&nbsp;: </code><a                 href="#CleanAttrVals"><code>Pas de &lt; dans les                  valeurs d'attribut</code></a><code> ]</code></td>             </tr>             <tr>                 <td valign="top">&nbsp;</td>                 <td valign="top">&nbsp;</td>                 <td valign="top">&nbsp;</td>                 <td valign="top">&nbsp;</td>                 <td align="center" valign="top"><code>[ </code></td>                 <td valign="top"><code>CV&nbsp;: </code><a                 href="#ValidLang"><code>xml:lang valide</code></a><code> ]</code></td>             </tr>         </table>         </td>     </tr> </table>  <p>Le <a href="#NT-Name"><code>Nom</code></a> des balises de dbut et de fin spcifie le <b>type</b> de l'lment. <a name="dt-attr"></a> Les couples <a href="#NT-Name"><code>Nom</code></a>-<a href="#NT-AttValue"><code>ValeurAtt</code></a> constituent les <b>spcifications d'attribut</b> de l'lment, avec pour chaque couple <a name="dt-attrname"></a>le <a href="#NT-Name"><code>Nom</code></a> dsign par le <b>nom de l'attribut</b>, et le <a name="dt-attrval"></a>contenu de <a href="#NT-AttValue"><code>ValeurAtt</code></a> (le texte compris entre les dlimiteurs &nbsp;<code>'</code>&nbsp; ou &nbsp;<code>&quot;</code>&nbsp;) dsign par la <b>valeur de l'attribut</b>. Il est  noter que l'ordre des spcifications d'attribut dans une balise ouvrante ou une balise d'lment vide n'est pas significatif. <a name="uniqattspec"></a></p>  <p><b>Contrainte de forme&nbsp;: Spcification unique de l'attribut</b><br> Aucun nom d'attribut ne peut apparatre plus d'une fois dans la mme balise de dbut ou d'lment vide. <a name="ValueType"></a></p>  <p><b>Contrainte de validit&nbsp;: Type de valeur de l'attribut</b><br> L'attribut doit avoir t dclar; la valeur doit correspondre au type dclar pour cet attribut. (Pour les types d'attribut, voir &nbsp;<a href="#attdecls">3.3&nbsp;Dclarations des listes d'attributs</a>&nbsp;.) <a name="NoExternalRefs"></a></p>  <p><b>Contrainte de forme&nbsp;: Pas d'appel d'entit externe</b><br> Les valeurs d'attribut ne peuvent contenir d'appels d'entit directs ou indirects  des entits externes. <a name="CleanAttrVals"></a></p>  <p><b>Contrainte de forme&nbsp;: Pas de </b><code><b>&lt;</b></code><b> dans les valeurs d'attribut</b><br> Le <a href="#dt-repltext">texte de remplacement</a> de toute entit appele directement ou indirectement dans une valeur d'attribut (autre que &nbsp;<code>&amp;lt;</code>&nbsp;) ne peut contenir un <code>&lt;</code>. </p>  <p><a name="ValidLang"></a><b>Contrainte de validit&nbsp;: <code>xml:lang</code> valide</b><br> Si le <a href="#NT-Name"><code>Nom</code></a> dans une spcification d'attribut est <code>xml:lang</code>, la valeur, aprs normalisation en tant que NMTOKEN, doit <a href='#dt-match'>correspondre</a>  la production <a href="#NT-LanguageID">[33]</a>.</p>  <p>Exemple de balise ouvrante: </p>  <table border="1" cellpadding="5" width="100%" bgcolor="#80FFFF">     <tr>         <td><code>&lt;termdef&nbsp;id=&quot;dt-chien&quot;&nbsp;terme=&quot;chien&quot;&gt;</code></td>     </tr> </table>  <p><a name="dt-etag"></a> La fin de chaque lment qui commence par une balise de dbut doit tre marqu d'une <b>balise fermante (ou balise de fin)</b> contenant un nom qui renvoie au type de l'lment spcifi dans la balise de dbut&nbsp;: </p>  <table border="1" cellpadding="5" width="100%" bgcolor="#F5DCB3">     <tr>         <td><strong>Balise fermante</strong></td>     </tr>     <tr>         <td><table border="0" bgcolor="#F5DCB3">             <tr>                 <td align="right" valign="top"><a name="NT-ETag"></a>[42]&nbsp;</td>                 <td align="right" valign="top"><code>BaliseF</code></td>                 <td align="center" valign="top"><code>::= </code></td>                 <td valign="top"><code>'&lt;/' </code><a                 href="#NT-Name"><code>Nom</code></a><code> </code><a                 href="#NT-S"><code>S</code></a><code>? '&gt;'</code></td>             </tr>         </table>         </td>     </tr> </table>  <p>Exemple de balise fermante&nbsp;:</p>  <table border="1" cellpadding="5" width="100%" bgcolor="#80FFFF">     <tr>         <td><code>&lt;/termdef&gt;</code></td>     </tr> </table>  <p><a name="dt-content"></a> On appelle le <a href="#dt-text">texte</a> compris entre les balises de dbut et de fin le <b>contenu</b> de l'lment&nbsp;: </p>  <table border="1" cellpadding="5" width="100%" bgcolor="#F5DCB3">     <tr>         <td><strong>Contenu des lments </strong></td>     </tr>     <tr>         <td><table border="0" bgcolor="#F5DCB3">             <tr>                 <td align="right" valign="top"><a                 name="NT-content"></a>[43]&nbsp;</td>                 <td align="right" valign="top"><code>contenu</code></td>                 <td align="center" valign="top"><code>::= </code></td>                 <td valign="top"><code>(</code><a                 href="#NT-element"><code>lment</code></a><code>                 |&nbsp;</code><a href="#NT-CharData"><code>DonnesTextuelles</code></a><code>                 |&nbsp;</code><a href="#NT-Reference"><code>Appel</code></a><code>                 |&nbsp;</code><a href="#NT-CDSect"><code>SectionDT</code></a><code>                 |&nbsp;</code><a href="#NT-PI"><code>IT</code></a><code>                 |&nbsp;</code><a href="#NT-Comment"><code>Commentaire</code></a><code>)*</code></td>             </tr>         </table>         </td>     </tr> </table>  <p><a name="dt-empty"></a>Si un lment est <b>vide</b>, il devrait tre indiqu soit par une balise ouvrante suivie immdiatement d'une balise fermante, soit par une balise d'lment vide. <a name="dt-eetag"></a>Une <b>balise d'lment vide</b> se formule d'une manire particulire&nbsp;: </p>  <table border="1" cellpadding="5" width="100%" bgcolor="#F5DCB3">     <tr>         <td><strong>Balises pour lments vides</strong></td>     </tr>     <tr>         <td><table border="0" bgcolor="#F5DCB3">             <tr>                 <td align="right" valign="top"><a                 name="NT-EmptyElemTag"></a>[44]&nbsp;</td>                 <td align="right" valign="top"><code>BaliselemVide</code></td>                 <td align="center" valign="top"><code>::= </code></td>                 <td valign="top"><code>'&lt;' </code><a                 href="#NT-Name"><code>Nom</code></a><code> (</code><a                 href="#NT-S"><code>S</code></a><code> </code><a                 href="#NT-Attribute"><code>Attribut</code></a><code>)*                 </code><a href="#NT-S"><code>S</code></a><code>?                 '/&gt;'</code></td>                 <td align="center" valign="top"><code>[ </code></td>                 <td valign="top"><code>CF&nbsp;: </code><a                 href="#uniqattspec"><code>Spcif. unique de                 l'attribut</code></a><code> ]</code></td>             </tr>         </table>         </td>     </tr> </table>  <p>Les balises d'lement vide peuvent tre utilises pour tout lment qui n'a pas de contenu, qu'il ait t dclar ou non avec le mot-cl <code>EMPTY</code>. <a href="#dt-interop"> des fins d'interoprabilit</a>, il est souhaitable d'utiliser la balise d'lment vide pour les lments qui ont t <a href="#dt-eldecl">dclars</a> <code>EMPTY</code> et de ne pas l'utiliser ailleurs.</p>  <p>Exemples d'lments vides&nbsp;: </p>  <table border="1" cellpadding="5" width="100%" bgcolor="#80FFFF">     <tr>         <td><code>&lt;IMG&nbsp;align=&quot;left&quot;<br>         &nbsp;src=&quot;http://www.w3.org/Icons/WWW/w3c_home&quot;&nbsp;/&gt;<br>         &lt;br&gt;&lt;/br&gt;<br>         &lt;br/&gt;</code></td>     </tr> </table>  <h3><a name="elemdecls">3.2 Dclarations de type d'lment</a></h3>  <p>La structure des <a href="#dt-element">lments</a> d'un <a href="#dt-xml-doc">document XML</a> peut,  des fins de <a href="#dt-valid">validation</a>, tre contrainte  l'aide de dclarations de type d'lment et de liste d'attributs. La dclaration de type d'un lment contraint le <a href="#dt-content">contenu</a> de cet lment. </p>  <p>Les dclarations de type d'un lment limitent habituellement les types d'lment qui peuvent apparatre comme <a href="#dt-parentchild">sous-lments</a> de celui-ci. Au choix de l'utilisateur, un processeur XML peut mettre un avertissement quand une dclaration mentionne un type d'lment pour lequel aucune dclaration n'a t fournie, mais ceci ne constitue pas une erreur.</p>  <p><a name="dt-eldecl"></a>Une <b>dclaration de type d'lment</b> se formule de la faon suivante&nbsp;: </p>  <table border="1" cellpadding="5" width="100%" bgcolor="#F5DCB3">     <tr>         <td><strong>Dclaration de type d'lment</strong></td>     </tr>     <tr>         <td><table border="0" bgcolor="#F5DCB3">             <tr>                 <td align="right" valign="top"><a                 name="NT-elementdecl"></a>[45]&nbsp;</td>                 <td align="right" valign="top"><code>dcllment</code></td>                 <td align="center" valign="top"><code>::= </code></td>                 <td valign="top"><code>'&lt;!ELEMENT' </code><a                 href="#NT-S"><code>S</code></a><code> </code><a                 href="#NT-Name"><code>Nom</code></a><code> </code><a                 href="#NT-S"><code>S</code></a><code> </code><a                 href="#NT-contentspec"><code>specContenu</code></a><code>                 </code><a href="#NT-S"><code>S</code></a><code>?                 '&gt;'</code></td>                 <td align="center" valign="top"><code>[ </code></td>                 <td valign="top"><code>CV&nbsp;: </code><a                 href="#EDUnique"><code>Dclaration de type                 d'lment unique</code></a><code> ]</code></td>             </tr>             <tr>                 <td align="right" valign="top"><a                 name="NT-contentspec"></a>[46]&nbsp;</td>                 <td align="right" valign="top"><code>specContenu</code></td>                 <td align="center" valign="top"><code>::= </code></td>                 <td valign="top"><code>'EMPTY' |&nbsp;'ANY'                 |&nbsp;</code><a href="#NT-Mixed"><code>Mixte</code></a><code>                 |&nbsp;</code><a href="#NT-children"><code>souslments</code></a><code>                 </code></td>             </tr>         </table>         </td>     </tr> </table>  <p>o le <a href="#NT-Name"><code>Nom</code></a> fournit le type d'lment que l'on dclare. <a name="EDUnique"></a></p>  <p><b>Contrainte de validit&nbsp;: Dclaration de type d'lment unique</b><br> Aucun type d'lment ne peut tre dclar plus d'une fois. </p>  <p>Exemples de dclarations de type d'lment&nbsp;: </p>  <table border="1" cellpadding="5" width="100%" bgcolor="#80FFFF">     <tr>         <td><code>&lt;!ELEMENT&nbsp;br&nbsp;EMPTY&gt;<br>         &lt;!ELEMENT&nbsp;p&nbsp;(#PCDATA|emph)*&nbsp;&gt;<br>         &lt;!ELEMENT&nbsp;%param.nom;&nbsp;%param.contenu;&nbsp;&gt;<br>         &lt;!ELEMENT&nbsp;contenant&nbsp;ANY&gt; </code></td>     </tr> </table>  <h4><a name="sec-element-content">3.2.1 Contenu lmentaire pur</a></h4>  <p><a name="dt-elemcontent"></a>Un <a href="#dt-stag">type</a> d'lment a un <b>contenu lmentaire pur</b> quand des lments de ce type ne peuvent contenir que des <a href="#dt-parentchild">sous-lments</a>, (pas de donnes textuelles), spars par du blanc (caractres correspondant au non-terminal <a href="#NT-S"><code>S</code></a>) facultatif. Dans ce cas, la contrainte comprend un modle de contenu, une grammaire simple rgissant les types admis pour les sous-lments et l'ordre dans lequel ceux-ci peuvent apparatre. Cette grammaire est construite  l'aide de particules de contenu (<a href="#NT-cp"><code>pc</code></a>), constitues de noms, de listes de choix de particules de contenu, ou de listes de suites de particules de contenu&nbsp;: </p>  <table border="1" cellpadding="5" width="100%" bgcolor="#F5DCB3">     <tr>         <td><strong>Modles de contenu lmentaire pur</strong></td>     </tr>     <tr>         <td><table border="0" bgcolor="#F5DCB3">             <tr>                 <td align="right" valign="top"><a                 name="NT-children"></a>[47]&nbsp;</td>                 <td align="right" valign="top"><code>souslments</code></td>                 <td align="center" valign="top"><code>::= </code></td>                 <td valign="top"><code>(</code><a                 href="#NT-choice"><code>choix</code></a><code>                 |&nbsp;</code><a href="#NT-seq"><code>sq</code></a><code>)                 ('?' |&nbsp;'*' |&nbsp;'+')?</code></td>             </tr>             <tr>                 <td align="right" valign="top"><a name="NT-cp"></a>[48]&nbsp;</td>                 <td align="right" valign="top"><code>pc</code></td>                 <td align="center" valign="top"><code>::= </code></td>                 <td valign="top"><code>(</code><a href="#NT-Name"><code>Nom</code></a><code>                 |&nbsp;</code><a href="#NT-choice"><code>choix</code></a><code>                 |&nbsp;</code><a href="#NT-seq"><code>sq</code></a><code>)                 ('?' |&nbsp;'*' |&nbsp;'+')?</code></td>             </tr>             <tr>                 <td align="right" valign="top"><a                 name="NT-choice"></a>[49]&nbsp;</td>                 <td align="right" valign="top"><code>choix</code></td>                 <td align="center" valign="top"><code>::= </code></td>                 <td valign="top"><code>'(' </code><a href="#NT-S"><code>S</code></a><code>?                 </code><a href="#NT-cp"><code>pc</code></a><code>                 ( </code><a href="#NT-S"><code>S</code></a><code>?                 '|' </code><a href="#NT-S"><code>S</code></a><code>?                 </code><a href="#NT-cp"><code>pc</code></a><code>                 )+ </code><a href="#NT-S"><code>S</code></a><code>?                 ')'</code></td>                 <td align="center" valign="top"><code>[ </code></td>                 <td valign="top"><code>CV&nbsp;: </code><a                 href="#vc-PEinGroup"><code>Imbrication stricte                 des parenthses dans EP</code></a><code> ]</code></td>             </tr>             <tr>                 <td align="right" valign="top"><a name="NT-seq"></a>[50]&nbsp;</td>                 <td align="right" valign="top"><code>sq</code></td>                 <td align="center" valign="top"><code>::= </code></td>                 <td valign="top"><code>'(' </code><a href="#NT-S"><code>S</code></a><code>?                 </code><a href="#NT-cp"><code>pc</code></a><code>                 ( </code><a href="#NT-S"><code>S</code></a><code>?                 ',' </code><a href="#NT-S"><code>S</code></a><code>?                 </code><a href="#NT-cp"><code>pc</code></a><code>                 )* </code><a href="#NT-S"><code>S</code></a><code>?                 ')'</code></td>                 <td align="center" valign="top"><code>[ </code></td>                 <td valign="top"><code>CV&nbsp;: </code><a                 href="#vc-PEinGroup"><code>Imbrication stricte                 des parenthses dans EP</code></a><code> ]</code></td>             </tr>         </table>         </td>     </tr> </table>  <p>o chaque <a href="#NT-Name"><code>Nom</code></a> est le type d'un lment qui peut apparatre comme <a href="#dt-parentchild">sous-lment</a>. Une particule de contenu dans une liste de choix peut apparatre au sein d'un <a href="#dt-elemcontent">contenu lmentaire pur</a>  l'endroit o une liste de choix apparat dans la grammaire; les particules de contenu prsentes dans une liste de suite doivent toutes apparatre dans le <a href="#dt-elemcontent">contenu lmentaire pur</a> dans l'ordre prcis dans la liste. Les caractres optionnels qui suivent un nom ou une liste dterminent si l'lment ou les particules de contenu dans la liste peuvent apparatre une fois ou plus (<code>+</code>), zro fois ou plus (<code>*</code>), ou bien au maximum une fois(<code>?</code>). L'absence d'un tel oprateur signifie que l'lment ou la particule de contenu doit apparatre exactement une fois. Leur syntaxe et leur sens sont identiques  ceux qui sont utiliss dans les productions de cette spcification.</p>  <p>Le contenu d'un lment correspond  un modle de contenu si et seulement si l'on peut tracer un chemin  travers le modle de contenu qui respecte les oprateurs de suite, de choix et de rptition et qui fait correspondre chaque lment du contenu  un type d'lment dfini dans le modle de contenu. <a href="#dt-compat"> des fins de compatibilit</a>, le fait qu'un lment dans le document puisse correspondre  plus d'une occurrence de ce type d'lment dans le modle de contenu constitue une erreur. Pour de plus amples informations, voir &nbsp;<a href="#determinism">E.&nbsp;Modles de contenu dterministes</a>&nbsp;. <a name="vc-PEinGroup"></a></p>  <p><b>Contrainte de validit&nbsp;: Imbrication stricte des parenthses dans EP</b><br> Les parenthses des <a href="#dt-repltext">textes de remplacement</a> d'une entit paramtre doivent tre strictement imbriqus.  Ceci signifie que si la parenthse ouvrante ou fermante d'une production <a href="#NT-choice"><code>choix</code></a>, <a href="#NT-seq"><code>sq</code></a> ou <a href="#NT-Mixed"><code>Mixte</code></a> se retrouve dans le texte de remplacement d'une <a href="#dt-PERef">entit paramtre</a>, ces deux parenthses doivent tre contenues dans le mme texte de remplacement. <a href="#dt-interop"> des fins d'interoprabilit</a>, si un appel d'entit paramtre apparat dans une production <a href="#NT-choice"><code>choix</code></a>, <a href="#NT-seq"><code>sq</code></a> ou <a href="#NT-Mixed"><code>Mixte</code></a>, son texte de remplacement doit contenir au moins un caractre significatif (non blanc)&nbsp;; de plus, ni le premier ni le dernier caractre significatif (non blanc) du texte de remplacement ne peuvent tre un connecteur (<code>|</code> ou <code>,</code>).</p>  <p>Exemples de modles de contenu lmentaire pur&nbsp;:</p>  <table border="1" cellpadding="5" width="100%" bgcolor="#80FFFF">     <tr>         <td><code>&lt;!ELEMENT&nbsp;stipu&nbsp;(prface,&nbsp;corps,&nbsp;postface?)&gt;<br>         &lt;!ELEMENT&nbsp;div1&nbsp;(entte,&nbsp;(p&nbsp;|&nbsp;liste&nbsp;|&nbsp;note)*,&nbsp;div2*)&gt;<br>         &lt;!ELEMENT&nbsp;corps-dictionnaire&nbsp;(%div.mlange;&nbsp;|&nbsp;%dict.mlange;)*&gt;</code></td>     </tr>     <tr>         <td>&nbsp;</td>     </tr> </table>  <h4><a name="sec-mixed-content">3.2.2 Contenu mixte</a></h4>  <p><a name="dt-mixed"></a>Un <a href="#dt-stag">type</a> d'lment a un <b>contenu mixte</b> quand des lments de ce type peuvent contenir des donnes textuelles, parsemes, le cas chant, de <a href="#dt-parentchild">sous-lments</a>. Dans ce cas, les types des sous-lments peuvent tre contraints mais pas leur ordre ni leur nombre. </p>  <table border="1" cellpadding="5" width="100%" bgcolor="#F5DCB3">     <tr>         <td><strong>Dclaration de contenu mixte </strong></td>     </tr>     <tr>         <td><table border="0" bgcolor="#F5DCB3">             <tr>                 <td align="right" valign="top"><a name="NT-Mixed"></a>[51]&nbsp;</td>                 <td align="right" valign="top"><code>Mixte</code></td>                 <td align="center" valign="top"><code>::= </code></td>                 <td valign="top"><code>'(' </code><a href="#NT-S"><code>S</code></a><code>?                 '#PCDATA' (</code><a href="#NT-S"><code>S</code></a><code>?                 '|' </code><a href="#NT-S"><code>S</code></a><code>?                 </code><a href="#NT-Name"><code>Nom</code></a><code>)*                 </code><a href="#NT-S"><code>S</code></a><code>?                 ')*' </code></td>             </tr>             <tr>                 <td align="right" valign="top">&nbsp;</td>                 <td valign="top">&nbsp;</td>                 <td valign="top">&nbsp;</td>                 <td valign="top"><code>|&nbsp;'(' </code><a                 href="#NT-S"><code>S</code></a><code>? '#PCDATA' </code><a                 href="#NT-S"><code>S</code></a><code>? ')' </code></td>                 <td align="center" valign="top"><code>[ </code></td>                 <td valign="top"><code>CV&nbsp;: </code><a                 href="#vc-PEinGroup"><code>Imbrication stricte                 des parenthses dans EP</code></a><code> ]</code></td>             </tr>             <tr>                 <td valign="top">&nbsp;</td>                 <td valign="top">&nbsp;</td>                 <td valign="top">&nbsp;</td>                 <td valign="top">&nbsp;</td>                 <td align="center" valign="top"><code>[ </code></td>                 <td valign="top"><code>CV&nbsp;: </code><a                 href="#vc-MixedChildrenUnique"><code>Type unique</code></a><code>                 ]</code></td>             </tr>         </table>         </td>     </tr> </table>  <p>o les <a href="#NT-Name"><code>Nom</code></a>s fournissent les types des lments qui peuvent apparatre comme sous-lments. L'tymologie du mot-cl PCDATA est l'anglais &nbsp;parsed character data&nbsp;, c'est  dire &nbsp;donnes textuelles analysables&nbsp;.</p>  <a name="vc-MixedChildrenUnique"></a> <p><b>Contrainte de validit&nbsp;: Type unique</b><br> Le mme nom ne peut apparatre plus d'une fois dans une seule dclaration de contenu mixte.</p>  <p>Exemples de dclarations de contenu mixte&nbsp;:</p>  <table border="1" cellpadding="5" width="100%" bgcolor="#80FFFF">     <tr>         <td><code>&lt;!ELEMENT&nbsp;p&nbsp;(#PCDATA|a|ul|b|i|em)*&gt;<br>         &lt;!ELEMENT&nbsp;p&nbsp;(#PCDATA&nbsp;|&nbsp;%police;&nbsp;|&nbsp;%proposition;&nbsp;|&nbsp;%spcial;&nbsp;|&nbsp;%formulaire;)*&nbsp;&gt;<br>         &lt;!ELEMENT&nbsp;b&nbsp;(#PCDATA)&gt; </code></td>     </tr> </table>  <h3><a name="attdecls">3.3 Dclarations de liste d'attributs</a></h3>  <p>On utilise des <a href="#dt-attr">attributs</a> pour associer des couples nom-valeur aux <a href="#dt-element">lments</a>. Les spcifications d'attribut ne peuvent apparatre qu'au sein de <a href="#dt-stag">balises ouvrantes</a> et de <a href="#dt-eetag">balises d'lment vide</a>&nbsp;; ainsi, les productions utilises pour les reconnatre apparaissent dans &nbsp;<a href="#sec-starttags">3.1&nbsp;Balises ouvrantes, balises fermantes et balises d'lment vide</a>&nbsp;. Les dclarations de liste d'attributs peuvent servir &nbsp;:</p>  <ul>     <li>dfinir un jeu d'attributs se rapportant  un type         d'lment donn;</li>     <li>tablir des contraintes de type pour ces attributs;</li>     <li>fournir des <a href="#dt-default">valeurs implicites</a>         pour des attributs.</li> </ul>  <p><a name="dt-attdecl"></a> <b>Les dclarations de liste d'attributs</b> prcisent le nom, le type de donnes et la valeur implicite (le cas chant) de chaque attribut associ  un type d'lment donn&nbsp;: </p>  <table border="1" cellpadding="5" width="100%" bgcolor="#F5DCB3">     <tr>         <td><strong>Dclaration de liste d'attributs</strong></td>     </tr>     <tr>         <td><table border="0" bgcolor="#F5DCB3">             <tr>                 <td align="right" valign="top"><a                 name="NT-AttlistDecl"></a>[52]&nbsp;</td>                 <td align="right" valign="top"><code>DclListeAtt</code></td>                 <td align="center" valign="top"><code>::= </code></td>                 <td valign="top"><code>'&lt;!ATTLIST' </code><a                 href="#NT-S"><code>S</code></a><code> </code><a                 href="#NT-Name"><code>Nom</code></a><code> </code><a                 href="#NT-AttDef"><code>DfAtt</code></a><code>*                 </code><a href="#NT-S"><code>S</code></a><code>?                 '&gt;'</code></td>             </tr>             <tr>                 <td align="right" valign="top"><a                 name="NT-AttDef"></a>[53]&nbsp;</td>                 <td align="right" valign="top"><code>DfAtt</code></td>                 <td align="center" valign="top"><code>::= </code></td>                 <td valign="top"><a href="#NT-S"><code>S</code></a><code>                 </code><a href="#NT-Name"><code>Nom</code></a><code>                 </code><a href="#NT-S"><code>S</code></a><code> </code><a                 href="#NT-AttType"><code>TypeAtt</code></a><code>                 </code><a href="#NT-S"><code>S</code></a><code> </code><a                 href="#NT-DefaultDecl"><code>DclValImpl</code></a></td>             </tr>         </table>         </td>     </tr> </table>  <p>Le <a href="#NT-Name"><code>Nom</code></a> dans la production <a href="#NT-AttlistDecl"><code>DclListeAtt</code></a> correspond au type d'un lment. Au choix de l'utilisateur, un processeur XML peut mettre un avertissement si on dclare des attributs pour un type d'lment qui lui-mme n'est pas dclar, mais ceci ne constitue pas une erreur. Le <a href="#NT-Name"><code>Nom</code></a> que l'on retrouve dans la rgle <a href="#NT-AttDef"><code>DfAtt</code></a> correspond au nom de l'attribut.</p>  <p>Quand plus d'une <a href="#NT-AttlistDecl"><code>DclListeAtt</code></a> existe pour un type d'lment donn, le contenu de toutes les dclarations fournies est fusionne. Quand plus d'une dfinition existe pour un mme attribut d'un type d'lment donn, seule la premire dclaration compte, les dclarations subsquentes sont ignores. <a href="#dt-interop"> des fins d'interoprabilit,</a> les rdacteurs de DTD pourraient dcider de fournir pas plus d'une dclaration de liste d'attributs pour un type d'lment donn, pas plus d'une dfinition d'attribut pour un nom d'attribut donn dans une dclaration de liste d'attributs et au moins une dfinition d'attribut dans chaque dclaration de liste d'attributs. De mme,  des fins d'interoprabilit, un processeur XML pourra au gr de l'utilisateur mettre un avertissement quand il existe plus d'une dclaration de liste d'attributs pour un type d'lment donn ou quand plus d'une dfinition d'attribut existe pour un attribut donn, mais ceci ne constitue pas une erreur.</p>  <h4><a name="sec-attribute-types">3.3.1 Types d'attribut</a></h4>  <p>Les types d'attribut XML&nbsp; sont de trois genres: un type chane, une srie de types atomiques et des types numrs. Le type chane peut prendre comme valeur toute chane littrale; les types atomiques subissent diffrentes contraintes lexicales et smantiques prcises ci-dessous. Les contraintes de validit indiques dans la grammaire s'appliquent aprs que la valeur d'attribut ait t normalise de la faon prcise dans la section <a href="#AVNormalize">3.3.3 Normalisation de valeur d'attribut</a>.</p>  <table border="1" cellpadding="5" width="100%" bgcolor="#F5DCB3">     <tr>         <td><strong>Types d'attribut</strong></td>     </tr>     <tr>         <td><table border="0" bgcolor="#F5DCB3">             <tr>                 <td align="right" valign="top"><a                 name="NT-AttType"></a>[54]&nbsp;</td>                 <td align="right" valign="top"><code>TypeAtt</code></td>                 <td align="center" valign="top"><code>::= </code></td>                 <td valign="top"><a href="#NT-StringType"><code>TypeChane</code></a><code>                 |&nbsp;</code><a href="#NT-TokenizedType"><code>TypeAtomique</code></a><code>                 |&nbsp;</code><a href="#NT-EnumeratedType"><code>Typenumr</code></a><code>                 </code></td>             </tr>             <tr>                 <td align="right" valign="top"><a                 name="NT-StringType"></a>[55]&nbsp;</td>                 <td align="right" valign="top"><code>TypeChane</code></td>                 <td align="center" valign="top"><code>::= </code></td>                 <td valign="top"><code>'CDATA'</code></td>             </tr>             <tr>                 <td align="right" valign="top"><a                 name="NT-TokenizedType"></a>[56]&nbsp;</td>                 <td align="right" valign="top"><code>TypeAtomique</code></td>                 <td align="center" valign="top"><code>::= </code></td>                 <td valign="top"><code>'ID'</code></td>                 <td align="center" valign="top"><code>[ </code></td>                 <td valign="top"><code>CV&nbsp;: </code><a                 href="#id"><code>ID</code></a><code> ]</code></td>             </tr>             <tr>                 <td valign="top">&nbsp;</td>                 <td valign="top">&nbsp;</td>                 <td valign="top">&nbsp;</td>                 <td valign="top">&nbsp;</td>                 <td align="center" valign="top"><code>[ </code></td>                 <td valign="top"><code>CV&nbsp;: </code><a                 href="#one-id-per-el"><code>Un seul ID par type                 d'lment</code></a><code> ]</code></td>             </tr>             <tr>                 <td valign="top">&nbsp;</td>                 <td valign="top">&nbsp;</td>                 <td valign="top">&nbsp;</td>                 <td valign="top">&nbsp;</td>                 <td align="center" valign="top"><code>[ </code></td>                 <td valign="top"><code>CV&nbsp;: </code><a                 href="#id-default"><code>Valeur implicite de l'attribut ID</code></a><code>                 ]</code></td>             </tr>             <tr>                 <td align="right" valign="top">&nbsp;</td>                 <td valign="top">&nbsp;</td>                 <td valign="top">&nbsp;</td>                 <td valign="top"><code>|&nbsp;'IDREF'</code></td>                 <td align="center" valign="top"><code>[ </code></td>                 <td valign="top"><code>CV&nbsp;: </code><a                 href="#idref"><code>IDREF</code></a><code> ]</code></td>             </tr>             <tr>                 <td align="right" valign="top">&nbsp;</td>                 <td valign="top">&nbsp;</td>                 <td valign="top">&nbsp;</td>                 <td valign="top"><code>|&nbsp;'IDREFS'</code></td>                 <td align="center" valign="top"><code>[ </code></td>                 <td valign="top"><code>CV&nbsp;: </code><a                 href="#idref"><code>IDREF</code></a><code> ]</code></td>             </tr>             <tr>                 <td align="right" valign="top">&nbsp;</td>                 <td valign="top">&nbsp;</td>                 <td valign="top">&nbsp;</td>                 <td valign="top"><code>|&nbsp;'ENTITY'</code></td>                 <td align="center" valign="top"><code>[ </code></td>                 <td valign="top"><code>CV&nbsp;: </code><a                 href="#entname"><code>Nom d'entit</code></a><code>                 ]</code></td>             </tr>             <tr>                 <td align="right" valign="top">&nbsp;</td>                 <td valign="top">&nbsp;</td>                 <td valign="top">&nbsp;</td>                 <td valign="top"><code>|&nbsp;'ENTITIES'</code></td>                 <td align="center" valign="top"><code>[ </code></td>                 <td valign="top"><code>CV&nbsp;: </code><a                 href="#entname"><code>Nom d'entit</code></a><code>                 ]</code></td>             </tr>             <tr>                 <td align="right" valign="top">&nbsp;</td>                 <td valign="top">&nbsp;</td>                 <td valign="top">&nbsp;</td>                 <td valign="top"><code>|&nbsp;'NMTOKEN'</code></td>                 <td align="center" valign="top"><code>[ </code></td>                 <td valign="top"><code>CV&nbsp;: </code><a                 href="#nmtok"><code>Atome nominal</code></a><code>                 ]</code></td>             </tr>             <tr>                 <td align="right" valign="top">&nbsp;</td>                 <td valign="top">&nbsp;</td>                 <td valign="top">&nbsp;</td>                 <td valign="top"><code>|&nbsp;'NMTOKENS'</code></td>                 <td align="center" valign="top"><code>[ </code></td>                 <td valign="top"><code>CV&nbsp;: </code><a                 href="#nmtok"><code>Atome nominal</code></a><code>                 ]</code></td>             </tr>         </table>         </td>     </tr> </table>  <p><a name="id"></a></p>  <p><b>Contrainte de validit&nbsp;: ID</b><br> Les valeurs de type <code>ID</code> doivent correspondre  la production <a href="#NT-Name"><code>Nom</code></a>. Un nom ne peut apparatre plus d'une fois dans un document XML comme la valeur de ce type, i.e. les valeurs ID doivent identifier uniquement les lments qu'elles dsignent.. <a name="one-id-per-el"></a></p>  <p><b>Contrainte de validit&nbsp;: Un seul ID par type d'lment</b><br> Aucun type d'lment ne peut possder plus d'un attribut ID. <a name="id-default"></a></p>  <p><b>Contrainte de validit&nbsp;: Valeur implicite de l'attribut ID</b><br> Un attribut ID doit avoir comme valeur implicite dclare soit <code>#IMPLIED</code> soit <code>#REQUIRED</code>. <a name="idref"></a></p>  <p><b>Contrainte de validit&nbsp;: IDREF</b><br> Les valeurs de type <code>IDREF</code> doivent correspondre  la production <a href="#NT-Name"><code>Nom</code></a>, et les valeurs de type <code>IDREFS</code> doivent correspondre  des <a href="#NT-Names"><code>Noms</code></a>&nbsp;; chaque <a href="#NT-Name"><code>Nom</code></a> doit correspondre  la valeur d'un attribut ID sur un lment quelconque du document XML, en d'autres mots les valeurs <code>IDREF</code> doivent correspondre  la valeur d'un attribut ID. <a name="entname"></a></p>  <p><b>Contrainte de validit&nbsp;: Nom d'entit</b><br> Les valeurs de type <code>ENTITY</code> doivent correspondre  la production <a href="#NT-Name"><code>Nom</code></a> , les valeurs de type <code>ENTITIES</code> doivent correspondre  des <a href="#NT-Names"><code>Noms</code></a>&nbsp;; chaque <a href="#NT-Name"><code>Nom</code></a> doit correspondre au nom d'une <a href="#dt-unparsed">entite non-analysable</a> dclare dans la <a href="#dt-doctype">DTD</a>. <a name="nmtok"></a></p>  <p><b>Contrainte de validit&nbsp;: Atome nomimal</b><br> Les valeurs de type <code>NMTOKEN</code> doivent correspondre  la production <a href="#NT-Nmtoken"><code>AtomeNml</code></a>&nbsp;; les valeurs de type <code>NMTOKENS</code> doivent correspondre  des <a href="#NT-Nmtokens">AtomeNmx</a>. </p>  <p><a name="dt-enumerated"></a><b>Les attributs numrs</b> peuvent prendre une valeur parmi une liste de valeurs fournie dans la dclaration. Il existe deux sortes de types numrs&nbsp;: </p>  <table border="1" cellpadding="5" width="100%" bgcolor="#F5DCB3">     <tr>         <td><strong>Types d'attributs numrs</strong></td>     </tr>     <tr>         <td><table border="0" bgcolor="#F5DCB3">             <tr>                 <td align="right" valign="top"><a                 name="NT-EnumeratedType"></a>[57]&nbsp;</td>                 <td align="right" valign="top"><code>Typenumr</code></td>                 <td valign="top" align="center"><code>::= </code></td>                 <td valign="top"><a href="#NT-NotationType"><code>TypeNotation</code></a><code>                 |&nbsp;</code><a href="#NT-Enumeration"><code>numration</code></a><code>                 </code></td>             </tr>             <tr>                 <td align="right" valign="top"><a                 name="NT-NotationType"></a>[58]&nbsp;</td>                 <td align="right" valign="top"><code>TypeNotation</code></td>                 <td align="center" valign="top"><code>::= </code></td>                 <td valign="top"><code>'NOTATION' </code><a                 href="#NT-S"><code>S</code></a><code> '(' </code><a                 href="#NT-S"><code>S</code></a><code>? </code><a                 href="#NT-Name"><code>Nom</code></a><code> (</code><a                 href="#NT-S"><code>S</code></a><code>? '|' </code><a                 href="#NT-S"><code>S</code></a><code>? </code><a                 href="#NT-Name"><code>Nom</code></a><code>)* </code><a                 href="#NT-S"><code>S</code></a><code>? ')' </code></td>                 <td align="center" valign="top"><code>[ </code></td>                 <td valign="top"><code>CV&nbsp;: </code><a                 href="#notatn"><code>Attributs de notation</code></a><code>                 ]</code></td>             </tr>             <tr>                 <td valign="top">&nbsp;</td>                 <td valign="top">&nbsp;</td>                 <td valign="top">&nbsp;</td>                 <td valign="top">&nbsp;</td>                 <td align="center" valign="top"><code>[ </code></td>                 <td valign="top"><code>CV&nbsp;: </code><a                 href="#onenot"><code>Une seule notation par type                 d'lment</code></a><code>                 ]</code></td>             </tr>             <tr>                 <td align="right" valign="top"><a                 name="NT-Enumeration"></a>[59]&nbsp;</td>                 <td align="right" valign="top"><code>numration</code></td>                 <td align="center" valign="top"><code>::= </code></td>                 <td valign="top"><code>'(' </code><a href="#NT-S"><code>S</code></a><code>?                 </code><a href="#NT-Nmtoken"><code>AtomeNml</code></a><code>                 (</code><a href="#NT-S"><code>S</code></a><code>?                 '|' </code><a href="#NT-S"><code>S</code></a><code>?                 </code><a href="#NT-Nmtoken"><code>AtomeNml</code></a><code>)*                 </code><a href="#NT-S"><code>S</code></a><code>?                 ')'</code></td>                 <td align="center" valign="top"><code>[ </code></td>                 <td valign="top"><code>CV&nbsp;: </code><a                 href="#enum"><code>numration</code></a><code>                 ]</code></td>             </tr>         </table>         </td>     </tr> </table>  <p>Un attribut <code>NOTATION</code> identifie une <a href="#dt-notation">notation</a>, dclare dans la DTD conjointement avec ses identificateurs systmes et publics, que l'on utilisera pour interprter l'lment auquel l'attribut est joint.</p>  <a name="notatn"></a> <p><b>Contrainte de validit&nbsp;: Attributs de notation</b><br> Les valeurs de ce type doivent correspondre  un des noms de <a href="#Notations">notation</a> inclus dans la dclaration&nbsp;; tous les noms de notation dans la dclaration doivent tre dclars.</p>  <a name="onenot"></a> <p><b>Contrainte de validit&nbsp;: Une seule notation par type d'lment</b><br> Nul lment ne peut avoir plus d'un attribut de type NOTATION.</p>  <a name="enum"></a> <p><b>Contrainte de validit&nbsp;: numration</b><br> Les valeurs de ce type doivent correspondre  un des atomes <a href="#NT-Nmtoken"><code>AtomeNml</code></a> dans la dclaration. </p>  <p><a href="#dt-interop"> des fins d'interoprabilit,</a> le mme <a href="#NT-Nmtoken"><code>AtomeNml</code></a> ne devrait pas apparatre plus d'une fois dans les types d'attribut numr d'un mme type d'lment. </p>  <h4><a name="sec-attr-defaults">3.3.2 Valeurs implicites des attributs</a></h4>  <p>Une <a href="#dt-attdecl">dclaration d'attribut</a> prcise si la prsence de l'attribut est exige et, si elle ne l'est pas, prcise le comportement du processeur XML quand l'attribut dclar est absent dans un document.</p>  <table border="1" cellpadding="5" width="100%" bgcolor="#F5DCB3">     <tr>         <td><strong>Valeurs implicites des attributs</strong></td>     </tr>     <tr>         <td><table border="0" bgcolor="#F5DCB3">             <tr>                 <td align="right" valign="top"><a                 name="NT-DefaultDecl"></a>[60]&nbsp;</td>                 <td align="right" valign="top"><code>DclValImpl</code></td>                 <td align="center" valign="top"><code>::= </code></td>                 <td valign="top"><code>'#REQUIRED'                 |&nbsp;'#IMPLIED' </code></td>             </tr>             <tr>                 <td align="right" valign="top">&nbsp;</td>                 <td valign="top">&nbsp;</td>                 <td valign="top">&nbsp;</td>                 <td valign="top"><code>|&nbsp;(('#FIXED' S)? </code><a                 href="#NT-AttValue"><code>ValeurAtt</code></a><code>)</code></td>                 <td align="center" valign="top"><code>[ </code></td>                 <td valign="top"><code>CV&nbsp;: </code><a                 href="#RequiredAttr"><code>Attribut obligatoire</code></a><code>                 ]</code></td>             </tr>             <tr>                 <td valign="top">&nbsp;</td>                 <td valign="top">&nbsp;</td>                 <td valign="top">&nbsp;</td>                 <td valign="top">&nbsp;</td>                 <td align="center" valign="top"><code>[ </code></td>                 <td valign="top"><code>CV&nbsp;: </code><a                 href="#defattrvalid"><code>Valeur implicite de                 l'attribut permise</code></a><code> ]</code></td>             </tr>             <tr>                 <td valign="top">&nbsp;</td>                 <td valign="top">&nbsp;</td>                 <td valign="top">&nbsp;</td>                 <td valign="top">&nbsp;</td>                 <td align="center" valign="top"><code>[ </code></td>                 <td valign="top"><code>CF&nbsp;: </code><a                 href="#CleanAttrVals"><code>Pas de &lt; dans                 valeurs d'attribut</code></a><code> ]</code></td>             </tr>             <tr>                 <td valign="top">&nbsp;</td>                 <td valign="top">&nbsp;</td>                 <td valign="top">&nbsp;</td>                 <td valign="top">&nbsp;</td>                 <td align="center" valign="top"><code>[ </code></td>                 <td valign="top"><code>CV&nbsp;: </code><a                 href="#FixedAttr"><code>Valeur implicite de                 l'attribut fixe</code></a><code> ]</code></td>             </tr>         </table>         </td>     </tr> </table>  <p>Dans une dclaration d'attribut, <code>#REQUIRED</code> signifie que l'attribut doit toujours tre fourni, <code>#IMPLIED</code> qu'aucune valeur implicite n'est fournie. <a name="dt-default"></a>Si la dclaration n'est ni <code>#REQUIRED</code> ni <code>#IMPLIED</code> alors la valeur de <a href="#NT-AttValue"><code>ValeurAtt</code></a> prcise la valeur <b>implicite</b> dclare; le mot-cl <code>#FIXED</code> indique que l'attribut doit toujours avoir la valeur implicite. Si une valeur implicite est dclare, le processeur XML doit se comporter comme  si l'attribut tait prsent et gal  la valeur implicite dclare lorsqu'il s'aperoit de l'absence d'un attribut. <a name="RequiredAttr"></a></p>  <p><b>Contrainte de validit&nbsp;: Attribut obligatoire</b><br> Si la dclaration implicite est le mot-cl <code>#REQUIRED</code> il faut alors prciser l'attribut pour tous les lments du type dans la dclaration de la liste d'attributs.</p>  <p><a name="defattrvalid"></a><b>Contrainte de validit&nbsp;: Valeur implicite de l'attribut permise</b><br> La valeur implicite dclare doit satisfaire aux contraintes lexicales du type d'attribut dclar. <a name="FixedAttr"></a></p>  <p><b>Contrainte de validit&nbsp;: Valeur implicite de l'attribut fixe</b><br> Si un attribut a une valeur implicite dclare avec le  mot-cl <code>#FIXED</code>, les instances de cet attribut doivent correspondre  la valeur implicite.</p>  <p>Exemples de dclarations de liste d'attributs&nbsp;: </p>  <table border="1" cellpadding="5" width="100%" bgcolor="#80FFFF">     <tr>         <td><code>&lt;!ATTLIST&nbsp;dfterme<br>         &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ident&nbsp;&nbsp;&nbsp;ID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#REQUIRED<br>         &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nom&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CDATA&nbsp;&nbsp;&nbsp;#IMPLIED&gt;<br>         &lt;!ATTLIST&nbsp;liste<br>         &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type&nbsp;&nbsp;&nbsp;&nbsp;(puces|ordonne|glossaire)&nbsp;&nbsp;&quot;ordonne&quot;&gt;<br>         &lt;!ATTLIST&nbsp;formulaire<br>         &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mthode&nbsp;CDATA&nbsp;&nbsp;&nbsp;#FIXED&nbsp;&quot;ENVOI&quot;&gt;         </code></td>     </tr> </table>  <h4><a name="AVNormalize">3.3.3 Normalisation de valeur d'attribut</a></h4>  <p>Avant que la valeur d'un attribut ne soit passe  l'application ou que l'on vrifie sa validit, mais aprs normalisation des fins de ligne selon la section <a href='#sec-line-ends'>2.11 Traitement des fins de ligne</a>, le processeur XML doit normaliser cette valeur de la faon suivante&nbsp;:</p>  <ul>  <li>on commence avec une chane vide comme valeur normalise&nbsp;;</li>  <li>pour chaque caractre, appel d'entit ou appel de caractre de la   valeur d'attribut non-normalise, du dbut  la fin, agir comme   suit&nbsp;:   <ul>     <li>on traite un appel de caractre en ajoutant le         caractre appel  la fin de la valeur         normalise&nbsp;;</li>     <li>on traite un appel d'entit en traitant rcursivement le         texte de remplacement de l'entit&nbsp;;</li>     <li>on traite une suite &nbsp;#xD#xA&nbsp; faisant partie d'une entit         analysable externe ou de la valeur littrale d'entit         d'une entit analysable interne en ajoutant une espace (#x20)          la fin de la valeur normalise&nbsp;;     <li>on traite un sparateur (#x20, #xD, #xA, #x9) en         ajoutant une espace (#x20)  la fin de la valeur         normalise&nbsp;;</li>     <li>on traite les autres caractres en les ajoutant  la fin de         la valeur normalise.</li>   </ul>  </li> </ul>  <p>Si la valeur dclare n'est pas CDATA alors le processeur XML devra poursuivre le traitement de la valeur normalise de l'attribut en se dfaisant des espaces (#x20) de tte et de queue et en replaant les suites de espaces (#x20) par un seul caractre espace (#x20).</p>  <p>Tous les attributs pour lesquels on a lu aucune dclaration devrait tre considr par un processeur non-validateur comme si on les avait dclars au moyen de <code>CDATA</code>.</p>   <h3><a name="sec-condition-sect">3.4 Sections conditionnelles</a></h3>  <p><a name="dt-cond-section"></a> <b>Les sections conditionnelles </b>sont des portions du <a href="#dt-doctype">sous-ensemble externe de la dclaration de type de document</a> qui, selon la valeur d'un mot-cl, sont incluses dans la structure logique de la DTD ou excluses de celles-ci.</p>  <table border="1" cellpadding="5" width="100%" bgcolor="#F5DCB3">     <tr>         <td><strong>Section conditionnelle</strong></td>     </tr>     <tr>         <td><table border="0" bgcolor="#F5DCB3">             <tr>                 <td align="right" valign="top"><a                 name="NT-conditionalSect"></a> [61]&nbsp;</td>                 <td align="right" valign="top"><code>SectConditionnelle</code></td>                 <td align="center" valign="top"><code>::= </code></td>                 <td valign="top"><a href="#NT-includeSect"><code>sectInclude</code></a><code>                 |&nbsp;</code><a href="#NT-ignoreSect"><code>sectIgnore</code></a><code>                 </code></td>             </tr>             <tr>                 <td align="right" valign="top"><a                 name="NT-includeSect"></a>[62]&nbsp;</td>                 <td align="right" valign="top"><code>sectInclude</code></td>                 <td align="center" valign="top"><code>::= </code></td>                 <td valign="top"><code>'&lt;![' S? 'INCLUDE' S?                 '[' </code><a href="#NT-extSubsetDecl"><code>dclSousEnsembleExt</code></a><code>                 ']]&gt;' </code></td>             </tr>             <tr>                 <td align="right" valign="top"><a                 name="NT-ignoreSect"></a>[63]&nbsp;</td>                 <td align="right" valign="top"><code>sectIgnore</code></td>                 <td align="center" valign="top"><code>::= </code></td>                 <td valign="top"><code>'&lt;![' S? 'IGNORE' S?                 '[' </code><a href="#NT-ignoreSectContents"><code>contenuSectIgnore</code></a><code>*                 ']]&gt;'</code></td>             </tr>             <tr>                 <td align="right" valign="top"><a                 name="NT-ignoreSectContents"></a>[64]&nbsp;</td>                 <td align="right" valign="top"><code>contenuSectIgnore</code></td>                 <td align="center" valign="top"><code>::= </code></td>                 <td valign="top"><a href="#NT-Ignore"><code>Ignore</code></a><code>                 ('&lt;![' </code><a href="#NT-ignoreSectContents"><code>contenuSectIgnore</code></a><code>                 ']]&gt;' </code><a href="#NT-Ignore"><code>Ignore</code></a><code>)*</code></td>             </tr>             <tr>                 <td align="right" valign="top"><a                 name="NT-Ignore"></a>[65]&nbsp;</td>                 <td align="right" valign="top"><code>Ignore</code></td>                 <td align="center" valign="top"><code>::= </code></td>                 <td valign="top"><a href="#NT-Char"><code>Car</code></a><code>*                 - (</code><a href="#NT-Char"><code>Car</code></a><code>*                 ('&lt;![' |&nbsp;']]&gt;') </code><a                 href="#NT-Char"><code>Car</code></a><code>*) </code></td>             </tr>         </table>         </td>     </tr> </table>  <p> l'instar des sous-ensembles internes et externes de DTD, une section conditionnelle peut contenir une ou plusieurs instances compltes de dclarations, de commentaires, d'instructions de traitement ou de sections conditionnelles imbriques, le tout parsem de sparateurs (du blanc).</p>  <p>Si le mot-cl d'une section conditionnelle est <code>INCLUDE</code> alors le contenu de la section conditionnelle fait partie de la DTD. Si le mot-cl de la section conditionnelle est <code>IGNORE</code> alors le contenu de la section conditionnelle ne fait pas partie, au niveau logique, de la DTD. Remarquons qu'afin de rendre l'analyse robuste, il faut lire le contenu des sections conditionnelles mme ignores afin de dtecter les sections conditionnelles imbriques et de s'assurer que la fin de la section conditionnelle (ignore) la plus englobante est correctement dcele. Si une section conditionnelle marque du mot-cl <code>INCLUDE</code> se trouve au sein d'une section conditionnelle plus importante qui elle est marqu d'un mot-cl <code>IGNORE</code>, les sections intrieure et extrieure sont toutes deux ignores.</p>  <p>Si le mot-cl d'une section conditionnelle est un appel d'entit paramtre, on remplacera l'entit paramtre par son contenu avant que le processeur ne dcide s'il doit inclure ou ignorer  la section conditionnelle.</p>  <p>Exemple&nbsp;: </p>  <table border="1" cellpadding="5" width="100%" bgcolor="#80FFFF">     <tr>         <td><code>&lt;!ENTITY&nbsp;%&nbsp;bauche&nbsp;'INCLUDE'&nbsp;&gt;<br>         &lt;!ENTITY&nbsp;%&nbsp;BonTirer&nbsp;'IGNORE'&nbsp;&gt;<br>         &nbsp;<br>         &lt;![%bauche;[<br>         &lt;!ELEMENT&nbsp;livre&nbsp;(commentaires*,&nbsp;titre,&nbsp;corps,&nbsp;annexes?)&gt;<br>         ]]&gt;<br>         &lt;![%BonTirer;[<br>         &lt;!ELEMENT&nbsp;livre&nbsp;(titre,&nbsp;corps,&nbsp;annexes?)&gt;<br>         ]]&gt;<br>         </code></td>     </tr> </table>  <H2><a name='sec-physical-struct'>4. Structures physiques</a></h2>   <p><a name='dt-entity'></a>Un document XML peut tre constitu d'une ou plusieurs units de stockage.  Ces units sont appeles <b>entits</b>&nbsp;; chacune a un <b>contenu</b> et toutes ( l'exception de <a href='#dt-docent'>l'entit document</a> et du <a href='#dt-doctype'>sous-ensemble externe de la DTD</a>) sont identifies par un <b>nom d'entit</b>. Chaque document XML possde une entit appele <A href='#dt-docent'>entit document</a> qui sert de point de dpart pour le <a href='#dt-xml-proc'>processeur XML</a> et qui peut contenir le document au complet.</p>  <p>Une entit peut tre analysable ou non. <a name='dt-parsedent'></a>On dsigne le contenu d'une <b>entit analysable</b> sous le nom de <A href='#dt-repltext'>texte de remplacement</a>&nbsp;; ce <A href='#dt-text'>texte</a> fait partie intgrante du document.</p>  <p><a name='dt-unparsed'></a>Une <b>entit non-analysable</b> est une ressource dont le contenu n'est pas ncessairement textuel (et pas ncessairement du texte XML mme si textuel).  On associe  chaque entit non-analysable une <a href='#dt-notation'>notation</a>, identifie par un nom.  XML n'impose aucune contrainte au contenu des entits non-analysables, si ce n'est que les noms des entits et des notations soient mis  la disposition de l'application.</p>  <p>Les entits analysables sont appeles par leur nom au moyen d'un appel d'entit&nbsp;; le nom des entits non-analysables est fourni par la valeur d'un attribut de type <code>ENTITY</code> ou <code>ENTITIES</code>.</p>  <p><a name='gen-entity'></a>Les <b>entits gnrales</b> sont destines  tre utilises dans le contenu du document.  <a name='dt-PE'></a>Les <b>entits paramtres</b> sont des entits analysables destines  tre utilises dans la DTD.  Les appels  ces deux types d'entits sont diffrents et sont reconnus dans des contextes diffrents.  De plus, les deux types occupent des espaces de noms distincts&nbsp;; une entit paramtre et une entit gnrale de mme nom sont deux entits distinctes. Dans ce texte, les entits gnrales sont parfois appeles simplement <em>entits</em> quand il n'y a pas de risque d'ambigut.</p>    <h3><a name='sec-references'>4.1 Appels de caractre et d'entit</a></h3>  <p><a name='dt-charref'></a>Un <b>appel de caractre</b> fait rfrence  un caractre particulier du jeu de caractres ISO/CEI 10646, par exemple un caractre inaccessible par le biais du clavier.</p>  <table cellpadding='5' border='1' bgcolor='#f5dcb3' width='100%'>  <tr align='left'>   <td><strong>Appel de caractre</strong></td>  </tr>  <tr>   <td>    <table border='0' bgcolor='#f5dcb3'>     <tr valign='top'>      <td align='right'><a name='NT-CharRef'></a>[66]&nbsp;</td>      <td align='right'><font><code>AppelCar</code></font></td>      <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code>'&amp;#' [0-9]+ ';' </code></font></td>     </tr>     <tr valign='top'>      <td align='right'></td>      <td></td>      <td></td>      <td align='left'><font><code>|&nbsp;'&amp;#x' [0-9a-fA-F]+ ';'</code></font></td>      <td align='center'><font><code> [ </code></font></td>      <td align='left'><font><code>CF&nbsp;: <a href='#wf-Legalchar'>Caractre admissible</a> ]</code></font></td>     </tr>    </table>   </td>  </tr> </table>  <p> <a name='wf-Legalchar'></a><p><b>Contrainte de forme&nbsp;: Caractre admissible</b><br> Le caractre faisant l'objet d'un appel de caractre doit respecter la production <a href='#NT-Char'>Car</a>.</p>  <p>Si un appel de caractre commence par &nbsp;<code>&amp;#x</code>&nbsp;, les chiffres et lettres jusqu'au terminateur &nbsp;<code>;</code>&nbsp; constituent une reprsentation hexadcimale de la position de code du caractre dans l'ISO/CEI 10646. S'il commence seulement par &nbsp;<code>&amp;#</code>&nbsp;, les chiffres jusqu'au terminateur &nbsp;<code>;</code>&nbsp; constituent une reprsentation dcimale de cette position de code.   <p><a name='dt-entref'></a>Un <b>appel d'entit</b> fait rfrence au contenu d'une entit nomme. <a name='dt-GERef'></a>Les appels  des entits gnrales analysables utilisent l'esperluette (<code>&amp;</code>) et le point-virgule (<code>;</code>) comme dlimiteurs. <a name='dt-PERef'></a>Les <b>appels d'entits paramtres</b> utilisent le symbole pour cent (<code>%</code>) et le point-virgule (<code>;</code>) comme dlimiteurs.</p>  <table cellpadding='5' border='1' bgcolor='#f5dcb3' width='100%'>  <tr align='left'>   <td><strong>Appel d'entit</strong></td>  </tr>  <tr>   <td>    <table border='0' bgcolor='#f5dcb3'>     <tr valign='top'>      <td align='right'><a name='NT-Reference'></a>[67]&nbsp;</td>      <td align='right'><font><code>Appel</code></font></td>      <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code><a       href='#NT-EntityRef'>AppelEntit</a> |&nbsp;<a       href='#NT-CharRef'>AppelCar</a></code></font>      </td>     </tr>     <tr valign='top'>      <td align='right'><a name='NT-EntityRef'></a>[68]&nbsp;</td>      <td align='right'><font><code>AppelEntit</code></font></td>      <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code>'&amp;' <a href='#NT-Name'>Nom</a> ';'</code></font></td>      <td align='center'><font><code> [ </code></font></td>      <td align='left'><font><code>CF&nbsp;: <a href='#wf-entdeclared'>Entit dclare</a> ]</code></font></td>     </tr>     <tr valign='top'>      <td></td>      <td></td>      <td></td>      <td></td>      <td align='center'><font><code> [ </code></font></td>      <td align='left'><font><code>CV&nbsp;: <a href='#vc-entdeclared'>Entit dclare</a> ]</code></font></td>     </tr>     <tr valign='top'>      <td></td>      <td></td>      <td></td>      <td></td>      <td align='center'><font><code> [ </code></font></td>      <td align='left'><font><code>CF&nbsp;: <a href='#textent'>Entit analysable</a> ]</code></font></td>     </tr>     <tr valign='top'>      <td></td>      <td></td>      <td></td>      <td></td>      <td align='center'><font><code> [ </code></font></td>      <td align='left'><font><code>CF&nbsp;: <a href='#norecursion'>Pas de rcursion</a> ]</code></font></td>     </tr>     <tr valign='top'>      <td align='right'><a name='NT-PEReference'></a>[69]&nbsp;</td>      <td align='right'><font><code>AppelEP</code></font></td>      <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code>'%' <a href='#NT-Name'>Nom</a> ';'</code></font></td>      <td align='center'><font><code> [ </code></font></td>      <td align='left'><font><code>CF&nbsp;: <a href='#wf-entdeclared'>Entit dclare</a> ]</code></font></td>     </tr>     <tr valign='top'>      <td></td>      <td></td>      <td></td>      <td></td>      <td align='center'><font><code> [ </code></font></td>      <td align='left'><font><code>CV&nbsp;: <a href='#vc-entdeclared'>Entit dclare</a> ]</code></font></td>     </tr>     <tr valign='top'>      <td></td>      <td></td>      <td></td>      <td></td>      <td align='center'><font><code> [ </code></font></td>      <td align='left'><font><code>CF&nbsp;: <a href='#norecursion'>Pas de rcursion</a> ]</code></font></td>     </tr>     <tr valign='top'>      <td></td>      <td></td>      <td></td>      <td></td>      <td align='center'><font><code> [ </code></font></td>      <td align='left'><font><code>CF&nbsp;: <a href='#indtd'>Dans la DTD</a> ]</code></font></td>     </tr>    </table>   </td>  </tr> </table>   <a name='wf-entdeclared'></a><p><b>Contrainte de forme&nbsp;: Entit dclare</b><br> Dans un document sans DTD, un document avec seulement un sous-ensemble interne de DTD sans appel d'entit paramtre ou un document marqu &nbsp;<code>standalone='yes'</code>&nbsp;, le <code><a href='#NT-Name'>Nom</a></code> donn dans un appel d'entit apparaissant ailleurs que dans le sous-ensemble externe ou dans une entit paramtre doit <a href='#dt-match'>correspondre</a> au nom d'une <A href='#sec-entity-decl'>dclaration d'entit</a> apparaissant ailleurs que dans le sous-ensemble externe ou dans une entit paramtre. Toutefois, dans les documents bien forms, les entits suivantes n'ont pas  tre dclares&nbsp;: <code>amp</code>, <code>lt</code>, <code>gt</code>, <code>apos</code>, <code>quot</code>.   La dclaration d'une entit gnrale doit prcder tout appel  celle-ci apparaissant dans une valeur implicite dans une dclaration de liste d'attributs. Note&nbsp;: si des entits sont dclares dans le sous-ensemble externe de DTD ou dans des entits paramtres externes, un processeur non-validateur <a href='#include-if-valid'>n'est pas oblig</a> de lire et de traiter leurs dclarations&nbsp;; pour de tels documents, la rgle voulant qu'une entit soit dclare n'est une contrainte de forme que si <a href='#sec-rmd'>standalone='yes'</a>.</p>  <a name='vc-entdeclared'></a><p><b>Contrainte de validit&nbsp;: Entit dclare</b><br> Dans un document avec sous-ensemble externe de DTD ou des entits paramtres externes avec &nbsp;<code>standalone='no'</code>&nbsp;, le <code><a href='#NT-Name'>Nom</a></code> donn dans l'appel doit <A  href='#dt-match'>correspondre</a> au nom d'une <A href='#sec-entity-decl'>dclaration d'entit</a>.  des fins d'interoprabilit, les documents valides devraient dclarer les entits <code>amp</code>, <code>lt</code>, <code>gt</code>, <code>apos</code>, <code>quot</code>,  sous la forme prcise en &nbsp;<A href='#sec-predefined-ent'>4.6&nbsp;Entits prdfinies</a>&nbsp;. La dclaration d'une entit paramtre doit prcder tout appel  celle-ci. De mme, la dclaration d'une entit gnrale doit prcder tout appel  celle-ci apparaissant dans une valeur implicite dans une dclaration de liste d'attributs.</p>  <a name='textent'></a><p><b>Contrainte de forme&nbsp;:  Entit analysable</b><br> Un appel d'entit ne doit pas contenir le nom d'une <A href='#dt-unparsed'>entit non-analysable</a>. On ne peut faire rfrence  des entits non-analysables que par le biais de <A href='#dt-attrval'>valeurs d'attribut</a> dclares de type <code>ENTITY</code> ou <code>ENTITIES</code>.</p>  <a name='norecursion'></a><p><b>Contrainte de forme&nbsp;:  Pas de rcursion</b><br>  Une entit analysable ne doit pas contenir d'appel rcursif  elle-mme, directement ou indirectement.</p>  <a name='indtd'></a><p><b>Contrainte de forme&nbsp;:  Dans la DTD</b><br>  Les appels d'entit paramtre ne peuvent se trouver que dans la <A href='#dt-doctype'>DTD</a>.</p>  <p>Exemples d'appels de caractre et d'entit&nbsp;:</p> <table cellpadding='5' border='1' bgcolor='#80ffff' width='100%'>  <tr>   <td><code><font>Tapez&nbsp;&lt;touche&gt;plus-petit-que&lt;/touche&gt;&nbsp;(&amp;#x3C;)&nbsp;pour&nbsp;sauvegarder&nbsp;les&nbsp;options.<br>    Ce&nbsp;document&nbsp;a&nbsp;t&nbsp;rdig&nbsp;le&nbsp;&amp;datedoc;&nbsp;et<br>    est&nbsp;class&nbsp;&amp;niveau-de-scurit;.</font></code>   </td>  </tr> </table> <p></p>  <p>Exemple d'appel d'entit paramtre&nbsp;:</p> <table cellpadding='5' border='1' bgcolor='#80ffff' width='100%'>  <tr>   <td><code><font>&lt;!--&nbsp;dclaration&nbsp;de&nbsp;l'entit&nbsp;paramtre&nbsp;"ISOLat2"...&nbsp;--&gt;<br>    &lt;!ENTITY&nbsp;%&nbsp;ISOLat2<br>    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SYSTEM&nbsp;"http://www.xml.com/iso/isolat2-xml.entities"&nbsp;&gt;<br>    &lt;!--&nbsp;...&nbsp;et&nbsp;appel&nbsp;--&gt;<br>    %ISOLat2;</font></code>   </td>  </tr> </table> <p></p>      <h3><a name='sec-entity-decl'>4.2 Dclarations d'entits</a></h3>   <p><a name='dt-entdecl'></a>On dclare des entits de la faon suivante&nbsp;:</p>  <table cellpadding='5' border='1' bgcolor='#f5dcb3' width='100%'>  <tr align='left'>   <td><strong>Dclaration d'entit</strong></td>  </tr>  <tr>   <td>    <table border='0' bgcolor='#f5dcb3'>     <tr valign='top'>      <td align='right'><a name='NT-EntityDecl'></a>[70]&nbsp;</td>      <td align='right'><font><code>DclEntit</code></font></td>      <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code><a href='#NT-GEDecl'>DclEG</a> |&nbsp;<a href='#NT-PEDecl'>DclEP</a></code></font></td>     </tr>     <tr valign='top'>      <td align='right'><a name='NT-GEDecl'></a>[71]&nbsp;</td>      <td align='right'><font><code>DclEG</code></font></td>      <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code>'&lt;!ENTITY' <a href='#NT-S'>S</a>       <a href='#NT-Name'>Nom</a> <a href='#NT-S'>S</a>        <a href='#NT-EntityDef'>DfEntit</a>        <a href='#NT-S'>S</a>? '&gt;'</code></font>      </td>     </tr>     <tr valign='top'>      <td align='right'><a name='NT-PEDecl'></a>[72]&nbsp;</td>      <td align='right'><font><code>DclEP</code></font></td>      <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code>'&lt;!ENTITY' <a href='#NT-S'>S</a>       '%' <a href='#NT-S'>S</a>        <a href='#NT-Name'>Nom</a> <a href='#NT-S'>S</a>        <a href='#NT-PEDef'>DfEP</a> <a href='#NT-S'>S</a>?       '&gt;'</code></font>      </td>     </tr>     <tr valign='top'>      <td align='right'><a name='NT-EntityDef'></a>[73]&nbsp;</td>      <td align='right'><font><code>DfEntit</code></font></td>      <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code><a href='#NT-EntityValue'>ValeurEntit</a>       |&nbsp;(<a href='#NT-ExternalID'>IdExterne</a>        <a href='#NT-NDataDecl'>DclNdata</a>?)</code></font>      </td>     </tr>     <tr valign='top'>      <td align='right'><a name='NT-PEDef'></a>[74]&nbsp;</td>      <td align='right'><font><code>DfEP</code></font></td>      <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code><a href='#NT-EntityValue'>ValeurEntit</a>        |&nbsp;<a href='#NT-ExternalID'>IdExterne</a></code></font>      </td>     </tr>    </table>   </td>  </tr> </table> <p> Le <code><a href='#NT-Name'>Nom</a></code> identifie l'entit dans un <a href='#dt-entref'>appel d'entit</a> ou, dans le cas d'une entit non-analysable, dans la valeur d'un attribut de type <code>ENTITY</code> ou <code>ENTITIES</code>. Si une mme entit est dclare plus d'une fois, seule la premire dclaration compte&nbsp;; un processeur XML peut alors mettre, au gr de l'utilisateur, un avertissement de dclarations multiples.</p>    <h4><a name='sec-internal-ent'>4.2.1 Entits internes</a></h4>   <p><a name='dt-internent'></a>Si la dfinition de l'entit est une <code><a href='#NT-EntityValue'>ValeurEntit</a></code>, l'entit ainsi dfinie est appele <b>entit interne</b>.  Il n'y a pas d'objet stock sparment et le contenu de l'entit est prcis dans la dclaration. Remarquons que la production du <A href='#dt-repltext'>texte de remplacement</a> peut ncessiter le traitement d'appels de caractre et d'entit dans la <A href='#dt-litentval'>valeur littrale d'entit</a>&nbsp;: cf. &nbsp;<a href='#intern-replacement'>4.5&nbsp;Construction du texte de remplacement d'une entit interne</a>&nbsp;.</p>  <p>Une entit interne est une <a href='#dt-parsedent'>entit analysable</a>.</p>  <p>Exemple de dclaration d'entit interne&nbsp;:</p> <table cellpadding='5' border='1' bgcolor='#80ffff' width='100%'>  <tr>   <td><code><font>&lt;!ENTITY&nbsp;Avancement&nbsp;"Ceci&nbsp;est&nbsp;une&nbsp;version&nbsp;prpublication<br>&nbsp;de&nbsp;la&nbsp;spcification."&gt;</font></code></td>  </tr> </table>       <h4><a name='sec-external-ent'>4.2.2 Entits externes</a></h4>   <p><a name='dt-extent'></a>Si l'entit n'est pas interne, il s'agit d'une <b>entit externe</b>, dclare comme suit&nbsp;:</p>  <table cellpadding='5' border='1' bgcolor='#f5dcb3' width='100%'>  <tr align='left'>   <td><strong>Dclaration d'entit externe</strong></td>  </tr>  <tr>   <td>    <table border='0' bgcolor='#f5dcb3'>     <tr valign='top'>      <td align='right'><a name='NT-ExternalID'></a>[75]&nbsp;</td>      <td align='right'><font><code>IdExterne</code></font></td>      <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code>'SYSTEM' <a href='#NT-S'>S</a>        <a href='#NT-SystemLiteral'>LittralSystme</a></code></font>      </td>     </tr>     <tr valign='top'>      <td align='right'></td>      <td></td>      <td></td>      <td align='left'><font><code>|&nbsp;'PUBLIC' <a href='#NT-S'>S</a>        <a href='#NT-PubidLiteral'>IdPubLittral</a>        <a href='#NT-S'>S</a>        <a href='#NT-SystemLiteral'>LittralSystme</a></code></font>      </td>    </tr>     <tr valign='top'>      <td align='right'><a name='NT-NDataDecl'></a>[76]&nbsp;</td>      <td align='right'><font><code>DclNdata</code></font></td>      <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code><a href='#NT-S'>S</a> 'NDATA' <a href='#NT-S'>S</a>        <a href='#NT-Name'>Nom</a></code></font>      </td>      <td align='center'><font><code> [ </code></font></td>      <td align='left'><font><code>CV&nbsp;: <a href='#not-declared'>Notation       dclare</a> ]</code></font>      </td>     </tr>    </table>   </td>  </tr> </table> <p> Si la production <code><a href='#NT-NDataDecl'>DclNdata</a></code> est prsente, il s'agit d'une <a href='#dt-unparsed'>entit non-analysable</a> gnrale&nbsp;; autrement il s'agit d'une entit analysable.</p>  <a name='not-declared'></a><p><b>Contrainte de validit&nbsp;:  Notation dclare</b><br>  Le <code><a href='#NT-Name'>Nom</a></code> doit correspondre au nom d'une <a href='#dt-notation'>notation</a> dclare.</p>  <p><a name='dt-sysid'></a>La production <code><a href='#NT-SystemLiteral'>LittralSystme</a></code> est appele <b>identificateur systme</b> de l'entit.  Il s'agit d'un URI, destin  tre utilis pour rcuprer des donnes que le processeur XML utilisera pour construire le texte de remplacement de l'entit. Il est  noter que le croisillon (<code>#</code>) et l'identificateur de fragment, qui sont frquemment utiliss avec des URI, ne font pas formellement partie de l'URI. Un processeur XML peut signaler une erreur si un identificateur de systme contient un identificateur de fragment.  Les URI relatifs doivent tre interprts par rapport  l'emplacement de la ressource au sein de laquelle la dclaration d'entit se trouve, sauf en cas d'information de provenance externe et qui ne relve pas de ce standard, comme un lment XML spcial dfini dans une DTD particulire ou une instruction de traitement dfinie par une application particulire. Un URI peut donc tre relatif  <a href='#dt-docent'>l'entit document</a>,  l'entit contenant le <A href='#dt-doctype'>sous-ensemble externe de DTD</a> ou  une quelconque <a href='#dt-extent'>entit paramtre externe</a>.</p>  <p>Certains URI peuvent contenir des caractres qui sont soit rservs (cf. <a href="#RFC2396">[IETF RFC2396]</a>, section 2.2) soit hors du domaine ASCII. Un processeur XML devrait traiter un tel caractre dans un URI en le reprsentant sous forme d'un ou plusieurs octets en UTF-8, puis en transformant chacun de ces octets selon le mcanisme de transformation URI (c'est  dire en convertissant chaque octet en %HH, o HH est la notation hexadcimale de la valeur de l'octet).</p>  <p><a name='dt-pubid'></a>En plus d'un identificateur systme, un identificateur externe peut contenir un <b>identificateur public</b>. Un processeur XML qui essaie de rcuprer le contenu d'une entit peut utiliser l'identificateur public pour en tirer un URI de remplacement. Si le processeur en est incapable, il doit utiliser l'URI prcis par l'identificateur systme.  L'identificateur public doit tre normalis en transformant toute suite de sparateurs (du blanc) en un seul caractre espace (#x20) et en liminant tout blanc de tte et de queue.</p>  <p>Exemples de dclaration d'entit externe&nbsp;:</p> <table cellpadding='5' border='1' bgcolor='#80ffff' width='100%'>  <tr>   <td>    <code><font>&lt;!ENTITY&nbsp;coutille-ouverte<br>    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SYSTEM&nbsp;"http://www.textuality.com/boilerplate/OpenHatch.xml"&gt;<br>    &lt;!ENTITY&nbsp;coutille-ouverte<br>    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PUBLIC&nbsp;"-//Textuality//TEXT&nbsp;Standard&nbsp;open-hatch&nbsp;boilerplate//EN"<br>    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"http://www.textuality.com/boilerplate/OpenHatch.xml"&gt;<br>    &lt;!ENTITY&nbsp;image-coutille<br>    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SYSTEM&nbsp;"../grafix/OpenHatch.gif"<br>    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NDATA&nbsp;gif&nbsp;&gt;</font></code>   </td>  </tr> </table>   <h3><a name='TextEntities'>4.3 Entits analysables</a></h3>   <h4><a name='sec-TextDecl'>4.3.1 La dclaration de texte</a></h4> <p>Les entits analysables externes peuvent commencer par une <b>dclaration de texte</b>.</p>  <table cellpadding='5' border='1' bgcolor='#f5dcb3' width='100%'>  <tr align='left'>   <td><strong>Dclaration de texte</strong></td>  </tr>  <tr>   <td>    <table border='0' bgcolor='#f5dcb3'>     <tr valign='top'>      <td align='right'><a name='NT-TextDecl'></a>[77]&nbsp;</td>      <td align='right'><font><code>DclTexte</code></font></td>      <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code>'&lt;?xml'        <a href='#NT-VersionInfo'>InfoVersion</a>?       <a href='#NT-EncodingDecl'>DclCodage</a>       <a href='#NT-S'>S</a>? '?&gt;'</code></font>      </td>     </tr>    </table>   </td>  </tr> </table>  <p>La dclaration de texte doit tre fournie littralement et non pas par appel d'une entit analysable. Elle ne peut se trouver qu'au dbut d'une entit analysable externe.</p>   <h4><a name='wf-entities'>4.3.2 Entits analysables bien formes</a></h4> <p>On dit d'une entit document qu'elle est bien forme si elle correspond  la production <code><a href='#NT-document'>document</a></code>. Une entit gnrale analysable externe est bien forme si elle correspond  la production <code><a href='#NT-extParsedEnt'>entAnalExt</a></code>. Une entit paramtre externe est bien forme si elle correspond  la production <code><a href='#NT-extPE'>entParExt</a></code>.</p>  <table cellpadding='5' border='1' bgcolor='#f5dcb3' width='100%'>  <tr align='left'>   <td><strong>Entit analysable externe bien forme</strong></td>  </tr>  <tr>   <td>    <table border='0' bgcolor='#f5dcb3'>     <tr valign='top'>      <td align='right'><a name='NT-extParsedEnt'></a>[78]&nbsp;</td>      <td align='right'><font><code>entAnalExt</code></font></td>      <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code><a href='#NT-TextDecl'>DclTexte</a>?        <a href='#NT-content'>contenu</a></code></font>      </td>     </tr>     <tr valign='top'>      <td align='right'><a name='NT-extPE'></a>[79]&nbsp;</td>      <td align='right'><font><code>entParExt</code></font></td>      <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code><a href='#NT-TextDecl'>DclTexte</a>?        <a href='#NT-extSubsetDecl'>dclSousEnsembleExt</a></code></font>      </td>     </tr>    </table>   </td>  </tr> </table>  <p>Une entit gnrale analysable interne est bien forme si son texte de remplacement correspond  la production  <code><a href='#NT-content'>contenu</a></code>. Toute entit paramtre interne est bien forme par dfinition.</p>  <p>Il dcoule du caractre bien form des entits que les structures logique et physique d'un document XML s'imbriquent proprement&nbsp;; aucun <a href='#dt-element'>lment</a>,   <a href='#dt-comment'>commentaire</a>,  <a href='#dt-stag'>balise ouvrante</a>, <a href='#dt-etag'>balise fermante</a>, <a href='#dt-empty'>balise d'lment vide</a>, <a href='#dt-pi'>instruction de traitement</a>,  <a href='#dt-charref'>appel de caractre</a> ou <a href='#dt-entref'>appel d'entit</a>  ne peut commencer dans une entit et se terminer dans une autre.</p>    <h4><a name='charencoding'>4.3.3 Codage des caractres dans les entits</a></h4>   <p>Chaque entit analysable externe d'un document XML peut utiliser un codage diffrent pour ses caractres.  Tous les processeurs XML doivent tre  mme de lire les entits en UTF-8 ou UTF-16.</p>  <p>Les entits codes en UTF-16 doivent commencer par une <i>marque d'ordre d'octets</i> telle que dcrite par l'annexe F de l'ISO/CEI 10646 ou par la section 2.4 d'Unicode (le caractre ESPACE INSCABLE SANS CHASSE, #xFEFF). La <i>marque</i> est une signature de codage et ne fait partie ni du balisage ni des donnes textuelles du document XML. Les processeurs XML doivent tre capables d'utiliser ce caractre pour distinguer les documents cods en UTF-8 et en UTF-16.</p>  <p>Bien que seul le soutien des codages UTF-8 et UTF-16 ne soit requis des processeurs XML, il est clair que d'autres codages sont couramment utiliss et qu'il peut tre souhaitable que les processeurs XML puissent lire les entits qui les emploient.  En absence d'information de codage de caractres externe (comme des en-ttes MIME), les entits analysables stockes dans un codage autre qu'UTF-8 ou UTF-16 doivent commencer par une <A href='#TextDecl'>dclaration de texte</a> contenant une dclaration de codage&nbsp;:</p>  <table cellpadding='5' border='1' bgcolor='#f5dcb3' width='100%'>  <tr align='left'>   <td><strong>Dclaration de codage</strong></td>  </tr>  <tr>   <td>    <table border='0' bgcolor='#f5dcb3'>     <tr valign='top'>      <td align='right'><a name='NT-EncodingDecl'></a>[80]&nbsp;</td>      <td align='right'><font><code>DclCodage</code></font></td>      <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code><a href='#NT-S'>S</a>       'encoding' <a href='#NT-Eq'>gal</a>        ('"' <a href='#NT-EncName'>NomCodage</a> '"' |&nbsp;       "'" <a href='#NT-EncName'>NomCodage</a> "'" )</code></font>      </td>     </tr>     <tr valign='top'>      <td align='right'><a name='NT-EncName'></a>[81]&nbsp;</td>      <td align='right'><font><code>NomCodage</code></font></td>      <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code>[A-Za-z] ([A-Za-z0-9._] |&nbsp;'-')*</code></font></td>      <td align='center'><font><code> /* </code></font></td>      <td align='left'><font><code>Nom de codage ne contenant que des caractres latins */</code></font></td>     </tr>    </table>   </td>  </tr> </table>  <p> Dans <a href='#dt-docent'>l'entit document</a>, la dclaration de codage se trouve dans la <a href='#dt-xmldecl'>dclaration XML</a>. <code><a href='#NT-EncName'>NomCodage</a></code> est le nom du codage utilis.</p>  <p>Dans une dclaration de codage, les valeurs  &nbsp;<code>UTF-8</code>&nbsp;, &nbsp;<code>UTF-16</code>&nbsp;, &nbsp;<code>ISO-10646-UCS-2</code>&nbsp; et &nbsp;<code>ISO-10646-UCS-4</code>&nbsp; devraient tre utilises pour les divers codages et transformation d'Unicode /  ISO/CEI 10646, les valeurs &nbsp;<code>ISO-8859-1</code>&nbsp;, &nbsp;<code>ISO-8859-2</code>&nbsp;, ... &nbsp;<code>ISO-8859-9</code>&nbsp; pour les parties de l'ISO 8859 et les valeurs &nbsp;<code>ISO-2022-JP</code>&nbsp;, &nbsp;<code>Shift_JIS</code>&nbsp; et &nbsp;<code>EUC-JP</code>&nbsp; pour les diverses formes de codage de JIS X-0208-1997.  Les processeurs XML peuvent reconnatre d'autres codages&nbsp;; il est recommand d'utiliser, pour les codages de caractres rpertoris (comme <em>charset</em>) par l'Internet Assigned Numbers Authority <A href='#IANA'>[IANA]</a> autres que ceux ci-dessus, les noms du rpertoire de l'IANA.  Il est  noter que ces noms sont dfinis comme indpendants de la casse&nbsp;; les correspondances avec ces noms doivent donc tre faites sans gard  la casse.</p>  <p>En l'absence d'information donne par un protocole de transport externe (p. ex. HTTP ou MIME), une entit comportant une dclaration de codage mais code autrement est une <a href='#dt-error'>erreur</a>, de mme qu'une entit code autrement qu'en UTF-8 qui ne commence pas par une <em>marque d'ordre d'octets</em> ni ne contient une dclaration de codage. L'ASCII tant un sous-ensemble d'UTF-8, les entits codes en ASCII n'ont pas absolument besoin de dclaration de codage.</p>  <p>Une <a href='#NT-TextDecl'>DclTexte</a> se trouvant ailleurs qu'au dbut d'une entit externe est une <a href='#dt-fatal'>erreur fatale</a>.</p>  <p>Une <a href='#dt-fatal'>erreur fatale</a> doit tre signale quand un processeur XML se trouve en prsence d'une entit utilisant un codage que le processeur est incapable de traiter.  noter le cas d'erreur subtil suivant&nbsp;: lorsqu'un caractre reprsent par une paire de seizets d'indirection (Unicode #xD800  #xDFFF) est prsent  un transcodeur ne connaissant pas UTF-16, il est possible que ce dernier produisent une suite UTF-8 de 6 octets (3 pour chaque seizet d'indirection).  Lorsque dcode, une telle suite donnera 2 &nbsp;caractres&nbsp; entre #xD800 et #xDFFF&nbsp;; ce domaine tant exclu par la production <a href="#NT-Char">[2]</a>, il s'agit d'une <a href="#dt-fatal">erreur fatale</a>.</p>  <p>Exemples de dclarations de texte contenant une dclaration de codage&nbsp;:</p>  <table cellpadding='5' border='1' bgcolor='#80ffff' width='100%'>  <tr>   <td><code><font>&lt;?xml&nbsp;encoding='UTF-8'?&gt;<br>    &lt;?xml&nbsp;encoding='EUC-JP'?&gt;</font></code>   </td>  </tr> </table>      <h3><a name='entproc'>4.4 Traitement des entits et des appels par un processeur XML</a></h3>  <p>Le tableau ci-dessous rsume dans quels contextes les appels de caractre, les appels d'entit et les rfrences  des entits non-analysables peuvent se produire ainsi que le comportement exig d'un <a href='#dt-xml-proc'>processeur XML</a> dans chaque cas.  Les tiquettes de la colonne de gauche indiquent le contexte&nbsp;:</p>  <dl>  <dt><B>Appel dans le contenu</B></dt>  <dd>Un appel n'importe o entre la <a href='#dt-stag'>balise ouvrante</a> et la <a href='#dt-etag'>balise fermante</a> d'un   lment&nbsp;; correspond au non-terminal <code><a   href='#NT-content'>contenu</a></code>.</dd>   <dt><B>Appel dans une valeur d'attribut</B></dt>  <dd>Un appel soit dans la valeur d'un attribut dans une <A   href='#dt-stag'>balise ouvrante</a>, soit dans une valeur implicite   dans une <a href='#dt-attdecl'>dclaration d'attribut</a>&nbsp;;   correspond au non-terminal <code><a   href='#NT-AttValue'>ValeurAtt</a></code>.</dd>   <dt><B>Valeur d'attribut</B></dt>  <dd>Un <code><a href='#NT-Name'>Nom</a></code>, et non pas un   appel, apparaissant soit comme valeur d'un attribut dclar de type   <code>ENTITY</code>, soit comme un des membres (dlimits par des   espaces) de la valeur d'un attribut dclar de type <code>ENTITIES</code>.</dd>   <dt><B>Appel dans une valeur d'entit</B></dt>  <dd>Un appel dans la <a href='#dt-litentval'>valeur littrale   d'entit</a> d'une entit paramtre ou interne dans la dclaration    d'entit&nbsp;; correspond au non-terminal    <code><a href='#NT-EntityValue'>ValeurEntit</a></code>.</dd>   <dt><B>Appel dans la DTD</B></dt>  <dd>Un appel dans le sous-ensemble interne ou externe de la <A   href='#dt-doctype'>DTD</a>, mais ailleurs que dans une <code><a   href='#NT-EntityValue'>ValeurEntit</a></code>, une <code><a   href='#NT-AttValue'>ValeurAtt</a></code>, une <code><a   href='#NT-PI'>IT</a></code>, un <code><a   href='#NT-Comment'>Commentaire</a></code>, un <code><a   href='#NT-SystemLiteral'>LittralSystme</a></code> ou un <code><a   href='#NT-PubidLiteral'>IdPubLittral</a></code>.</dd> </dl>  <TABLE border='0' cellpadding='7' align='center'>  <tr>   <td bgcolor='#c0d9c0' rowspan='2' colspan='1'></td>   <td bgcolor='#c0d9c0' align='center' valign='bottom' colspan='4'>Type d'entit</td>   <td bgcolor='#c0d9c0' rowspan='2' align='center'>Caractre</td>  </tr>  <tr align='center' valign='bottom'>   <td bgcolor='#c0d9c0'>paramtre</td>   <td bgcolor='#c0d9c0'>interne<br>gnrale</td>   <td bgcolor='#c0d9c0'>externe&nbsp;analysable<br>gnrale</td>   <td bgcolor='#c0d9c0'>non-analysable</td>  </tr>  <tr align='center' valign='middle'>   <td bgcolor='#c0d9c0' align='right'>Appel dans<br>le contenu</td>   <td bgcolor='#c0d9c0'><a href='#not-recognized'>Non&nbsp;reconnu</a></td>   <td bgcolor='#c0d9c0'><a href='#included'>Inclus</a></td>   <td bgcolor='#c0d9c0'><a href='#include-if-valid'>Inclus&nbsp;si&nbsp;validation</a></td>   <td bgcolor='#c0d9c0'><a href='#forbidden'>Interdit</a></td>   <td bgcolor='#c0d9c0'><a href='#included'>Inclus</a></td>  </tr>  <tr align='center' valign='middle'>   <td bgcolor='#c0d9c0' align='right'>Appel dans une<br>valeur d'attribut</td>   <td bgcolor='#c0d9c0'><a href='#not-recognized'>Non&nbsp;reconnu</a></td>   <td bgcolor='#c0d9c0'><a href='#inliteral'>Inclus&nbsp;dans&nbsp;littral</a></td>   <td bgcolor='#c0d9c0'><a href='#forbidden'>Interdit</a></td>   <td bgcolor='#c0d9c0'><a href='#forbidden'>Interdit</a></td>   <td bgcolor='#c0d9c0'><a href='#included'>Inclus</a></td>  </tr>  <tr align='center' valign='middle'>   <td bgcolor='#c0d9c0' align='right'>Valeur&nbsp;d'attribut</td>   <td bgcolor='#c0d9c0'><a href='#not-recognized'>Non&nbsp;reconnu</a></td>   <td bgcolor='#c0d9c0'><a href='#not-recognized'>Interdit</a></td>   <td bgcolor='#c0d9c0'><a href='#not-recognized'>Interdit</a></td>   <td bgcolor='#c0d9c0'><a href='#notify'>Signal</a></td>   <td bgcolor='#c0d9c0'><a href='#not recognized'>Non&nbsp;reconnu</a></td>  </tr>  <tr align='center' valign='middle'>   <td bgcolor='#c0d9c0' align='right'>Appel dans une<br>valeur d'entit</td>   <td bgcolor='#c0d9c0'><a href='#inliteral'>Inclus&nbsp;dans&nbsp;littral</a></td>   <td bgcolor='#c0d9c0'><a href='#bypass'>Non interprt</a></td>   <td bgcolor='#c0d9c0'><a href='#bypass'>Non interprt</a></td>   <td bgcolor='#c0d9c0'><a href='#forbidden'>Interdit</a></td>   <td bgcolor='#c0d9c0'><a href='#included'>Inclus</a></td>  </tr>  <tr align='center' valign='middle'>   <td bgcolor='#c0d9c0' align='right'>Appel dans la DTD</td>   <td bgcolor='#c0d9c0'><a href='#as-PE'>Inclus&nbsp;comme&nbsp;EP</a></td>   <td bgcolor='#c0d9c0'><a href='#forbidden'>Interdit</a></td>   <td bgcolor='#c0d9c0'><a href='#forbidden'>Interdit</a></td>   <td bgcolor='#c0d9c0'><a href='#forbidden'>Interdit</a></td>   <td bgcolor='#c0d9c0'><a href='#forbidden'>Interdit</a></td>  </tr> </table>   <h4><a name='not-recognized'>4.4.1 Non reconnu</a></h4> <p>Hors de la DTD, le caractre <code>%</code> n'a aucune signification particulire&nbsp;; pour cette raison, ce qui serait un appel d'entit paramtre dans la DTD n'est pas reconnu comme balisage dans le <code><a href='#NT-content'>contenu</a></code>. De mme, les noms des entits non-analysables ne sont pas reconnus sauf dans les valeurs d'attributs de type appropri.</p>    <h4><a name='included'>4.4.2 Inclus</a></h4> <p><a name='dt-include'></a>Une entit est <b>incluse</b> quand son <a href='#dt-repltext'>texte de remplacement</a> est rcupr et trait,  la place de l'appel lui-mme, comme s'il se trouvait dans le document  l'endroit o l'appel est reconnu. Le texte de remplacement peut contenir des <a href='#dt-chardata'>donnes textuelles</a> et du <a href='#dt-markup'>balisage</a> (sauf des entits paramtres) qui doit tre reconnu de la manire habituelle, sauf que le texte de remplacement des entits utilises pour dguiser des dlimiteurs de balisage (les entits  <code>amp</code>, <code>lt</code>, <code>gt</code>, <code>apos</code>, <code>quot</code>) est toujours trait comme des donnes. (La chane &nbsp;<code>AT&amp;amp;T;</code>&nbsp; devient &nbsp;<code>AT&amp;T;</code>&nbsp; et l'esperluette restante n'est pas reconnue comme un dlimiteur d'appel d'entit). Un appel de caractre est <b>inclus</b> quand le caractre en question est trait  la place de l'appel lui-mme.</p>    <h4><a name='include-if-valid'>4.4.3 Inclus si validation</a></h4> <p>Pour <a href='#dt-valid'>valider</a> un document, un processeur XML doit <a href='#dt-include'>inclure</a> le texte de remplacement des entits analysables qu'il reconnat. Toutefois, si une entit est externe et si le processeur ne cherche pas  valider le document, il <a href='#dt-may'>peut</a> ne pas inclure le texte de remplacement. Un tel processeur non-validateur doit signaler  l'application, le cas chant, qu'il a reconnu mais n'a pas lu une entit.</p>  <p>Cette rgle est motive par le fait que l'inclusion automatique prvue par le mcanisme d'entit de SGML et XML, conu avant tout pour faciliter la modularit lors de la rdaction, n'est pas ncessairement appropri pour d'autres applications. En feuilletant des documents, par exemple, on pourra choisir de donner une indication visuelle de la prsence d'une entit externe et de ne la rcuprer pour affichage que sur demande.</p>    <h4><a name='forbidden'>4.4.4 Interdit</a></h4> <p>Les formes suivantes sont interdites et constituent des erreurs  <a href='#dt-fatal'>fatales</a>&nbsp;: <ul>  <li>un appel  une <a href='#dt-unparsed'>entit non-analysable</a>&nbsp;;</li>  <li>un appel de caractre ou un appel d'entit gnrale dans la DTD,   sauf dans une <code><a   href='#NT-EntityValue'>ValeurEntit</a></code> ou une <code><a    href='#NT-AttValue'>ValeurAtt</a></code>&nbsp;;</li>   <li>un appel d'entit externe dans une valeur d'attribut.</li> </ul>      <h4><a name='inliteral'>4.4.5 Inclus dans littral</a></h4> <p>Lorsqu'un <a href='#dt-entref'>appel d'entit</a> apparat dans une valeur d'attribut ou lorsqu'un appel d'entit paramtre apparat dans une valeur littrale d'entit, son <a href='#dt-repltext'>texte de remplacement</a> est trait  la place de l'appel comme s'il se trouvait dans le document au lieu o l'appel est reconnu, sauf que les caractres guillemet simple et double dans le texte de remplacement sont toujours traits comme donnes et ne terminent pas le littral. L'exemple qui suit est bien form&nbsp;:</p>  <table cellpadding='5' border='1' bgcolor='#80ffff' width='100%'>  <tr>   <td><code><font>&lt;!ENTITY&nbsp;%&nbsp;ON&nbsp;'"Oui"'&nbsp;&gt;<br>    &lt;!ENTITY&nbsp;CeQuilDit&nbsp;"Il&nbsp;dit&nbsp;%ON;"&nbsp;&gt;</font></code>   </td>  </tr> </table>  <p>alors que celui-ci ne l'est pas&nbsp;:</p>  <table cellpadding='5' border='1' bgcolor='#80ffff' width='100%'>  <tr>   <td><code><font>&lt;!ENTITY&nbsp;FinAttr&nbsp;"27'"&nbsp;&gt;<br>    &lt;lment&nbsp;attribut='a-&amp;FinAttr;&gt;</font></code>   </td>  </tr> </table>    <h4><a name='notify'>4.4.6 Signal</a></h4> <p>Quand le nom d'une <a href='#dt-unparsed'>entit non-analysable</a> fait partie de la valeur d'un attribut dclar de type <code>ENTITY</code> ou <code>ENTITIES</code>, un processeur validateur doit informer l'application des identificateurs <a href='#dt-sysid'>systme</a> et <a href='#dt-pubid'>public</a> (le cas chant) de l'entit et de sa <a href='#dt-notation'>notation</a>.</p>    <h4><a name='bypass'>4.4.7 Non interprt</a></h4> <p>Lorsqu'un appel d'entit gnrale se trouve dans une <code><a href='#NT-EntityValue'>ValeurEntit</a></code> dans une dclaration d'entit, il n'est pas interprt et est laiss tel quel.</p>    <h4><a name='as-PE'>4.4.8 Inclus comme EP</a> (entit paramtre)</h4> <p>De mme que les entits analysables externes, les entits paramtres n'ont  tre <a href='#include-if-valid'>incluse que s'il y a validation</a>. Lorsqu'un appel d'entit paramtre est reconnu dans la DTD et inclus, son <a href='#dt-repltext'>texte de remplacement</a> est augment d'une espace (#x20) au dbut et  la fin&nbsp;; ceci dans le but de s'assurer que le texte de remplacement des entits paramtres contient bien un nombre entier d'units lexicales dans la DTD.</p>      <h3><a name='intern-replacement'>4.5 Construction du texte de remplacement d'une entit interne</a></h3> <p>En faisant tat du traitement des entits internes, il convient de distinguer deux formes de la valeur de l'entit.   <a name='dt-litentval'></a>La <b>valeur littrale d'entit</b> est la chane entre guillemets qu'on trouve dans la dclaration d'entit, correspondant au non-terminal <code><a href='#NT-EntityValue'>ValeurEntit</a></code>. <a name='dt-repltext'></a>Le <b>texte de remplacement</b> est le contenu de l'entit, aprs remplacement des appels de caractre et d'entits paramtres.</p>  <p>La valeur littrale d'entit telle que donne dans une dclaration d'entit interne (<code><a href='#NT-EntityValue'>ValeurEntit</a></code>) peut contenir des appels de caractre, d'entit paramtre et d'entit gnrale.  Ces appels doivent tre compltement contenus dans la valeur littrale d'entit.  Le texte de remplacement qui est <a  href='#dt-include'>inclus</a>, tel que dcrit ci-dessus, doit contenir le <em>texte de remplacement</em> de tout appel d'entit paramtre ainsi que le caractre correspondant  tout appel de caractre&nbsp;; toutefois, les appels d'entit gnrale doivent tre laisss tels quels, sans remplacement.  Par exemple, tant donn les dclarations suivantes&nbsp;:</p>  <table cellpadding='5' border='1' bgcolor='#80ffff' width='100%'>  <tr>   <td><code><font>&lt;!ENTITY&nbsp;%&nbsp;d&nbsp;&nbsp;&nbsp;&nbsp;"&amp;#xc9;ditions&nbsp;Gallimard"&nbsp;&gt;<br>    &lt;!ENTITY&nbsp;&nbsp;&nbsp;droits&nbsp;"Tous&nbsp;droits&nbsp;rservs"&nbsp;&gt;<br>    &lt;!ENTITY&nbsp;&nbsp;&nbsp;livre&nbsp;&nbsp;&nbsp;"La&nbsp;Peste&nbsp;:&nbsp;Albert&nbsp;Camus,&nbsp;&amp;#xA9;&nbsp;1947&nbsp;%d;.&nbsp;&amp;droits;"&nbsp;&gt;</font></code>   </td>  </tr> </table>  <p>le texte de remplacement de l'entit &nbsp;<code>livre</code>&nbsp; est&nbsp;:</p>  <table cellpadding='5' border='1' bgcolor='#80ffff' width='100%'>  <tr>   <td><code><font>La&nbsp;Peste&nbsp;:&nbsp;Albert&nbsp;Camus,&nbsp;<br>    &nbsp;1947&nbsp;ditions&nbsp;Gallimard.&nbsp;&amp;droits;</font></code>   </td>  </tr> </table>  <p> L'appel d'entit gnrale &nbsp;<code>&amp;droits;</code>&nbsp; sera remplac si l'appel &nbsp;<code>&amp;livre;</code>&nbsp; venait   apparatre dans le contenu du document ou dans une valeur d'attribut.</p>  <p>Ces rgles simples peuvent avoir des interactions complexes&nbsp;; on trouvera un exemple difficile expliqu en dtails en &nbsp;<a href='#sec-entexpand'>D.&nbsp;Remplacement des appels d'entit et de caractre</a>&nbsp;.</p>     <h3><a name='sec-predefined-ent'>4.6 Entits prdfinies</a></h3> <p><a name='dt-escape'></a>On peut employer des appels d'entit ou de caractre pour <b>dguiser</b> le signe infrieur-, l'esperluette et d'autres dlimiteurs. Un jeu d'entits gnrales (<code>amp</code>, <code>lt</code>, <code>gt</code>, <code>apos</code>, <code>quot</code>) est dfini  cette fin. On peut aussi employer des appels numriques de caractre&nbsp;; ils sont remplacs ds que reconnus et doivent tre traits comme donnes textuelles, de sorte que les appels numriques de caractre &nbsp;<code>&amp;#60;</code>&nbsp; et &nbsp;<code>&amp;#38;</code>&nbsp; peuvent tre utiliss pour dguiser <code>&lt;</code> et <code>&amp;</code> dans des donnes textuelles.</p>  <p>Tous les processeurs XML doivent reconnatre ces entits, qu'elles soient dclares ou non.  des fins <a href='#dt-interop'>d'interoprabilit</a>, les documents XML valides devraient dclarer ces entits, comme n'importe quelles autres, avant tout appel. S'il y a lieu, les entits en question devraient tre dclares comme entits internes dont le texte de remplacement est le caractre  dguiser ou un appel de caractre  ce caractre, comme ci-dessous&nbsp;:</p>  <table cellpadding='5' border='1' bgcolor='#80ffff' width='100%'>  <tr>   <td><code><font>&lt;!ENTITY&nbsp;lt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"&amp;#38;#60;"&gt;&nbsp;<br>    &lt;!ENTITY&nbsp;gt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"&amp;#62;"&gt;&nbsp;<br>    &lt;!ENTITY&nbsp;amp&nbsp;&nbsp;&nbsp;&nbsp;"&amp;#38;#38;"&gt;&nbsp;<br>    &lt;!ENTITY&nbsp;apos&nbsp;&nbsp;&nbsp;"&amp;#39;"&gt;&nbsp;<br>    &lt;!ENTITY&nbsp;quot&nbsp;&nbsp;&nbsp;"&amp;#34;"&gt;&nbsp;<br></font></code>   </td>  </tr> </table>  <p>Remarquons que les caractres <code>&lt;</code> et <code>&amp;</code> dans les dclarations de &nbsp;<code>lt</code>&nbsp; et &nbsp;<code>amp</code>&nbsp;sont dguiss doublement, de manire  satisfaire l'exigence que le remplacement d'entit soit bien form.</p>     <h3><a name='Notations'>4.7 Dclarations de notation</a></h3>   <p><a name='dt-notation'></a>Une <b>notation</b> dsigne par un nom le format d'une <a href='#dt-extent'>entit non-analysable</a>, le format d'un lment muni d'un attribut notation ou l'application cible d'une <a href='#dt-pi'>instruction de traitement</a>.</p>  <p><a name='dt-notdecl'></a>Une <b>dclaration de notation</b> donne un nom  la notation, nom servant dans les dclarations d'entit et de liste d'attributs et dans les stipulations d'attribut, ainsi qu'un identificateur externe qui peut permettre  un processeur XML ou  son application cliente de reprer un assistant capable de traiter des donnes en cette notation.</p>  <table cellpadding='5' border='1' bgcolor='#f5dcb3' width='100%'>  <tr align='left'>   <td><strong>Dclaration de notation</strong></td>  </tr>  <tr>   <td>    <table border='0' bgcolor='#f5dcb3'>     <tr valign='top'>      <td align='right'><a name='NT-NotationDecl'></a>[82]&nbsp;</td>      <td align='right'><font><code>DclNotation</code></font></td>      <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code>'&lt;!NOTATION' <a href='#NT-S'>S</a> <a href='#NT-Name'>Nom</a>        <a href='#NT-S'>S</a>        (<a href='#NT-ExternalID'>IdExterne</a> |&nbsp;       <a href='#NT-PublicID'>IdPublic</a>)       <a href='#NT-S'>S</a>? '&gt;'</code></font>      </td>      <td align='center'><font><code> [ </code></font></td>      <td align='left'><font><code>CV&nbsp;: <a       href='#unique-notation-name'>Nom de notation unique</a> ]</code></font>      </td>     </tr>     <tr valign='top'>      <td align='right'><a name='NT-PublicID'></a>[83]&nbsp;</td>      <td align='right'><font><code>IdPublic</code></font></td>      <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code>'PUBLIC' <a href='#NT-S'>S</a>        <a href='#NT-PubidLiteral'>IdPubLittral</a></code></font>      </td>     </tr>    </table>   </td>  </tr> </table>  <a name='unique-notation-name'></a><p><b>Contrainte de validit&nbsp;:  Nom de notation unique</b><br>  Le <code><a href='#NT-Name'>Nom</a></code> de notation ne doit pas apparatre dans plus d'une <a href='#NT-NotationDecl'>DclNotation</a>.</p>  <p>Les processeurs XML doivent fournir aux applications les nom et identificateur externe de toute notation dclare et mentionne dans une valeur d'attribut, une dfinition d'attribut ou une dclaration d'entit.  Le processeur XML peut aussi transformer l'identificateur externe en un <a href='#dt-sysid'>identificateur systme</a>, un nom de fichier ou toute autre information utile  l'application pour appeler un processeur propre  la notation.  (Il n'y a pas erreur, toutefois, lorsqu'un document XML dclare et mentionne des notations pour lesquelles des processeurs idoines ne sont pas disponibles sur le systme o tourne le processeur XML ou l'application).</p>     <h3><a name='sec-doc-entity'>4.8 L'entit document</a></h3>   <p><a name='dt-docent'></a><b>L'entit document</b> sert de racine  l'arbre des entits et de point de dpart au <a href='#dt-xml-proc'>processeur XML</a>. Ce standard ne prcise pas comment un processeur XML peut localiser l'entit document. Contrairement aux autres entits, l'entit document n'a pas de nom et peut fort bien apparatre  l'entre d'un processeur sans la moindre identification.</p>  <h2><a name='sec-conformance'>5. Conformit</a></h2>     <h3><a name='proc-types'>5.1 Processeurs validateurs et non-validateurs</a></h3>  <p>Les <a href='#dt-xml-proc'>processeurs XML</a> conformes sont de deux classes&nbsp;: validateur et non-validateur.</p>  <p>Les processeurs des deux classes doivent signaler les violations de contraintes de forme de ce standard dans le contenu de <A href='#dt-docent'>l'entit document</a> et de toute autre <A href='#dt-parsedent'>entit analysable</a> qu'ils lisent.</p>  <p><a name='dt-validating'></a>Les <b>processeurs validateurs</b> peuvent en outre, au gr de l'utilisateur, signaler les violations de contraintes exprimes par les dclarations de la <a href='#dt-doctype'>DTD</a> et les violations des contraintes de validit prcises par ce standard. Pour ce faire, les processeurs XML validateurs doivent lire et traiter la DTD au complet ainsi que toutes les entits analysables externes mentionnes dans le document.</p>  <p>Les processeurs non-validateurs ne sont tenus que de vrifier la forme de <a href='#dt-docent'>l'entit document</a>, y compris le sous-ensemble interne de la DTD au complet.  <a name='dt-use-mdecl'></a>Bien qu'ils ne soient pas tenus de vrifier la validit du document, ils doivent <b>traiter</b> toutes les dclarations lues dans le sous-ensemble interne de la DTD ainsi que dans toute entit paramtre lue, jusqu'au premier appel d'entit paramtre qui n'est <em>pas</em> lu&nbsp;; <b>traiter</b> signifie qu'ils doivent utiliser ces dclarations pour <a href='#AVNormalize'>normaliser</a> les valeurs d'attribut, <a href='#included'>inclure</a> le texte de remplacement des entits internes et fournir les <a href='#sec-attr-defaults'>valeurs implicites d'attribut</a>.  Sauf si &nbsp;<code>standalone='yes'</code>&nbsp;, ils ne doivent pas <a href='#dt-use-mdecl'>traiter</a> les <a href='#dt-entdecl'>dclarations d'entit</a> ni les <a href='#dt-attdecl'>dclarations de liste d'attributs</a> qui suivent un appel d'entit paramtre qui n'a pas t lu, puisque cette entit pourrait contenir des dclarations contradictoires.</p>    <h3><a name='safe-behavior'>5.2 Utilisation des processeurs XML</a></h3>  <p>Le comportement d'un processeur XML validateur est minemment prvisible&nbsp;: il doit lire toutes les parties d'un document et signaler toute violation des contraintes de forme et de validit. On est moins exigeant des processeurs non-validateurs, qui ne sont tenus de lire que l'entit document.  Il en rsulte deux effets qui peuvent tre d'importance pour les utilisateurs de processeurs XML&nbsp;:</p>  <ul>  <li>Certaines erreurs de forme, notamment celles dont la dtection   exige de lire les entits externes, peuvent chapper  un   processeur non-validateur.  Des exemples de contraintes pouvant tre   violes sans avertissement sont celles appeles <a   href='#wf-entdeclared'>Entit dclare</a>, <a   href='#wf-textent'>Entit analysable</a> et <a   href='#wf-norecursion'>Pas de rcursion</a>, ainsi que certains cas   dcrits comme <a href='#forbidden'>Interdit</a> dans &nbsp;<a   href='#entproc'>4.4&nbsp;Traitement des entits et des appels par un   processeur XML</a>&nbsp;.</li>  <li>L'information transmise du processeur  l'application peut   varier, selon que le processeur lit ou non les entits paramtres et   externes.  Ainsi, un processeur non-validateur peut ne pas    <a href='#AVNormalize'>normaliser</a> des valeurs d'attribut,    ne pas <a href='#included'>inclure</a> le texte de remplacement   d'entits internes ou ne pas fournir des   <a href='#sec-attr-defaults'>valeurs implicites d'attribut</a>,   lorsque ces actions impliquent la lecture pralable de dclarations situes   dans des entits paramtres ou externes.</li> </ul>   <p>Afin d'optimiser l'interoprabilit entre diffrents processeurs XML, les applications utilisant des processeurs non-validateurs ne devraient pas se fier  des comportements facultatifs de la part de ces processeurs.  Les applications qui ncessitent des fonctions comme les valeurs implicites d'attribut ou des entits internes dclares dans des entits externes devraient utiliser des processeurs validateurs.</p>  <H2><a name='sec-notation'>6. Notation</a></h2>   <p>La grammaire formelle de XML est prcise dans ce standard en utilisant une notation simple de forme Backus-Naur tendue (EBNF). Chaque rgle de la grammaire dfinit un symbole, sous la forme&nbsp;:</p>  <table cellpadding='5' border='1' bgcolor='#80ffff' width='100%'>  <tr>   <td><code><font>symbole&nbsp;::=&nbsp;expression</font></code></td>  </tr> </table>  <p>Un symbole prend une majuscule initiale s'il est le symbole initial d'un langage rgulier, une minuscule initiale autrement.  Les chanes littrales sont entre guillemets anglais simples ou doubles ('chane littrale', "chane littrale").</p>  <p>On utilisera, du ct droit d'une rgle, les expressions suivantes qui correspondront  un ou plusieurs caractres&nbsp;:</p>  <dl>  <dt><b><code>#xN</code></b></dt>  <dd>o <code>N</code> est un entier hexadcimal. L'expression   quivaut au caractre de l'ISO/CEI 10646 dont le point de code   (UCS-4) a la valeur N, sans gard au nombre de zros de tte de la forme    <code>#xN</code>&nbsp;; le nombre de zros de ce point de code dpend en effet du   codage utilis.  </dd>   <dt><b><code>[abc]</code>, <code>[#xN#xN#xN]</code></b></dt>  <dd>quivaut  n'importe quel <a   href='#dt-character'>caractre</a> parmi ceux mentionns.  </dd>   <dt><b><code>[a-zA-Z]</code>, <code>[#xN-#xN]</code></b></dt>  <dd>quivaut  n'importe quel <a href='#dt-character'>caractre</a>   dont la valeur appartient  l'intervalle indiqu (inclusivement).  </dd>   <dt><b><code>[a-zABC]</code>, <code>[#xN-#xN#xN#xN#xN]</code></b></dt>  <dd>quivaut  n'importe quel <a href='#dt-character'>caractre</a>   dont la valeur appartient  l'intervalle indiqu (inclusivement) ou   correspondant  ceux mentionns.  </dd>   <dt><b><code>[^a-z]</code>, <code>[^#xN-#xN]</code></b></dt>  <dd>quivaut  n'importe quel <a href='#dt-character'>caractre</a>   dont la valeur n'appartient <em>pas</em>  l'intervalle indiqu.  </dd>   <dt><b><code>[^abc]</code>, <code>[^#xN#xN#xN]</code></b></dt>  <dd>quivaut  n'importe quel <a   href='#dt-character'>caractre</a> autre que ceux mentionns.  </dd>   <dt><b><code>"chane"</code></b></dt>  <dd>quivaut  une chane littrale <A   href='#dt-match'>correspondant</A>  celle indique entre guillemets   anglais doubles.  </dd>   <dt><b><code>'chane'</code></b></dt>  <dd>quivaut  une chane littrale <A   href='#dt-match'>correspondant</A>  celle indique entre guillemets   anglais simples.  </dd> </dl>  Ces symboles peuvent s'assembler pour construire des expressions plus complexes comme suit, o <code>A</code> et <code>B</code> reprsentent des expressions simples&nbsp;:  <dl>  <dt><b>(<code>expression</code>)</b></dt>  <dd>l'<code>expression</code> est traite comme une unit et peut   tre agence selon la description de la liste.  </dd>   <dt><b><code>A?</code></b></dt>  <dd>quivaut  <code>A</code> ou  rien&nbsp;; <code>A</code> facultatif.</dd>   <dt><b><code>A B</code></b></dt>  <dd>quivaut  <code>A</code> suivi de <code>B</code>. La   concatnation a priorit sur l'alternation.  Ainsi, <code>A B | C   D</code> est quivalent  <code>(A B)|(C D)</code>.</dd>   <dt><b><code>A | B</code></b></dt>  <dd>quivaut  <code>A</code> ou  <code>B</code> mais pas aux deux.</dd>   <dt><b><code>A - B</code></b></dt>  <dd>quivaut  n'importe quelle chane qui correspond    <code>A</code> mais ne correspond pas  <code>B</code>.  </dd>   <dt><b><code>A+</code></b></dt>  <dd>quivaut  une ou plusieurs apparitions de <code>A</code>. Cet   oprateur a priorit sur la concatnation.  Ainsi, <code>A+ B</code>   est quivalent  <code>(A+) B</code>.</dd>   <dt><b><code>A*</code></b></dt>  <dd>quivaut  zro, une ou plusieurs apparitions de <code>A</code>. Cet   oprateur a priorit sur la concatnation.  Ainsi, <code>A* B</code>   est quivalent  <code>(A*) B</code>.</dd> </dl>  On trouvera aussi les notations suivantes dans les productions&nbsp;:  <dl>  <dt><b><code>/* ... */</code></b></dt>  <dd>commentaire.</dd>   <dt><b><code>[ cf: ... ]</code></b></dt>  <dd>contrainte de forme&nbsp;; identifie par un nom une contrainte associe  une production et   impose aux documents <A href='#dt-wellformed'>bien forms</A>.  </dd>   <dt><b><code>[ cv: ... ]</code></b></dt>  <dd>contrainte de validit&nbsp;; identifie par un nom une contrainte associe  une production et   impose aux documents <A href='#dt-valid'>valides</A>.  </dd> </dl>   <h1>Annexes</h1>    <h2><a name='sec-bibliography'>A. Bibliographie</a></h2>   <h3><a name='sec-existing-stds'>A.1 Bibliographie normative</a></h3>  <dl>  <dt><a name='IANA'>IANA</a></dt>  <dd>(Internet Assigned Numbers Authority) <em>Official Names for   Character Sets</em>, d. Keld Simonsen et al.<br>   Cf. <a  href='ftp://ftp.isi.edu/in-notes/iana/assignments/character-sets'>ftp://ftp.isi.edu/in-notes/iana/assignments/character-sets</a>.  </dd>   <dt><a name='RFC1766'>IETF RFC 1766</a></dt>  <dd>IETF (Internet Engineering Task Force). <em>RFC 1766&nbsp;:  Tags   for the Identification of Languages</em>, d. H. Alvestrand. 1995.  </dd>   <dt><a name='ISO10646'>ISO/CEI 10646</a></dt>  <dd>ISO (Organisation internationale de normalisation). <em>ISO/CEI   10646-1993 (F).  Technologies de l'information -- Jeu universel de   caractres cods  plusieurs octets -- Partie 1: Architecture et   table multilingue.</em> [Genve]&nbsp;: Organisation internationale   de normalisation, 1993 (ainsi que les amendements AM 1  AM   7). Texte provisoire de la traduction franaise disponible sur <a   href="http://babel.alis.com/codage/iso10646/index.html">&lt;http://babel.alis.com/codage/iso10646/index.html&gt;</a>.  </dd>   <dt><a name='Unicode'>Unicode</a></dt>  <dd>The Unicode Consortium. <em>The Unicode Standard, version   2.0.</em> Reading, Massachusetts&nbsp;:  Addison-Wesley Developers   Press, 1996.  </dd> </dl>    <h3><a name='null'>A.2 Autres ouvrages</a></h3>   <dl>  <dt><a name='Aho'>Aho/Ullman</a></dt>  <dd>Aho, Alfred V., Ravi Sethi et Jeffrey   D. Ullman. <em>Compilateurs:  Principes, techniques et   outils</em>. Interditions, Paris, 1994.  </dd>   <dt><a name='Berners-Lee'>Berners-Lee et al.</a></dt>  <dd>Berners-Lee, T., R. Fielding, and L. Masinter. <em>Uniform   Resource Identifiers (URI):  Generic Syntax and   Semantics</em>. 1997. (En cours de rdaction, voir les mises  jour   au RFC1738.)  </dd>   <dt><a name='ABK'>Brggemann-Klein</a></dt>  <dd>Brggemann-Klein, Anne. <em>Formal Models in Document   Processing</em>. Habilitationsschrift. Facult de mathmatiques de    l'Universit de Fribourg, 1993, disponible  <a   href="ftp://ftp.informatik.uni-freiburg.de/documents/papers/brueggem/habil.ps">ftp://ftp.informatik.uni-freiburg.de/documents/papers/brueggem/habil.ps</a>.   </dd>   <dt><a name='ABKDW'>Brggemann-Klein and Wood</a></dt>  <dd>Brggemann-Klein, Anne und D. Wood. <em>Deterministic Regular   Languages</em>. Rsum toff dans A. Finkel, M. Jantzen, Hrsg.,   STACS 1992, S. 173-184. Springer-Verlag, Berlin 1992. Notes de   confrence dans Computer Science 577. Version complte intitule   <em>One-Unambiguous Regular Languages</em> dans Information and   Computation 140 (2): 229--253, February 1998.  </dd>   <dt><a name='Clark'>Clark</a></dt>  <dd>James Clark. Comparison of SGML and XML. Cf. <a   href='http://www.w3.org/TR/NOTE-sgml-xml-971215'>http://www.w3.org/TR/NOTE-sgml-xml-971215</a>.  </dd>   <dt><a name='RFC1738'>IETF RFC1738</a></dt>  <dd>IETF (Internet Engineering Task Force). <em>RFC 1738&nbsp;:   Uniform Resource Locators (URL)</em>, d. T. Berners-Lee,   L. Masinter, M. McCahill. 1994.  </dd>   <dt><a name='RFC1808'>IETF RFC1808</a></dt>  <dd>IETF (Internet Engineering Task Force). <em>RFC 1808&nbsp;:   Relative Uniform Resource Locators</em>, d. R. Fielding. 1995.  </dd>   <dt><a name='RFC2141'>IETF RFC2141</a></dt>  <dd>IETF (Internet Engineering Task Force). <em>RFC 2141&nbsp;:  URN   Syntax</em>, d. R. Moats. 1997.  </dd>   <dt><a name='RFC2376'>IETF RFC2376</a></dt>  <dd>IETF (Internet Engineering Task Force). <em>RFC 2376&nbsp;: XML   Media Types</em>, d. E. Whitehead, M. Murata, 1998.  </dd>   <dt><a name='RFC2396'>IETF RFC2396</a></dt>  <dd>IETF (Internet Engineering Task Force). <em>RFC 2396&nbsp;:   Uniform Resource Identifiers (URI): Generic Syntax</em>,   d. T. Berners-Lee, R. Fielding, L. Masinter, 1998.  </dd>   <dt><a name='ISO639'>ISO 639</a></dt>  <dd>(Organisation internationale de normalisation). <em>ISO 639:1988   (F). Codes pour la reprsentation des noms de langue.</em>   [Genve]&nbsp;: Organisation internationale de normalisation, 1988.  </dd>    <dt><a name='ISO3166'>ISO 3166</a></dt>  <dd>(Organisation internationale de normalisation). <em>ISO   3166-1:1997 (F). Codes pour la reprsentation des noms de pays et de   leurs subdivisions -- Partie 1: Codes pays.</em> [Genve]&nbsp;:   Organisation internationale de normalisation, 1997.  </dd>   <dt><a name='ISO8879'>ISO 8879</a></dt>  <dd>ISO (Organisation internationale de normalisation). <em>ISO   8879:1986 (F). Traitement de l'information -- Systmes bureautiques   -- Langage normalis de balisage gnralis (SGML) (Incorpore   l'amendement 1:1988 et l'amendement WebSGML (ajout de l'annexe   K)).</em> [Genve]&nbsp;: Organisation internationale de   normalisation, 1986.  </dd>   <dt><a name='ISO10744'>ISO/IEC 10744</a></dt>  <dd>ISO (Organisation internationale de normalisation). <em>ISO/IEC   10744-1992 (E).  Technologies de l'information -- Langage de   structuration temporelle/hypermdia (HyTime) (Publie actuellement   en anglais seulement)</em> [Genve]&nbsp;: Organisation   internationale de normalisation, 1992. <em>Extended Facilities   Annexe.</em> [Genve]&nbsp;: Organisation internationale de   normalisation, 1996.  </dd> </dl>    <h2><a name='CharClasses'>B. Classes de caractres</a></h2>  <p>Conformment aux caractristiques dfinies dans le standard Unicode, les caractres sont classs en caractres de base (parmi lesquels on retrouve les lettres de l'alphabet latin sans diacritiques), en caractres idographiques et en caractres jonctifs (on y retrouve notamment la plupart des diacritiques). On distingue aussi les chiffres et les modificateurs de lettre.</p>  <table cellpadding='5' border='1' bgcolor='#f5dcb3' width='100%'>  <tr align='left'>   <td><strong>Les caractres</strong></td>  </tr>  <tr>   <td>    <table border='0' bgcolor='#f5dcb3'>     <tr valign='top'>      <td align='right'><a name='NT-Letter'></a>[84]&nbsp;</td>      <td align='right'><font><code>Lettre</code></font></td>      <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code><a href='#NT-BaseChar'>CarBase</a>        |&nbsp;<a href='#NT-Ideographic'>Idogramme</a></code></font>      </td>     </tr>     <tr valign='top'>      <td align='right'><a name='NT-BaseChar'></a>[85]&nbsp;</td>      <td align='right'><font><code>CarBase</code></font></td>      <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code>[#x0041-#x005A] |[#x0061-#x007A] |[#x00C0-#x00D6] |[#x00D8-#x00F6] |[#x00F8-#x00FF] |[#x0100-#x0131] |[#x0134-#x013E] |[#x0141-#x0148] |[#x014A-#x017E] |[#x0180-#x01C3] |[#x01CD-#x01F0] |[#x01F4-#x01F5] |[#x01FA-#x0217] |[#x0250-#x02A8] |[#x02BB-#x02C1] |#x0386 |[#x0388-#x038A] |#x038C |[#x038E-#x03A1] |[#x03A3-#x03CE] |[#x03D0-#x03D6] |#x03DA |#x03DC |#x03DE |#x03E0 |[#x03E2-#x03F3] |[#x0401-#x040C] |[#x040E-#x044F] |[#x0451-#x045C] |[#x045E-#x0481] |[#x0490-#x04C4] |[#x04C7-#x04C8] |[#x04CB-#x04CC] |[#x04D0-#x04EB] |[#x04EE-#x04F5] |[#x04F8-#x04F9] |[#x0531-#x0556] |#x0559 |[#x0561-#x0586] |[#x05D0-#x05EA] |[#x05F0-#x05F2] |[#x0621-#x063A] |[#x0641-#x064A] |[#x0671-#x06B7] |[#x06BA-#x06BE] |[#x06C0-#x06CE] |[#x06D0-#x06D3] |#x06D5 |[#x06E5-#x06E6] |[#x0905-#x0939] |#x093D |[#x0958-#x0961] |[#x0985-#x098C] |[#x098F-#x0990] |[#x0993-#x09A8] |[#x09AA-#x09B0] |#x09B2 |[#x09B6-#x09B9] |[#x09DC-#x09DD] |[#x09DF-#x09E1] |[#x09F0-#x09F1] |[#x0A05-#x0A0A] |[#x0A0F-#x0A10] |[#x0A13-#x0A28] |[#x0A2A-#x0A30] |[#x0A32-#x0A33] |[#x0A35-#x0A36] |[#x0A38-#x0A39] |[#x0A59-#x0A5C] |#x0A5E |[#x0A72-#x0A74] |[#x0A85-#x0A8B] |#x0A8D |[#x0A8F-#x0A91] |[#x0A93-#x0AA8] |[#x0AAA-#x0AB0] |[#x0AB2-#x0AB3] |[#x0AB5-#x0AB9] |#x0ABD |#x0AE0 |[#x0B05-#x0B0C] |[#x0B0F-#x0B10] |[#x0B13-#x0B28] |[#x0B2A-#x0B30] |[#x0B32-#x0B33] |[#x0B36-#x0B39] |#x0B3D |[#x0B5C-#x0B5D] |[#x0B5F-#x0B61] |[#x0B85-#x0B8A] |[#x0B8E-#x0B90] |[#x0B92-#x0B95] |[#x0B99-#x0B9A] |#x0B9C |[#x0B9E-#x0B9F] |[#x0BA3-#x0BA4] |[#x0BA8-#x0BAA] |[#x0BAE-#x0BB5] |[#x0BB7-#x0BB9] |[#x0C05-#x0C0C] |[#x0C0E-#x0C10] |[#x0C12-#x0C28] |[#x0C2A-#x0C33] |[#x0C35-#x0C39] |[#x0C60-#x0C61] |[#x0C85-#x0C8C] |[#x0C8E-#x0C90] |[#x0C92-#x0CA8] |[#x0CAA-#x0CB3] |[#x0CB5-#x0CB9] |#x0CDE |[#x0CE0-#x0CE1] |[#x0D05-#x0D0C] |[#x0D0E-#x0D10] |[#x0D12-#x0D28] |[#x0D2A-#x0D39] |[#x0D60-#x0D61] |[#x0E01-#x0E2E] |#x0E30 |[#x0E32-#x0E33] |[#x0E40-#x0E45] |[#x0E81-#x0E82] |#x0E84 |[#x0E87-#x0E88] |#x0E8A |#x0E8D |[#x0E94-#x0E97] |[#x0E99-#x0E9F] |[#x0EA1-#x0EA3] |#x0EA5 |#x0EA7 |[#x0EAA-#x0EAB] |[#x0EAD-#x0EAE] |#x0EB0 |[#x0EB2-#x0EB3] |#x0EBD |[#x0EC0-#x0EC4] |[#x0F40-#x0F47] |[#x0F49-#x0F69] |[#x10A0-#x10C5] |[#x10D0-#x10F6] |#x1100 |[#x1102-#x1103] |[#x1105-#x1107] |#x1109 |[#x110B-#x110C] |[#x110E-#x1112] |#x113C |#x113E |#x1140 |#x114C |#x114E |#x1150 |[#x1154-#x1155] |#x1159 |[#x115F-#x1161] |#x1163 |#x1165 |#x1167 |#x1169 |[#x116D-#x116E] |[#x1172-#x1173] |#x1175 |#x119E |#x11A8 |#x11AB |[#x11AE-#x11AF] |[#x11B7-#x11B8] |#x11BA |[#x11BC-#x11C2] |#x11EB |#x11F0 |#x11F9 |[#x1E00-#x1E9B] |[#x1EA0-#x1EF9] |[#x1F00-#x1F15] |[#x1F18-#x1F1D] |[#x1F20-#x1F45] |[#x1F48-#x1F4D] |[#x1F50-#x1F57] |#x1F59 |#x1F5B |#x1F5D |[#x1F5F-#x1F7D] |[#x1F80-#x1FB4] |[#x1FB6-#x1FBC] |#x1FBE |[#x1FC2-#x1FC4] |[#x1FC6-#x1FCC] |[#x1FD0-#x1FD3] |[#x1FD6-#x1FDB] |[#x1FE0-#x1FEC] |[#x1FF2-#x1FF4] |[#x1FF6-#x1FFC] |#x2126 |[#x212A-#x212B] |#x212E |[#x2180-#x2182] |[#x3041-#x3094] |[#x30A1-#x30FA] |[#x3105-#x312C] |[#xAC00-#xD7A3]</code></font>      </td>     </tr>     <tr valign='top'>      <td align='right'><a name='NT-Ideographic'></a>[86]&nbsp;</td>      <td align='right'><font><code>Idogramme</code></font></td>      <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code>[#x4E00-#x9FA5]       |#x3007       |[#x3021-#x3029]</code></font>      </td>     </tr>     <tr valign='top'>      <td align='right'><a name='NT-CombiningChar'></a>[87]&nbsp;</td>       <td align='right'><font><code>CarJonctif</code></font></td>       <td align='center'><font><code> ::= </code></font></td>       <td align='left'><font><code>[#x0300-#x0345] |[#x0360-#x0361] |[#x0483-#x0486] |[#x0591-#x05A1] |[#x05A3-#x05B9] |[#x05BB-#x05BD] |#x05BF |[#x05C1-#x05C2] |#x05C4 |[#x064B-#x0652] |#x0670 |[#x06D6-#x06DC] |[#x06DD-#x06DF] |[#x06E0-#x06E4] |[#x06E7-#x06E8] |[#x06EA-#x06ED] |[#x0901-#x0903] |#x093C |[#x093E-#x094C] |#x094D |[#x0951-#x0954] |[#x0962-#x0963] |[#x0981-#x0983] |#x09BC |#x09BE |#x09BF |[#x09C0-#x09C4] |[#x09C7-#x09C8] |[#x09CB-#x09CD] |#x09D7 |[#x09E2-#x09E3] |#x0A02 |#x0A3C |#x0A3E |#x0A3F |[#x0A40-#x0A42] |[#x0A47-#x0A48] |[#x0A4B-#x0A4D] |[#x0A70-#x0A71] |[#x0A81-#x0A83] |#x0ABC |[#x0ABE-#x0AC5] |[#x0AC7-#x0AC9] |[#x0ACB-#x0ACD] |[#x0B01-#x0B03] |#x0B3C |[#x0B3E-#x0B43] |[#x0B47-#x0B48] |[#x0B4B-#x0B4D] |[#x0B56-#x0B57] |[#x0B82-#x0B83] |[#x0BBE-#x0BC2] |[#x0BC6-#x0BC8] |[#x0BCA-#x0BCD] |#x0BD7 |[#x0C01-#x0C03] |[#x0C3E-#x0C44] |[#x0C46-#x0C48] |[#x0C4A-#x0C4D] |[#x0C55-#x0C56] |[#x0C82-#x0C83] |[#x0CBE-#x0CC4] |[#x0CC6-#x0CC8] |[#x0CCA-#x0CCD] |[#x0CD5-#x0CD6] |[#x0D02-#x0D03] |[#x0D3E-#x0D43] |[#x0D46-#x0D48] |[#x0D4A-#x0D4D] |#x0D57 |#x0E31 |[#x0E34-#x0E3A] |[#x0E47-#x0E4E] |#x0EB1 |[#x0EB4-#x0EB9] |[#x0EBB-#x0EBC] |[#x0EC8-#x0ECD] |[#x0F18-#x0F19] |#x0F35 |#x0F37 |#x0F39 |#x0F3E |#x0F3F |[#x0F71-#x0F84] |[#x0F86-#x0F8B] |[#x0F90-#x0F95] |#x0F97 |[#x0F99-#x0FAD] |[#x0FB1-#x0FB7] |#x0FB9 |[#x20D0-#x20DC] |#x20E1 |[#x302A-#x302F] |#x3099 |#x309A</code></font>      </td>     </tr>     <tr valign='top'>      <td align='right'><a name='NT-Digit'></a>[88]&nbsp;</td>      <td align='right'><font><code>Chiffre</code></font></td>      <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code>[#x0030-#x0039] |[#x0660-#x0669] |[#x06F0-#x06F9] |[#x0966-#x096F] |[#x09E6-#x09EF] |[#x0A66-#x0A6F] |[#x0AE6-#x0AEF] |[#x0B66-#x0B6F] |[#x0BE7-#x0BEF] |[#x0C66-#x0C6F] |[#x0CE6-#x0CEF] |[#x0D66-#x0D6F] |[#x0E50-#x0E59] |[#x0ED0-#x0ED9] |[#x0F20-#x0F29]</code></font>      </td>     </tr>     <tr valign='top'>      <td align='right'><a name='NT-Extender'></a>[89]&nbsp;</td>      <td align='right'><font><code>ModificateurLettre</code></font></td>      <td align='center'><font><code> ::= </code></font></td>      <td align='left'><font><code>#x00B7 |#x02D0 |#x02D1 |#x0387 |#x0640 |#x0E46 |#x0EC6 |#x3005 |[#x3031-#x3035] |[#x309D-#x309E] |[#x30FC-#x30FE]</code></font>      </td>     </tr>    </table>   </td>  </tr> </table> <p></p>  <p>Les classes de caractres dfinies ci-dessus peuvent tre drives de la base de donnes des caractres d'Unicode de la faon suivante&nbsp;:</p>  <ul>  <li>Les caractres initiaux de nom doivent appartenir  une des   catgories suivantes&nbsp;:  Ll, Lu, Lo, Lt, Nl.</li>  <li>Les autres caractres constitutifs de nom doivent appartenir    une des catgories Mc, Me, Mn, Lm, ou Nd.</li>  <li>Les caractres dans la zone de compatibilit (c--d ceux dont la   valeur est suprieure  #xF900 et infrieure  #xFFFE) ne sont pas   admis dans les noms XML.</li>  <li>Les caractres qui connaissent une dcomposition de compatibilit   (c--d ceux dont le champ 5 dans la base de donnes contient une   &nbsp;balise de formatage de compatibilit&nbsp;, indiqu par un   champ 5 commenant par un &nbsp;<&nbsp;) ne sont pas permis.</li>  <li>Les caractres suivants sont considrs des caractres initiaux   de nom, car le fichier de proprits les classe parmi les caractres   alphabtiques&nbsp;: [#x02BB-#x02C1], #x0559, #x06E5, #x06E6.</li>  <li>Les caractres #x20DD-#x20E0 sont exclus (conformment  la   section 5.14 d'Unicode).</li>  <li>Le caractre #x00B7 est class parmi les modificateurs de lettre,   le fichier de proprits le classant de la sorte.</li>  <li>Le caractre #x0387 est considr comme un caractre constitutif   de nom car #x00B7 est son quivalent canonique.</li>  <li>Les caractres &nbsp;:&nbsp; et &nbsp;_&nbsp; sont permis   comme caractres initiaux de nom.</li>  <li>Les caractres &nbsp;-&nbsp; et &nbsp;.&nbsp; sont permis   comme caractres constitutifs de nom.</li> </ul>   <h2><a name='sec-xml-and-sgml'>C. XML et SGML (annexe informative)</a></h2>   <p>XML a t conu de telle sorte qu'il soit un sous-ensemble de SGML, ce qui signifie que tout document XML devrait galement tre un document SGML conforme.  Pour une comparaison dtaille des restrictions que XML impose aux documents au-del de celles imposes par SGML, voir <a href='#Clark'>[Clark]</a>.</p>   <h2><a name="sec-entexpand">D. Dveloppement des appels d'entit et de caractres (annexe informative)</a></h2>  <p>Cette annexe illustre par quelques exemples la suite des oprations de reconnaissance et de dveloppement qui ont lieu lors du traitement des appels d'entit et de caractres, tel que dcrit dans &nbsp;<a href="#entproc">4.4&nbsp;Traitement des entits et des appels par un processeur XML</a>&nbsp;.</p>  <p>Si la DTD contient la dclaration suivante&nbsp;:</p>  <table border="1" cellpadding="5" width="100%" bgcolor="#80FFFF">  <tr>   <td><code>&lt;!ENTITY&nbsp;exemple&nbsp;&quot;&lt;p&gt;On peut     dguiser une esperluette (&amp;#38;#38;)<br>    soit par un appel de caractre (&amp;#38;#38;#38;)<br>    soit par un appel d'entit gnrale (&amp;amp;amp;).&lt;/p&gt;&quot;&nbsp;&gt;<br></code>   </td>  </tr> </table>  <p>alors le processeur XML reconnatra les appels de caractres lors de l'analyse de la dclaration d'entit et les rsoudra avant de stocker la chane suivante comme valeur de l'entit &nbsp;exemple&nbsp;&nbsp;:</p>  <table border="1" cellpadding="5" width="100%" bgcolor="#80FFFF">  <tr>   <td><code>&lt;p&gt;On peut dguiser une esperluette (&amp;#38;)<br>    soit par un appel de caractre (&amp;#38;#38;)<br>    soit par un appel d'entit gnrale (&amp;amp;amp;).&lt;/p&gt;<br></code>   </td>  </tr> </table>  <p>Un appel  &nbsp;<code>&amp;exemple;</code>&nbsp; au sein du document enclenchera une nouvelle analyse du texte, lors de laquelle on reconnatra les balises ouvrante et fermante de l'lment &nbsp;p&nbsp; ainsi que les trois appels qui seront dvelopps. On aura donc comme rsultat un lment &nbsp;p&nbsp; avec le contenu suivant (rien que des donnes, pas de dlimiteur ni de balisage)&nbsp;:</p>  <table border="1" cellpadding="5" width="100%" bgcolor="#80FFFF">  <tr>   <td><code>On peut reprsenter une esperluette (&amp;)<br>    soit par un appel de caractre (&amp;#38;)<br>    soit par un appel d'entit gnrale (&amp;amp;).<br></code>   </td>  </tr> </table>  <p>Un exemple plus complexe illustrera compltement les rgles en question et leurs effets. Dans l'exemple ci-dessous, les numros de ligne ne servent que de rfrence.</p>  <table border="1" cellpadding="5" width="100%" bgcolor="#80FFFF">  <tr>   <td><code>    1&nbsp;&lt;?xml&nbsp;version='1.0'?&gt;<br>    2&nbsp;&lt;!DOCTYPE&nbsp;essai&nbsp;[<br>    3&nbsp;&lt;!ELEMENT&nbsp;essai&nbsp;(#PCDATA)&nbsp;&gt;<br>    4&nbsp;&lt;!ENTITY&nbsp;%&nbsp;xx&nbsp;'&amp;#37;zz;'&gt;<br>    5&nbsp;&lt;!ENTITY&nbsp;%&nbsp;zz&nbsp;'&amp;#60;!ENTITY&nbsp;risque&nbsp;&quot;sujet       erreurs&quot;&nbsp;&gt;'&nbsp;&gt;<br>    6&nbsp;%xx;<br>    7&nbsp;]&gt;<br>    8&nbsp;&lt;essai&gt;Cet exemple illustre une mthode&nbsp;&amp;risque;.&lt;/essai&gt;<br>   </code></td>  </tr> </table>  <p>Ce qui a pour rsultat&nbsp;: </p>  <ul>   <li> la ligne 4, de dvelopper d'emble l'appel au caractre 37, et   de stocker l'entit paramtre &nbsp;<code>xx</code>&nbsp; dans la   table des symboles avec comme valeur   &nbsp;<code>%zz;</code>&nbsp;.  Puisqu'on ne ranalyse pas le   texte de remplacement, il n'y a pas reconnaissance de l'appel    l'entit paramtre &nbsp;zz&nbsp; par le processur (reconnaissance   qui aurait caus une erreur, &nbsp;zz&nbsp; n'tant pas encore   dclare.)</li>   <li> la ligne 5, de dvelopper sur le champ l'appel de caractre   &nbsp;<code>&amp;#60;</code>&nbsp; et de stocker l'entit   paramtre &nbsp;zz&nbsp; avec comme texte de remplacement   &nbsp;<code>&lt;!ENTITY risque &quot;sujet  erreurs&quot;   &gt;</code>&nbsp;, une dclaration d'entit bien forme.</li>   <li> la ligne 6, de reconnatre l'appel    &nbsp;<code>xx</code>&nbsp; et d'analyser le texte de remplacement   de &nbsp;xx&nbsp; ( savoir &nbsp;<code>%zz;</code>&nbsp;).  Le   processeur reconnat alors l'appel  &nbsp;<code>zz</code>&nbsp;   et analyse son texte de remplacement (&nbsp;<code>&lt;!ENTITY   risque &quot;sujet  erreurs&quot; &gt;</code>&nbsp;).  L'entit   gnrale &nbsp;<code>risque&nbsp;</code> est donc maintenant   dclare avec comme texte de remplacement &nbsp;sujet    erreurs&nbsp;.</li>   <li> la ligne 8, de reconnatre l'appel  l'entit gnrale   &nbsp;risque&nbsp; et de la dvelopper de telle sorte que le   contenu de l'lment &nbsp;essai&nbsp; est la chane   auto-descriptive (et agrammaticale) <em>Cet exemple illustre une   mthode sujet  erreurs.</em></li>  </ul>       <h2><a name='determinism'>E. Modles de contenu dterministes (annexe informative)</a></h2>  <p>Pour favoriser la <a href='#dt-compat'>compatibilit</a>, il est ncessaire que les modles de contenu des dclarations de type d'lments soient dterministes.</p>  <p>SGML exige des modles de contenu dterministes (appels &nbsp;non-ambigus&nbsp;)&nbsp;; les processeurs XML construits sur la base de systmes SGML peuvent signaler comme erreurs les modles de contenu non-dterministes.</p>  <p>Par exemple, le modle de contenu <code>((b, c) | (b, d))</code> est non-dterministe, car tant donn un <code>b</code> initial, l'analyseur ne peut dterminer  quel <code>b</code> du modle il correspond sans savoir d'avance quel lment suit le <code>b</code>. Dans ce cas-ci, les deux rfrences <code>b</code> peuvent tre fusionns en une seule rfrence, le modle devenant <code>(b, (c | d))</code>.  Un <code>b</code> initial correspond maintenant clairement  un seul nom dans le modle de contenu. L'analyseur n'a plus besoin de prvoir ce qui suit&nbsp;; <code>c</code> ou <code>d</code> serait accept.</p>  <p>Formellement&nbsp;: un automate  tats finis peut tre construit,  partir du modle de contenu, en utilisant les algorithmes standards comme l'algorithme 3.5 dans la section 3.9 de Aho, Sethi et Ullman <a href='#Aho'>[Aho/Ullman]</a>. Dans plusieurs de ces algorithmes, un ensemble des suivants est construit pour chaque position dans l'expression rgulire (c--d chaque feuille dans l'arbre syntaxique de l'expression rgulire)&nbsp;; si une des positions a un ensemble des suivants dans lequel plus d'une des positions suivantes a le mme nom de type d'lment, alors le modle de contenu est erron et peut tre signal comme tel.</p>  <p>Il existe des algorithmes permettant de rduire automatiquement beaucoup de modles de contenu non-dterministes (mais pas tous)  des modles dterministes quivalents&nbsp;; cf. Brggemann-Klein 1991 <a href='#ABK'>[Brggemann-Klein]</a>.</p>  <h2><A NAME='sec-guessing'>F. Auto-dtection du codage de caractres (annexe informative)</a></h2>  <p>La dclaration de codage XML tient le rle d'tiquette interne  chaque entit, indiquant quel codage de caractres y est utilis. Pour qu'un processeur XML puisse lire l'tiquette interne, toutefois, il semble devoir connatre le codage utilis, ce qui est prcisment ce que l'tiquette cherche  annoncer. En gnral, la situation est sans issue. Le cas est nanmoins meilleur en XML, puisque XML limite le cas gnral de deux faons&nbsp;: un processeur donn ne gre qu'un nombre fini de codages de caractres&nbsp;; il y a des restrictions sur la position et le contenu de la dclaration de codage XML, restrictions telles qu'il est faisable de dtecter automatiquement le codage de chaque entit dans les cas normaux.  De plus, dans bien des cas d'autres sources d'information sont disponibles en sus des donnes XML elles-mmes. Deux cas sont  distinguer, selon qu'une entit XML est prsente au processeur avec ou sans information externe sur le codage.  Nous considrons d'abord le dernier cas.</p>  <p>tant donn que toute entit XML code autrement qu'en UTF-8 ou UTF-16 <em>doit</em> commencer par une dclaration de codage, dont les premiers caractres doivent tre '<code>&lt;?xml</code>', tout processeur conforme peut dterminer, aprs avoir lu de deux  quatre octets, lequel des cas suivants s'applique. En lisant cette liste, il peut tre utile de se rappeler qu'en UCS-4, '&lt;' et '?' sont reprsents par "<code>#x0000003C</code>" et"<code>#x0000003F</code>" respectivement, alors que la marque d'ordre d'octets exige en UTF-16 est "<code>#xFEFF</code>". La notation <code>##</code> est utilise pour indiquer n'importe quelle valeur d'octet sauf <code>00</code>.</p> <p> <ul>  <li>Avec marque d'ordre d'octets&nbsp;:   <ul>    <li><code>00 00 FE FF</code>&nbsp;: UCS-4, machine grand-boutienne (ordre 1234)</li>    <li><code>FF FE 00 00</code>&nbsp;: UCS-4, machine petit-boutienne (ordre 4321)</li>    <li><code>FE FF 00 ##</code>&nbsp;: UTF-16, grand-boutien</li>    <li><code>FF FE ## 00</code>&nbsp;: UTF-16, petit-boutien</li>   </ul>  </li>  <li>Sans marque d'ordre d'octets&nbsp;:   <ul>    <li><code>00 00 00 3C</code>&nbsp;: UCS-4, machine grand-boutienne (ordre 1234)</li>    <li><code>3C 00 00 00</code>&nbsp;: UCS-4, machine petit-boutienne (ordre 4321)</li>    <li><code>00 00 3C 00</code>&nbsp;: UCS-4, ordre des octets inhabituel (2143)</li>    <li><code>00 3C 00 00</code>&nbsp;: UCS-4, ordre des octets inhabituel (3412)</li>    <li><code>00 3C ## ##</code>,<br>        <code>00 25 ## ##</code>,<br>        <code>00 20 ## ##</code>,<br>        <code>00 09 ## ##</code>,<br>        <code>00 0D ## ##</code> ou<br>        <code>00 0A ## ##</code>&nbsp;: UTF-16 ou ISO-10646-UCS-2,        grand-boutien.  Il est  noter que, sans dclaration de codage, ces        cas sont  strictement parler des erreurs.</li>    <li><code>3C 00 ## ##</code>,<br>        <code>25 00 ## ##</code>,<br>        <code>20 00 ## ##</code>,<br>        <code>09 00 ## ##</code>,<br>        <code>0D 00 ## ##</code> ou<br>        <code>0A 00 ## ##</code>&nbsp;: UTF-16 ou ISO-10646-UCS-2,        petit-boutien.  Il est  noter que, sans dclaration de codage, ces        cas sont  strictement parler des erreurs.</li>    <li><code>3C 3F 78 6D</code>&nbsp;: UTF-8, ISO 646, ASCII, quelconque     partie de l'ISO 8859, Shift-JIS, EUC, ou tout autre codage  7 bits,     8 bits ou de largeur variable tel que les caractres ASCII ont leur     position, largeur et valeur habituelle&nbsp;; la dclaration de     codage doit tre lue pour dterminer exactement de quel codage il     s'agit, ce qui peut tre fait de faon fiable puisque tous ces     codages utilisent les mmes bits pour les caractres ASCII.</li>    <li><code>4C 6F A7 94</code>&nbsp;: EBCDIC (quelconque&nbsp;; la     dclaration de codage doit tre lue pour dterminer la page de code     exacte).</li>    <li>autre&nbsp;: UTF-8 sans dclaration de codage, ou alors le flux de     donnes est corrompu, fragmentaire ou emball de quelque faon.</li>   </ul>  </li> </ul>  <p>Ce niveau d'auto-dtection est suffisant pour lire la dclaration de codage XML et en tirer le nom du codage, qui est ncessaire pour distinguer les membres de chaque famille de codage (par ex. distinguer UTF-8 de 8859, distinguer les parties de 8859, distinguer les diverses pages de code EBCDIC, etc.)</p>  <p>Puisque le contenu de la dclaration de codage est limit aux caractres ASCII, un processeur peut la lire de faon fiable ds qu'il a identifi la famille de codage utilise.  En pratique, tous les codages de caractres font partie d'une des familles sus-mentionnes&nbsp;; la dclaration de codage permet donc une identification raisonnablement robuste du codage des caractres, mme en l'absence d'une source fiable d'information externe (systme d'exploitation ou protocole de transport). Note&nbsp;: puisque les entits analysables externes en UTF-16 peuvent dbuter par n'importe quel caractres, cette auto-dtection ne fonctionne pas toujours.  De plus, le codage UTF-7 peut ne pas tre dtect fiablement,  cause de la surchage qu'il impose aux caractres ASCII.</p>  <p>Ds que le processeur a dtermin le codage utilis, il peut agir en consquence, en appelant une routine d'entre pour chaque cas ou en appelant la fonction de conversion approprie pour chaque caractre.</p>  <p>Comme tout systme d'auto-tiquetage, la dclaration de codage XML cesse de fonctionner si un logiciel change le codage de l'entit sans la mettre  jour.  Les concepteurs de routines de codage de caractres doivent tre attentifs pour assurer l'exactitude de l'information interne ou externe rattache  l'entit.</p>  <p>Le second cas de figure se prsente lorsque l'entit XML est accompagne d'information sur le codage, fournie par certains systmes de fichier et certains protocoles rseau.  En prsence de plusieurs sources d'information, il convient que le protocole de haut niveau qui transporte l'entit prcise leur priorits relatives ainsi que la mthode prconise pour rsoudre les conflits potentiels.  Voir notamment le <a href="#RFC2376">[IETF RFC2376]</a> &nbsp;XML Media Types&nbsp; qui dfinit les types MIME <code>text/xml</code> et <code>application/xml</code> et fournit d'utiles indications. Pour faciliter l'introprabilit, toutefois, la rgle suivante est recommande&nbsp;:</p> <ul>  <li>Si une entit XML se trouve dans un fichier, la marque d'ordre   d'octet et la dclaration de codage (le cas chant) sont utilises   pour dterminer le codage de caractres. Toute autre source   d'information ne doit servir qu' la rcupration d'erreur.</li> </ul>   <h2><a name='sec-xml-wg'>G. Groupe de travail XML du W3C (annexe informative)</a></h2>  <p>Cette recommendation a t prpare et approuve pour publication par le groupe de travail XML du W2C (le GT).  L'approbation du GT ne signifie pas que tous les membres du GT ont vot positivement. Les membres actuels et passs du GT sont&nbsp;:</p>    Jon Bosak, Sun (prsident)&nbsp;; James Clark (meneur technique)&nbsp;; Tim Bray, Textuality et Netscape (co-diteur XML)&nbsp;; Jean Paoli, Microsoft (co-diteur XML)&nbsp;; C. M. Sperberg-McQueen, U. d'Ill. (co-diteur XML)&nbsp;; Dan Connolly, W3C (liaison W3C)&nbsp;; Paula Angerstein, Texcel&nbsp;; Steve DeRose, INSO&nbsp;; Dave Hollander, HP&nbsp;; Eliot Kimber, ISOGEN&nbsp;; Eve Maler, ArborText&nbsp;; Tom Magliery, NCSA&nbsp;; Murray Maloney, Muzmo et Grif&nbsp;; Makoto Murata, Fuji Xerox Information Systems&nbsp;; Joel Nava, Adobe&nbsp;; Conleth O'Connell, Vignette&nbsp;; Peter Sharpe, SoftQuad&nbsp;; John Tigue, DataChannel.  <P> <A href="http://www.w3.org/Consortium/Legal/ipr-notice.html#Copyright"> Copyright</A> &nbsp;&copy;&nbsp; 1998 <A href="http://www.w3.org">W3C</A> (<A href="http://www.lcs.mit.edu">MIT</A>, <A href="http://www.inria.fr/">INRIA</A>, <A href="http://www.keio.ac.jp/">Keio</A> ), tous droits rservs. Les rgles du W3C sur  <A href="http://www.w3.org/Consortium/Legal/ipr-notice.html#Legal Disclaimer">la responsabilit</A>,  <A href="http://www.w3.org/Consortium/Legal/ipr-notice.html#W3C Trademarks">les marques de commerce</A>, <A href="http://www.w3.org/Consortium/Legal/copyright-documents.html">les droits d'auteur</A> et <A href="http://www.w3.org/Consortium/Legal/copyright-software.html">les licences de logiciels</A> sont applicables.              <p>&nbsp;</p> <table cellpadding='5' border='1' bgcolor='#f5dcb3' width='85%'>  <tr>   <td><h2>Notes de traduction</h2>    <p>Cette traduction a t effectue sur une priode de plusieurs    mois dbutant en dcembre 1998.  Elle s'est droul en trois tapes    principales&nbsp;: terminologie, traduction et rvision.  Pour    faciliter le travail, un espace Web et une liste de diffusion ont    t crs.</p>     <h3>Terminologie</h3>    <p>La premire tape a t d'identifier la terminologie spcialise     traduire et les traductions appropries.  En plus des    traducteurs, les personnes suivantes ont particip  <a    href="file:///D|/Docs/HTML/Babel/web_ml/xml/termino.html">l'tude    de terminologie</a>&nbsp;: Alain LaBont <a    href="mailto:alb@sct.gouv.qc.ca">&lt;alb@sct.gouv.qc.ca&gt;</a>,     Nicolas Lesbats <a    href="mailto:nlesbats@hotmail.com">&lt;nlesbats@hotmail.com&gt</a> et    Philippe Deschamp <a    href="mailto:Philippe.Deschamp@INRIA.Fr">&lt;Philippe.Deschamp@INRIA.Fr&gt;</a>.</p>     <h3>Traduction</h3>    <p>Le document original a t divis en sections (matire liminaire,    chapitres et annexes) que se sont partags les traducteurs.  Une    fois les traductions faites, le document traduit fut rassembl au    moyen d'un script perl <i>ad hoc</i> qui s'est rvl fort utile    pendant l'tape de rvision.</p>     <h3>Rvision</h3>    <p>Dans un premier temps, chaque traducteur a rvis certaines des    sections traduites par les autres traducteurs&nbsp;; toutes les    sections ont ainsi t rvises au moins une fois.  Cette tape a    conduit  un affinement de la terminologie,  son uniformisation et     la correction de nombreuses erreurs.  Quelques erreurs de    l'original ont aussi t dcouvertes, qui ont t soumises au    groupe de travail idoine du W3C.</p>     <p>Le document entier a ensuite t relu attentivement par Alain LaBont <a    href="mailto:alb@sct.gouv.qc.ca">&lt;alb@sct.gouv.qc.ca&gt;</a> et    Richard Parent <a    href="mailto:rparent@sct.gouv.qc.ca">&lt;rparent@sct.gouv.qc.ca&gt;</a>    qui ont relev quelques erreurs et suggr quelques amliorations     la terminologie.  L'bauche tant en permanence sur le Web et une    certaine publicit ayant t faite de sa prsence, quelques    personnes nous ont contact pour signaler des erreurs ou    amliorations souhaitables.</p>     <p>Finalement, le document traduit et rvis plusieurs fois a t    valid au moyen du <a href="http://validator.w3.org/">validateur    HTML du W3C</a>.  Quelques ajustements du balisage l'ont rendu    valide&nbsp;: <a href="http://validator.w3.org/"><img border=0     src="/images/vh40.gif" alt="HTML 4.0 valide    !" height=31 width=88 align="top"></a></p>     <p>&nbsp;</p>   </td>  </tr> </table>  </body></html> 
