Le web de Dominique Guebey – Bazar informatique

Page : http://www.dg77.net/tekno/xhtml/specarac.htm


   D o m i n i q u e   G u e b e y    J u n g l e      Bazar informatique

Pages Web en XHTML (suite)

Caractères intéressants et entités

Sommaire

Blancs et assimilés

Certains types de fichiers doivent commencer par une séquence précise de caractères. Deux exemples de débuts conformes :

Fichier HTML
<!DOCTYPE …
Fichier XML
<?xml …

Dans le cas où le fichier ne commence pas comme attendu, le programme qui le lit peut chercher plus loin si les premiers caractères qu’il trouve sont des « espaces » ou « blancs » ou assimilés. Une tabulation, qui représente un saut de plusieurs caractères, sera acceptée, de même qu’un saut de ligne. Voici une liste de ces caractères ASCII très utiles. Les désignations rappelleront des souvenirs à ceux qui ont appris le clavier sur une vraie machine à écrire1.

Désignation Symb Code ASCII
Tabulation HT 9 x9
Saut de ligne LF 10 xA
Saut de page FF 12 xC
Retour chariot CR 13 xD
Espace SP 32 x20

Il est généralement possible d’ajouter dans un fichier texte des commentaires, i.e. des informations à l’intention du programmeur ou des utilisateurs. Le programme informatique qui analyse le fichier texte ignorera ces données.

A l’intérieur d’un fichier, les caractères espace ne sont pas toujours traîtés de la même façon. Dans la partie des données à afficher d’un fichier HTML, une suite de plusieurs blancs sera assimilée à un seul. Dans d’autres types de fichiers, ils seront tous reproduits.

Il est aussi utile de savoir que tous les systèmes d’exploitation ne terminent pas les lignes de la même façon. Le saut de ligne se fera :

Ainsi donc, sous Windows et si on utilise un éditeur un peu trop rudimentaire, on verra certains fichiers ne jamais (ou pas aussi souvent qu’on voudrait) revenir à la ligne quand on les affiche ; par exemple avec des sources de pages Web, souvent émises depuis un système Unix.

Et en EBCDIC ? Chez IBM, une suite d’espaces se reconnaît à la typique chaîne hexadécimale 4040404040… contre 2020202020… chez les autres. Un saut de ligne est marqué par le caractères 0x15 ou NEL (new line). Ajoutons-y CR et LF dans un programme CL sur IBM iSeries (AS/400) :

DCL &CR *CHAR 1 VALUE(X'0D')
DCL &LF *CHAR 1 VALUE(X'25')
DCL &NEL *CHAR 1 VALUE(X'15')

On remarquera qu’en EBCDIC LF a une valeur différente de l’ASCII

Quelques autres codes intéressants

Les termes utilisés seront explicités par la suite.

DésignationCode ASCIISigneExemples de fonctions (varie suivant le contexte)
Point d’exclamation33x21!
  • Après "<", prélude à une indication de DTD2 ("<!DOCTYPE …", "<!ELEMENT …")
  • …ou à un commentaire (<!--… voir le "tiret" plus bas).
Numéro ("hash") 35 x23 # Avertissement : le hash n’est pas un « dièse » !
  • Indique un numérotage (réf, matricule, code…)
  • Fait référence à un identificateur unique (par ex. pour indiquer un id à un endroit d’une page Web).
  • Dans certains languages ou fichiers de configuration, "#" marque le début d’un commentaire (pour le programme, la suite de la ligne est à ignorer).
  • La séquence #! en tout début de fichier indique qu’on est en présence d’un fichier de commandes à interpréter par le système. C’est le sha-bang ou hash-bang, connu de tous les auteurs de scripts sous Unix/Linux/Hurd etc.
  • En syntaxe APT (Augmented Plain Text) [http://www.altheim.com/specs/NOTE-apt1.html#syntax]  : introduit du marquage dans un fichier simple texte.
  • Dans une feuille de style CSS, spécifie une couleur si suivi par un code de 3 octets (#FFFFFF = blanc)
Tiret45x2D-
  • En SGML, la séquence <!-- marque le début d’un commentaire. La fin sera -->. Exemple : <!-- ceci est un texte libre -->
  • Attention : en XML, à l’intérieur d’un commentaire on n’accepte pas deux "-" successifs.
  • eMail : Classiquement, une "signature" de courrier électronique commence par une ligne composée uniquement de deux "-" et une espace.
Point 46 x2E .
  • Séparateur du nom de fichier et de son extension (courrier.rtf) ou les parties d’un nom de domaine, URL ou URI (www.domain.tld).
  • Unique dans un "chemin" : désigne l’emplacement en cours ;
  • Doublé: désigne l’emplacement immédiatement supérieur ("../../images/icone.jpg" : remonter de deux niveaux puis prendre dans le répertoire images le fichier icone.jpg).
  • Un courrier électronique ou eMail se termine avec une ligne composée d’un unique point.
Barre oblique 47 x2F /
  • SGML : au sein d’une balise, le "slash" indique la clôture de l’élément en cours (marqueur de fin) <tag>donnéesélément</tag>.
  • Séparation des noms dans les arborescences hiérarchiques des systèmes de fichiers. Il en résulte que l’utilisation de / dans un nom de fichier est interdite.
  • Dans beaucoup de languages de programmation, /* et */ encadrent un commentaire.
  • Doublé : dans la plupart des schemes d’URI, précède la désignation de "l’autorité", "hôte" ou ordinateur dont dépend la suite http://www.mondomaine.tld.
  • Doublé : en Java et d’autres languages, // indique que la suite de la ligne est un commentaire.
Deux-points 58 x3A :
  • Internet : dans un URI (Uniform Resource Identifier), le « : » est le séparateur qui suit le scheme et précède la partie spécifique. Exemple : news:fa.analytic-philosophy Remarque : un scheme n’est pas nécessairement un protocole.
  • Un « : » est aussi le séparateur qui suit l’indication de l’hôte et précède le port http://www.mondomaine.tld:8080
  • Sépare le code utilisateur et le mot de passe. Exemple : ftp://alphonse:tit296@ftp.supersoft.org/soft/lynx/lynx_rel285.zip
  • XML : Sépare le namespace du nom d’élément. <xsl:apply-template>
  • Doublé : base de la syntaxe BNF
  • Doublé : dans un batch/script DOS indique une ligne de commentaire (très préférable au "rem").
  • Doublé : syntaxe XPATH, sépare l’axe de la spécification du noeud dans le document. select="following-sibling::node()[position() < 5]"
Point d’interrogation 63 x3F ?
  • Après un "<" initial, prélude à une déclaration XML. <?xml version="1.1" encoding="iso-8859-1"?>
  • Peut entraîner l’affichage d’une invite de saisie.
  • Substitution automatique par une variable.
Arrobe 64 x40 @
  • Sépare le code utilisateur de l’adresse (du serveur..). Pour un eMail : <mailto:francoisrene@outretombe.org. Autre exemple : ftp://alph:tit296@ftp.supsoft.org/soft/lx_rel2.zip (transfert du fichier lx_rel2.zip par ftp demandé par l’utilisateur alph avec le mot-de-passe "tit296", au serveur ftp.supsoft.org).
  • Syntaxe XPATH : signale la représentation d’un attribut. select="document(./@source)"
Crochet ouvert 91 x5B [
  • Après un "<", annonce une "section CDATA" (chaîne de caractères à lire telle-quelle, sans interpréter les caractères spéciaux). <![CDATA[xxxxxxxxx]]>
  • Au sein d’une DTD ouvre une nouvelle liste d’entités. <!DOCTYPE www [<!ENTITY …

Entités et Character references

Un programme qui attend du texte le reçoit par ce qu’il est convenu d’appeler « l’entrée standard » (ou stdin pour standard input). Pour alimenter ainsi l’ordinateur, plusieurs modalités sont possibles

Remarque : le « flux » se dit stream en anglais. Ceci explique que dans certains contextes ou langages de programmation, les fichiers peuvent être nommés stream.

On a déjà vu que les caractères présents sur le clavier ne sont pas les seuls à pouvoir être transmis. Pour entrer un caractère exotique (par exemple Σ), on a vu le procédé [Alt] + [code] au clavier (cf supra "Entrée des codes au clavier"). Or un fichier texte est une alternative à la frappe humaine au clavier. On pourra utiliser des séquences de caractères spécifiques qui rempliront le même rôle que [Alt], pour indiquer au système qu’il va devoir interpréter spécifiquement ce qu’on lui envoie.

Les références caractères numériques ou NCR/numeric character references, sont un procédé permettant la représentation par une suite de caractères dans laquelle figure un code UCS (Universal Character Set ou Unicode). On les utilise notamment pour afficher des caractères qui ne peuvent être représentés dans l’encodage en cours, et on les nomme ENTITES.

Exemple : en SGML, HTML et XML, les chaînes suivantes sont des character references valables représentant la lettre capitale grecque Sigma ("Σ") dont le code UCS est 931 ou x3A3 (car (3x256)+(10x16)+3=931).
&#931;
&#0931;
&#x3A3;
&#x3a3;

Comme on le voit, le code numérique (identifié par un "#"), est précédé de "&", et suivi par ";". La méthode provient du SGML , et est utilisée dans ses dérivés tels qu’HTML et XML.

Entités prédéfinies

Dans la description des entités qui vient d’être donnée, l’esperluette & joue le rôle de caractère d’échappement. On entend par là un caractère qui annonce que la suite a une signification spéciale. On a déjà vu un exemple avec l’utilisation du "=" dans le quoted printable.

Le rôle particulier dévolu par exemple à "&" oblige à utiliser un procédé comme les entités pour signaler qu’on veut le représenter lui-même et non pas l’utiliser. Et, plutôt que des codes numériques, on utilisera des abréviations alphabétiques. Par exemple, pour afficher un "&", on utilisera "&amp;" (diminutif de ampersand) ce qui est plus parlant que "&#38;". Mais comme toujours, ce qui facilite la vie de l’utilisateur humain ajoute de la complexité du point de vue de la machine. Ces mnémoniques nécessitent une définition quelque-part, et supposent réunies certaines conditions qui seront abordées plus loin.

XML prévoit par conception 5 entités reconnues automatiquement. :

Signe Désignation Fonction Code ASCII Entité
" Guillemet (double quote) Encadre le contenu des attributs 34 x22 &quot;
& Esperluette (ampersand) Annonce une entité 38 x26 &amp;
' Apostrophe (single quote) Encadre le contenu des attributs 39 x27 &apos;
< Inférieur à (lower than) Commence une balise (marqueur) 60 x3C &lt;
> Supérieur à (greater than) Termine une balise (marqueur) 62 x3E &gt;

Typographie rudimentaire

Bonnes habitudes

La connaissance de quelques codes permet d’améliorer la présentation des textes visibles sur le Web :

&nbsp; ou &#160;
L’espace insécable empêchera de hideux retours à la ligne entre la fin d’un mot et les ":", ";", "?", "!" et "»" qui suivent  (ainsi que pour le "«" qui précède). En effet, avant ces signes de ponctuation (ou après le "«"), doit se trouver une (et non pas un, disent les typographes) espace, il ne saurait être question de les accoler à un mot.
&laquo; ou &#171; pour «
Utiliser les guillemets ouvrants, plus jolis que le banal double quote « " ».
&raquo; ou &#187; pour »
Ibidem pour les guillemets fermants.
&rsquo; ou &#8217; pour
Pour avoir un vrai apostrophe () plutôt qu’un simple quote ('). .
&mdash; ou &#8212; pour
Dans un texte un tant soi peu littéraire, le tiret quadratin «  » est plus agréable que ce minus de trait d’union.
&ndash; ou &#8211; pour
Alternative au précédent : le tiret demi-quadratin («  »)
&hellip; ou &#8230; points de suspension pour
&#8209; ou trait d’union insécable
Ce trait d’union empêche la coupure en fin de ligne d’un terme en deux parties séparées par un "-".
Exercice

Dans ce texte riche en ponctuation, il a fallu puiser dans les tables supplémentaires de l’ISOC pour afficher deux caractères :

Rangée 1E ("latin étendu additionnel") [http://alis.isoc.org/codage/iso10646/rang_1e.htm] pour le Isḥan - h minuscule à point souscrit l:15, h:20
C’est « le h minuscule à point souscrit » x1E25 (cf "Isḥan"). Je certifie qu’il s’affiche sans problème sur cette page dans les navigateurs Mozilla et Opera. Pour Internet Explorer 6 sous WinXP, un palliatif peut être trouvé plus loin dans la section Navigateurs/accessibilité
Rangée 20 ("ponctuation générale et autres") [http://alis.isoc.org/codage/iso10646/rang_20.htm]
Pour l’apostrophe (ou plutôt guillemet-virgule supérieur culbuté) x201B ("Arabi").

L’Ange Gabriel — sur lui le salut ! — avait demandé au prophète — qu’Allâh prie sur lui et le salue ! — « Qu’est-ce que l’Isḥan ? » Il répondit : « Que tu adores Allâh comme si tu Le voyais ; car si tu ne Le vois pas, Lui te voit. »

Ibn ‛Arabi – L’extinction dans la contemplation, traduction Michel Vâlsan.

L&rsquo;Ange Gabriel &mdash; sur lui le salut&nbsp;! &mdash; avait demand&eacute; au proph&egrave;te &mdash; qu&rsquo;All&acirc;h prie sur lui et le salue&nbsp;! &mdash; &laquo;&nbsp;Qu&rsquo;est-ce que l&rsquo;Is&#x1E25;an&nbsp;?&nbsp;&raquo; Il r&eacute;pondit&nbsp;: &laquo;&nbsp;Que tu adores All&acirc;h comme si tu Le voyais&nbsp;; car si tu ne Le vois pas, Lui te voit.&nbsp;&raquo;

Ibn &#x201B;Arabi &ndash; L&rsquo;extinction dans la contemplation, traduction Michel V&acirc;lsan.

Il n’est pas si difficile d’entrer ces entités. Il existe des éditeurs efficaces qui facilitent la saisie ; et même le plus rudimentaire d’entre-eux permet une mise-à-jour massive en une seule action (fonction "rechercher et modifier") sur l’ensemble d’un fichier.


Notes