Accueil
 chercher             Plan du site             Info (English version) 
L'histoire de XML s'écrit en ce moment même. XMLfr vous aide à la suivre et à en dégager les tendances.Les listes de discussions XMLfr sont à votre disposition pour réagir sur nos articles ou simplement poser une question.Si vous ètes passionnée(e) par XML, pourquoi ne pas en faire votre métier ?XMLfr n'est heureusement pas le seul site où l'on parle de XML. Découvrez les autres grâce à XMLfr et à l'ODP.Les partenaires grâce auxquels XMLfr peut se développer.Pour tout savoir sur XMLfr.XMLfr sans fil, c'est possible !Pour ceux qui veulent vraiment en savoir plus sur XML.L'index du site.
 Si vous vous posez une question, vous n'êtes peut-être pas le premier...Les traductions en français des bibles XML.Ces articles sont des références dans leur domaine.Tout ce qu'il faut savoir pour démarrer sur un sujet XML...


XML est-il l'ASCII du XXIème siècle ?

De nombreux analystes assurent que XML est une technologie de même nature que l'ASCII, ce qui leur attire souvent les foudres ses informaticiens pour lesquels ces deux technologies ne sont pas de même niveau. Cet article cherche à montrer comment ces deux visions sont compatibles et pourquoi il est important de ne pas s'arrêter en si bon chemin.

Eric van der Vlist, Dyomedea (vdv@dyomedea.com).
vendredi 19 janvier 2001

Avant de fustiger l'analyste qui compare XML à l'ASCII en disant que le marché lié à XML est aussi difficile à estimer que celui qui est lié à l'ASCII, faisons un bref retour en arrière et demandons-nous si nous n'avons pas tendance à sous-estimer l'importance de ce standard.

Au début des années 60, il n'y a pas de codification standard permettant de représenter des caractères sur des types différents de calculateurs et les communications numériques, quand elles ne se font pas en morse, utilisent le code sur 5 bits inventé en 1875 par Emile Baudot.

Transmettre, dans ces conditions, un document entre deux ordinateurs tient donc de la gageure et l'on peut dire que c'est l'ASCII, officialisé en 1963 sous forme d'un code à 7 bits pour manager un "bit de parité", et ses dérivés qui a rendu possible le développement des échanges de documents entre ordinateurs.

Comparer XML à l'ASCII est donc un bel éloge !

En y regardant de plus près, la démarche entre ces deux "inventions" est-elle tellement différente ?

Avant l'utilisation de l'ASCII, les ordinateurs ou calculateurs utilisaient déjà tous un moyen identique pour représenter des informations sous forme binaire et l'on pouvait donc considérer qu'ils pouvaient déjà communiquer puisqu'ils pouvaient déjà échanger une suite de 0 et de 1 représentant un document et plus généralement des informations.

La syntaxe de base (0/1) était donc déjà commune, le problème étant que des ordinateurs différents (et même des applications différentes) n'accordaient pas la même signification à ces 0 et à ces 1.

ASCII représente donc la première étape pour standardiser la signification des séquences de bits représentant les caractères.

Cette étape est particulièrement importante parce que ce premier niveau de standardisation est suffisant pour que deux utilisateurs humains, pour peu qu'ils parlent la même langue, puissent échanger des informations sans trop de risque d'erreurs.

S'il peut être suffisant pour communiquer entre humains, ce type de communication repose sur des modes de pensée et des conventions sémantiques que l'on ne sait toujours pas implémenter au niveau de programmes informatique et, sans autre convention, l'ASCII s'est avéré insuffisant pour communiquer des informations entre applications.

Le principe est donc le même: de la même manière que l'ASCII est un standard venant structurer les suites de 0 et de 1 en leur affectant une signification (et en définissant des suites de bits invalides), XML est une recommandation structurant des suites de caractères en leur attribuant une signification (et en définissant des règles de conformité).

Dans les deux cas, il s'agit d'une spécification facilitant la communication entre machines en standardisant la manière dont un flux de 0 et de 1 doit être compris de part et d'autre.

Il s'agit donc de deux pas successifs tendant vers un même objectif, suivant la même démarche et riches du même potentiel et l'on peut déjà voir que le mouvement ne s'arrêtera pas là.

De la même manière que l'ASCII est insuffisant pour communiquer entre applications sans conventions préétablies sur la structure des informations échangées, XML est insuffisant pour communiquer entre applications sans conventions préétablies sur la signification –cette sémantique qui devient un leitmotiv-- des informations échangées.

La prochaine étape se dessine donc déjà à l'horizon, c'est l'enjeu de la vision du "Web sémantique" et de projets aussi différents que ebXML ou les Topic Maps, et la recommandation du W3C pour la franchir s'appelle RDF.

D'un point de vue technique, ce qui est passionnant et confirme qu'il s'agit bien de démarches de même nature, c'est que ces étapes et technologies s'appuient non seulement les unes sur les autres, mais ces formats peuvent être utilisés pour se représenter eux-mêmes et mutuellement.

S'il est en effet évident que XML s'appuie sur ASCII (et sur les encodages plus modernes qui sont ses successeurs) et que RDF s'appuie sur XML puisqu'il s'agit d'un vocabulaire XML, d'autres combinaisons plus insolites peuvent en effet être envisagées.

Ce type de "bouclage arrière" n'est pas nouveau, ASCII peut être utilisé pour représenter sa propre définition binaire comme le montre l'utilisation de la commande Unix "od":

$ echo "Quoi? mon pere, est-il vrai qu'un coquin vous menace ?"|od -txC
0000000 51 75 6f 69 3f 20 6d 6f 6e 20 70 65 72 65 2c 20
0000020 65 73 74 2d 69 6c 20 76 72 61 69 20 71 75 27 75
0000040 6e 20 63 6f 71 75 69 6e 20 76 6f 75 73 20 6d 65
0000060 6e 61 63 65 3f 0a
0000066
$

Et la fameuse table ASCII s'auto décrit, en ASCII, en précisant en ASCII ses valeurs et la signification de ses caractères spéciaux.

ASCII Table (7-bit)
 
Decimal  Octal  Hex   Binary    Value
-------  -----  ---   ------    -----
000      000    000   00000000  NUL (Null char.)
001      001    001   00000001  SOH (Start of Header)
002      002    002   00000010  STX (Start of Text)
003      003    003   00000011  ETX (End of Text)
.../...
121      171    079   01111001  y
122      172    07A   01111010  z
123      173    07B   01111011  {
124      174    07C   01111100  |
125      175    07D   01111101  }
126      176    07E   01111110  ~
127      177    07F   01111111  DEL

De son côté, XML est un meta-langage permettant de définir des structures arborescentes.

On peut donc utiliser XML pour décrire les structures présentes dans les documents texte même lorsque ces structures n'ont rien à voir avec la syntaxe XML.

Si l'on considère, par exemple, le texte suivant:

Quoi? mon père, est-il vrai qu'un coquin vous menace?
Qu'il n'est point de bienfait qu'en son âme il n'efface,
Et que son lâche orgueil, trop digne de courroux,
Se fait de vos bontés des armes contre vous?

Plusieurs structures peuvent être exprimées en XML pour décrire ce document.

Une des plus simple consisterait à représenter la valeur de chaque caractère dans un élément:

<document>
<c>51</c><c>75</c>6f</c><c>69</c>.../...
</document>

Mais l'on peut également s'intéresser au découpage en mots ou en lignes (une solution simple que j'utilise fréquemment pour manipuler des extraits de documents texte dans des transformations XSLT):

<document>
<l>Quoi? mon père, est-il vrai qu'un coquin vous menace?</l>
<l>Qu'il n'est point de bienfait qu'en son âme il n'efface,</l>
<l>Et que son lâche orgueil, trop digne de courroux,</l>
<l>Se fait de vos bontés des armes contre vous? </l>
</document>

Cette capacité à représenter en XML les structures qui nous intéressent dans un document peut également être utilisée pour représenter en XML les informations présentes dans un document XML, ce type d'introspection pouvant être utile pour traiter des éléments d'information ignorés des parseurs.

J'ai eu ainsi l'occasion de montrer comment le document:

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE preparation [
<!ENTITY include_tools SYSTEM "tools.xml">
<!ENTITY include_products SYSTEM "products.xml">
<!ENTITY include_parts SYSTEM "parts.xml">
]>
<!-- Simple example of file using external parsed entities -->
<preparation>
&include_tools;
&include_products;
&include_parts;
</preparation>

pouvait être représenté par:

<?xml version="1.0" encoding="utf-8"?>
<str:document xmlns:str="http://4xt.org/ns/xmlstructure">
<str:prolog>
<str:X-M-L-Decl str:version="1.0" str:encoding="iso-8859-1"/>
<str:doctype str:name="preparation">
<str:externalEntityDefinition
    str:name="include_tools" str:systemId="tools.xml"/>
<str:externalEntityDefinition
    str:name="include_products" str:systemId="products.xml"/>
<str:externalEntityDefinition
    str:name="include_parts" str:systemId="parts.xml"/>
</str:doctype>
<str:comment> Simple example of file using
             external parsed entities </str:comment>
</str:prolog>
<str:body>
<preparation>
<str:entity str:name="include_tools"/>
<str:entity str:name="include_products"/>
<str:entity str:name="include_parts"/>
</preparation>
</str:body>
<str:epilog/>
</str:document>

ce qui permet d'avoir accès aux définitions d'entités externes qui sont normalement résolues par les parseurs et Jonathan Borden, sur les traces des travaux SGML/Groves a formalisé un vocabulaire permettant décrire l'infoset, c'est à dire toutes les "productions" XML présentes dans un document.

Le même type d'exercice peut être réitéré avec RDF.

RDF est un vocabulaire XML permettant d'exprimer des assertions, c'est à dire des relations entre objets abstraits.

Un document et les caractères qui le composent peuvent être considérés comme des objets abstraits et notre texte pourraient être représenté par:

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns #">
<document rdf:about="#mon-document">
<caractères>
<rdf:Seq>
<rdf:li rdf:resource="http://dyomedea.com/rdf/ascii/51"/>
<rdf:li rdf:resource="http://dyomedea.com/rdf/ascii/75"/>
<rdf:li rdf:resource="http://dyomedea.com/rdf/ascii/6f"/>
<rdf:li rdf:resource="http://dyomedea.com/rdf/ascii/69"/>
<rdf:li rdf:resource="http://dyomedea.com/rdf/ascii/3f"/>
<rdf:li rdf:resource="http://dyomedea.com/rdf/ascii/20"/>
.../...
</rdf:Seq>
</caractères>
</document>
</rdf:RDF>

On pourrait se livrer au même exercice et représenter les données présentes (infoset) dans un document XML sous forme RDF, quand aux capacités d'introspection d'un document RDF, elles sont en quelque sorte prises en compte par la recommandation RDF qui fourni de nombreuses variantes de syntaxe dont certaines permettent de manipuler les assertions elles-mêmes comme des objets.

Tout ce passe donc s'il s'agissait de pas technologiques permettant de voir les mêmes informations avec des vues et des grossissements différents et si bits étaient des particules élémentaires, l'ASCII serait le niveau atomique, XML le niveau moléculaire et RDF les chaînes moléculaires organiques !

Chaque niveau permettant ici de franchir une étape en terme d'abstraction ouvre de nouvelles possibilités d'échange entre applications.

Notre analyste avait donc raison de comparer XML et ASCII et si notre informaticien a réagi violemment, c'est peut être qu'il a une vision trop large et trop floue de XML.

Lorsque l'on parle d'ASCII, on a pris l'habitude de séparer la table ASCII des applications utilisant ce code, parmi lesquelles ont pourrait classer tous les langages informatiques, tous les systèmes d'exploitation non graphiques et pratiquement toutes les applications utilisant du texte que personne ne penserait à classer sous une rubrique unique.

Au fur et à mesure que XML s'étend, il devient de même illusoire de vouloir maîtriser en même en connaître toutes les applications.

Apprenons donc à considérer XML comme une technologie de base indépendante des applications qui l'utilisent, ce n'est qu'à ce prix que nous pourrons dissiper la réputation de complexité qui l'accompagne: ce sont les applications que l'on en fait qui sont complexes !

Copyright 2001, Eric van der Vlist.


 

Mots clés.



L'histoire de XML s'écrit en ce moment même. XMLfr vous aide à la suivre et à en dégager les tendances.


Les documents publiés sur ce site le sont sous licence "Open Content"
Conception graphique
  l.henriot  

Conception, réalisation et hébergement
Questions ou commentaires
  redacteurs@xmlfr.org