Introduction au langage XML

Notion d'entité du langage XML

Jusqu'à présent, nous avons deux types d'outils : l'outil « élément » ou « balise » et l'outil « attribut » qui s'ancre sur l'outil « élément ». Ces deux outils — au moins dans les usages que nous avons vus — fonctionnent sur des séquences de caractères et donc sur « du texte », et principalement sur du texte en code ASCII (American Standard Code for Information Interchange) basique, c'est-à-dire sans signes diacritiques.

La notion d'entité

La notion d'entité permettra de traiter tous les objets qui :

  • sont du texte mais comportent des signes diacritiques ;

  • sont du texte mais seront traités comme des touts insécables ;

  • ne seront pas du texte.

Comme on le voit, la notion d'entité recouvre un ensemble d'objets très hétérogènes.

Les caractères en ASCCI étendu ou en Unicode

Le code de caractères qui s’est imposé dans les années 1960. Il comportait 128 signes (ponctuation, caractères spéciaux comme &, # ou =, chiffres, lettres majuscules et minuscules sans signes diacritiques, caractères de contrôle)

Le code ASCII étendu s'imposa dans les années 1970. Il comportait — outre les signes de l'ASCII basiques — les lettres majuscules et minuscules avec les signes diacritiques occidentales les plus « courantes » (é, è, ü, å, ñ, etc.), quelques symboles utiles en mathématiques (quelques lettres grecques, ∞, etc.) et des composants de bords de tableaux comme ╬ ou ╗).

Le langage Unicode s'est imposé à la fin des années 1980. Il permet de représenter plus de 100 000 caractères et de coder ainsi la plupart des systèmes graphiques des langues du monde. Le standard actuel est UTF (Unicode Transformation Format).

Les entités prédéfinies et les représentations des caractères à signes

Il existe 5 entités prédéfinies pour remplacer des caractères réservés de XML (chevron, esperluette, guillemets) dans le document XML (nous verrons d'autres entités prédéfinies par la suite).

Les entités prédéfinies

ExempleL'utilisation de ces entités dans un fichier XML

Exemples d'entités prédéfinies

Il est également possible de définir des entités caractères pour n'importe quel caractère en utilisant le code hexadécimal du caractère. Pour les utiliser dans le fichier XML, il nous faut déclarer cette entité dans la DTD avec la syntaxe suivante :

<!ENTITY nom_de_l_entite "&#xCODEHEXA;">

Par exemple <!ENTITY ccedille "&#x00E7;">

La représentation des caractères à signe diacritiques

  • é : &eacute; exemple : médecin → m&eacute;decin

  • è : &egrave; exemple : grève → gr&egrave;ve

  • ê : &ecirc; exemple : tête → t&ecirc;te

  • ü : &uuml; exemple : bücher → b&uuml;cher

  • å : &aring; exemple : består → best&aring;r

  • č : &#269; exemple : počasí → po&#269;as&iacute;

  • ñ : &ntilde; exemple : niño → ni&ntilde;o

  • ę : &#281; exemple : męski → m&#281;ski

  • ç : &ccedil; exemple : façon → fa&ccedil;on

Vous remarquerez que l'on a deux types de codage :

Un codage par mot mnémotechnique, c'est le cas de è : &egrave;

Et de ñ : &ntilde;

Un codage par nombre, c'est le cas de č : &#269; et ę : &#281;

Pourquoi cette différence ?

Parce-que nous sommes en Europe occidentale ; è et ñ sont courants, alors que le č tchèque et le ę polonais le sont moins. Cependant, è peut toujours être représenté par son codage numérique : 138 en décimal et 8A en hexa en ASCII étendu et 232 en décimal et E8 en hexa en unicode

En fait, les codages numériques peuvent être soit en « décimal » (comme ci-dessus) ou en « hexa-décimal » (cf. ci-après).

Caractère - code décimal et code hexadécimal

Nous venons de voir que le code hexadécimal du caractère précédé de &#x et suivi de ; pouvait aussi être utilisé. Mais qu'est-ce que le code hexadécimal (en abrégé, on dit « hexa ») ?

Vous êtes habitués à compter en décimal avec 10 chiffres, de 0 à 9, mais c'est très mauvais pour l'informatique. Les ordinateurs comptent en binaire avec deux chiffres, 0 et 1, mais c'est peu pratique pour les humains. En informatique, on utilise l'hexadécimal qui recourt à 16 chiffres : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F (les chiffres sont des signes conventionnels ; ici on « détourne des lettres pour en faire des chiffres !). En hexa, après 9, c'est A, et après F c'est 10 ; après 19, c'est 1A.

SyntaxePour utiliser le codage hexa dans un fichier XML, il faut le déclarer cette entité dans la DTD avec la syntaxe suivante :

<!ENTITY nom_de_l_entite "&#xCODEHEXA;">

On distingue deux types d'entités en fonction de la déclaration dans le fichier XML, les entités internes et les entités externes :

– les entités internes sont définies dans le document XML et ne sont utilisables qu'en son sein ;

– les entités externes sont définies dans un autre fichier que le document XML et ne peuvent être mobilisées dans le document XML que via une adresse URL (Uniform Resource Locator).

Tableau récapitulatif des entités

Parsé signifie composé de texte (rappel : parsing en anglais signifie faire l'analyse grammaticale). Non-parsé signifie composé d'autres choses que de texte (image, son, video...)

Nous allons voir avec des exemples concrets comment ces entités peuvent être utilisées dans le document XML

Les entités internes

Les entités internes sont définies soit :

- dans la DTD et utilisée dans la DTD elle-même (entités paramètres)

- dans le document XML (entités générales).

Les entités générales sont des entités analysables destinées uniquement à être utilisées dans le document.

Syntaxe de déclaration dans la DTD :

<!ENTITY nom_de_l_entite “texte de remplacement“>

Syntaxe dans le fichier XML

& nom_de_l_entite;

ExempleEntités générales internes

Les entités générales internes

Entités paramètres internes

Les entités paramètres internes permettent d'utiliser des entités dans les DTD elles-mêmes

Syntaxe de déclaration dans la DTD :

<!ENTITY % nom_de_l_entite “texte de remplacement”>

Syntaxe dans le fichier XML

%nom_de_l_entite;

Les entités paramètres internes

Entités générales externes

Les entités externes permettent d'inclure des données (ou contenus) dans les fichiers externes par rapport au document XML

La déclaration dans la DTD d'une entité externe s'effectue comme suit :

<!ENTITY nom_d_l_entite SYSTEM "URI">

La syntaxe se déclare dans le fichier XML

&nom_de_l_entite;

Entités générales externes analysables/parsables

Les entités générales externes analysables/parsables

Commentaire :

Dans cet exemple, un corpus peut être constitué de deux documents : header_du_corpus.xml et corps_du_corpus.xml. Ce sont deux fichier xml qui se trouvent dans le dossier archives. Le fichier corpus a rassemblé ces deux documents en utilisant des entités générales analysables/parsables. Le parseur XML, suivant le chemin indiqué, importe les fichiers header_du_corpus.xml et corps_du_corpus.xml dans le corpus et les analyse comme un fichier xml bien-formé.

Entités générales externes non-analysables/non-parsables

Les entités non-analysables sont utilisées notamment pour des fichiers audios, vidéos ou images.

La déclaration d'une entité non-analysable s'effectue en spécifiant le type de données de l'entité par l'intermédiaire du mot clé NDATA. Chacune de ces entités est associée à une notation, identifiée par une chaîne de caractères par l'intermédiaire de l'instruction <!NOTATION...>.

La déclaration dans la DTD d'une entité générale externe non-analysable s'effectue comme suit :

<!ENTITY nom_d_l_entite SYSTEM "URI" NDATA NOTATION>

La syntaxe se déclare dans le fichier XML

&nom_de_l_entite;

Entités paramètre externes

Exemple d'utilisation d'une entité type photo dans le document XML

Les entités paramètres externes non-analysables/non-parsables

Exemple d'utilisation d'une entité type vidéo dans le document XML

Les entitiés paramètres externes non-analysables/non-parsables (video)

ComplémentLa notion d'OLE - Object linking and embedding

Lorsqu'un objet est hétérogène par rapport au contexte dans lequel on veut l'insérer (par exemple : un schéma ou un dessin dans une page sous traitement de texte ou dans une diapositive ou encore une image ou un son dans une diapositive), deux processus sont possibles :

  • le processus d'enchâssement (embedding) ; l'objet est alors inséré dans le document ;

  • le processus de liage (linking) ; l'objet reste dans son environnement et est relié au document par son adresse (qui permet d'aller le chercher à chaque édition).

On appelle OLE (object linking and embedding) ce processus et, par extension, les objets soumis à ce processus.

Comment détecter le statut d'un OLE ?

Enregistrons une image dans un lieu donné de l'ordinateur.

  • Ouvrons une page dans un traitement de texte. Allons chercher l'image et collons-la dans la page. Puis allons effacer l'image source. L'image existera encore dans notre page de traitement de texte → l'image a été enchâssée (embedded).

  • Ouvrons une page dans un éditeur de pages web. Allons chercher l'image et collons-la dans la page. Puis allons effacer l'image source. L'image disparaîtra de la page web → l'image a été liée (linked).

Lorsque l'image n'est que liée, il n'y a que son adresse qui est dans le fichier de départ. Si l'image ne se trouve plus à cette adresse (parce qu'elle a été effacée ou parce qu'elle a été déplacée), il devient impossible de la trouver pour l'afficher à chaque édition.

Nous allons voir dans les prochains cours

  • Quelles sont les spécificités du balisage des corpus et des DTD associées ?

  • Quelles sont les spécificités du balisage des dictionnaires et des DTD associées ?

  • Quelles sont les spécificités du balisage des catalogues de médiathèque et des DTD associées ?

PrécédentPrécédentSuivantSuivant
AccueilAccueilImprimerImprimerRéalisé avec Scenari (nouvelle fenêtre)