Brevet FR2883652A1 — publié le 20060929

La présente invention se rapporte à l'accès à une sous-balise lors de la lecture d'un fichier écrit en langage de balisage. Elle trouve une application générale dans le traitement de flots de données écrit en langage de balisage et plus particulièrement en XML, acronyme de eXtensible Markup Language , c'est-à-dire langage à balise extensible. XML est un langage informatique permettant de mettre en forme des documents grâce à des balises (Markup). En pratique, XML est un format de description de données et non de leur représentation ou de leur affichage. Le format XML est de plus en plus utilisé pour le stockage et la transmission de données numériques. Par exemple, pour représenter un album de photographies. Cela n'est pas sans générer un certain nombre de problèmes. Notamment, lorsque la quantité de données à représenter est importante. 20 L'accès à ces données peut alors prendre du temps. C'est plus particulièrement le cas lorsqu'on n'a besoin que d'une souspartie de ces données, par exemple une photographie numérique parmi un album de photographies. Plutôt que l'accès à l'ensemble des photographies, il se pose généralement le problème de savoir si telle photographie particulière est contenue dans l'album (par exemple pour vérifier si la personne qui en fait la requête est autorisée à visualiser cette photographie). XML n'est pas un format indexé. Il n'est donc pas possible d'accéder directement aux informations concernant uniquement une photographie particulière. Plus grave, essayer de le faire ferait immanquablement manquer les déclarations d'espace de nommage ( namespaces ) englobant ces données. Une solution connue consiste à utiliser une base de données afin d'indexer automatiquement les données XML. Toutefois, cette solution est lente et contraignante. Lente parce que l'accès à un simple fichier, fût- il grand, est plus rapide que l'accès à une base de données, même performante. Contraignante, parce qu'il est plus difficile de mettre à jour la base entière qu'un simple fichier. Par ailleurs, un fichier peut être plus facilement partagé entre plusieurs ordinateurs, dans un système classique de répartition de charge, qu'une base de données, qui forme au contraire un goulot d'étranglement. Il est donc utile de pouvoir indexer facilement un fichier XML. Toutefois, pour des raisons de facilité d'utilisation, cette indexation doit être comprise directement dans le fichier XML et non dans un fichier séparé. Par ailleurs, le fichier XML ainsi indexé doit pouvoir être lisible par tout analyseur XML, même non compatible avec un index (dans ce cas, évidemment, l'indexation ne sera pas disponible, mais les données seront entièrement lisibles comme si l'index n'était pas présent). Le Demandeur s'est posé le problème d'ajouter un tel index à un fichier XML. La présente invention apporte justement une solution à ce problème. Elle porte sur un procédé d'accès à une sous-balise lors de la lecture d'un fichier écrit en langage de balisage. Selon une définition générale de l'invention, le procédé est caractérisé en ce qu'il comprend les étapes suivantes: 1) en réponse à une requête d'accès à une sous-balise choisie contenue dans une balise mère et accompagnée d'un identifiant, vérifier dans le fichier, l'existence d'un index associé à la balise mère et représenté sous la forme d'un tableau contenu dans ledit fichier et comprenant, pour chaque sous-balise de la balise mère, au moins une ligne de correspondance entre un identifiant attribué à la sous-balise et au moins la position de la sous-balise dans le fichier, 2) en cas de vérification positive, aller dans le tableau et comparer l'identifiant de la requête avec les identifiants dudit tableau selon une loi de recherche et de comparaison choisie, 3) en cas de comparaison positive, obtenir la position de la sous-balise et accéder directement à la sous-balise à partir de ladite position ainsi obtenue. Selon une réalisation, les identifiants sont rangés dans l'index selon 5 un ordre choisi et la loi de recherche et de comparaison est du type dichotomique. En pratique, l'ordre de rangement des identifiants est de type croissant. Selon une autre réalisation, il est prévu au préalable de créer un 10 index selon les étapes suivantes: i) créer un tableau comprenant, pour chaque sous-balise, au moins une ligne de correspondance entre un identifiant attribuée à la sous-balise et au moins la position de la sousbalise dans le fichier, ii) trier les lignes de correspondance selon un ordre choisi en 15 fonction de l'identifiant, et iii) écrire en langage de balisage l'index à partir du tableau ainsi créé dans le fichier à un endroit choisi. En pratique, la vérification de l'existence d'un index consiste à vérifier la présence d'une balise commentaire écrite en langage de balisage et 20 apte à contenir ledit index. Un tel index stocké dans une balise commentaire permet de ne pas gêner les analyseurs (parseurs) ne comprenant pas l'invention. L'index est donc automatiquement ignoré par de tels parseurs. Par exemple, la balise commentaire est placée en fin du fichier. En variante, la balise commentaire est la première sous-balise de la balise mère. Selon une autre réalisation, la vérification de l'existence d'un index consiste à vérifier la présence d'un attribut prédéterminé dans la balise mère. Selon encore une autre réalisation, dans chaque ligne de correspondance l'identifiant est sous une forme réduite selon l'application d'une loi de réduction, la loi de recherche et de comparaison utilisant ladite loi de réduction. En pratique, la loi de réduction est stockée dans le fichier. La présente invention a égalemènt pour objet, un dispositif d'accès à une sous-balise lors de la lecture d'un fichier écrit en langage de balisage. Selon un autre aspect de l'invention, le dispositif comprend: -des moyens de vérification aptes, en réponse à une requête d'accès à une sous-balise choisie contenue dans une balise mère accompagnée d'un identifiant, à vérifier dans le fichier, l'existence d'un index associé à la balise mère et représenté sous la forme d'un tableau contenu dans ledit fichier et comprenant, pour chaque sous-balise de la balise mère, au moins une ligne de correspondance entre un identifiant attribué à la sous-balise et au moins la position de la sous-balise dans le fichier; -des moyens de traitement aptes, en cas de vérification positive, à aller dans le tableau et à comparer l'identifiant de la requête avec les identifiants dudit tableau, selon une loi de recherche et de comparaison choisie; et - des moyens d'accès aptes en cas de comparaison positive à obtenir la position de la sous-balise et à accéder directement à la sous-balise à partir de ladite position ainsi obtenue. Selon une réalisation, le dispositif comprend en outre des moyens de création aptes à créer un tableau comprenant pour chaque sous-balise au moins une ligne de correspondance entre un identifiant attribué à la sousbalise et au moins la position de la sous-balise dans le fichier, à trier les lignes de correspondance selon un ordre choisi en fonction de l'identifiant et à écrire en langage de balisage l'index à partir du tableau ainsi créé dans le fichier à un endroit choisi. La présente invention a également pour objet un support d'information lisible par un système informatique caractérisé en ce qu'il comporte des instructions d'un programme informatique permettant la mise en oeuvre du procédé d'accès visé ci avant, lorsque ce programme est chargé et exécuté par un système informatique. La présente invention a également pour objet un support d'informations amovible partiellement ou totalement lisible par un système informatique, caractérisé en ce qu'il comporte des instructions d'un programme informatique permettant la mise en oeuvre d'un procédé d'accès visé ci avant lorsque le programme est chargé et exécuté par un système informatique. La présente invention a enfin pour objet un programme d'ordinateur stocké sur un support d'informations, ledit programme comportant des instructions permettant la mise en oeuvre d'un procédé d'accès visé ci avant lorsque le programme est chargé et exécuté par un système informatique. D'autres caractéristiques et avantages de l'invention apparaîtront à la lumière de la description détaillée et des dessins dans lesquels: -la figure 1 est un organigramme illustrant l'algorithme de recherche d'une sous-balise lors de la lecture d'un fichier XML selon l'invention -la figure 2 est un organigramme illustrant la recherche par dichotomie selon l'invention; - la figure 3 est un organigramme illustrant les étapes de base du procédé selon l'invention; - la figure 4 est un organigramme illustrant l'algorithme de création d'un index selon l'invention - la figure 5 est un organigramme illustrant l'algorithme d'écriture 20 de l'index selon l'invention; et - la figure 6 représente schématiquement les ressources physiques d'un ordinateur apte à mettre en oeuvre l'invention. En référence à la figure 1, on a représenté un organigramme illustrant les étapes d'un algorithme de recherche d'une sous-balise (par exemple une image ou photographie numérique) lors de la lecture d'un fichier XML (par exemple contenant un album de photographies). En pratique, chaque photographie numérique ou image possède un identificateur unique (la clef, dans la suite de l'algorithme). Pour la dernière image du fichier, l'identification a par exemple la valeur 4191 bl dd-f302-6a48-a99b-2366f4d0ec1 b . Cette valeur identifie l'image de manière unique parmi tous les albums, et donc en particulier pour celui considéré. On considère pour dérouler l'algorithme qu'on cherche à obtenir les données numériques concernant cette image particulière. On sait qu'il s'agit de la dernière image, mais le parseur ou l'analyseur de l'ordinateur ne le saura qu'en parcourant la totalité du fichier XML 5 pour aboutir finalement sur cette image. Le procédé démarre d'un fichier XML (étape El), ouvre le fichier (Etape E2) et va à la fin du fichier (Etape E3). Conformément à l'étape E4, le procédé dans un mode de réalisation préféré lit le fichier XML par la fin (puisque c'est là que se trouve l'index). Conformément à l'étape E5, le procédé vérifie que le fichier se termine bien par un commentaire, sinon le procédé fait une recherche sans index (étape E6). Conformément à l'étape E7, le procédé lit le champ précédant la fin de commentaire et vérifie (Etape E8) qu'il est égal à http://crf. canon. fr/oml/xml- index. Cette URI indique en effet la présence d'un index au format spécifié par l'invention. Le procédé met en place une recherche sans index dans le cas contraire. Arrivé à cette étape, le procédé sait qu'on a bien un index conforme au format selon l'invention. Conformément à l'étape E9, le procédé lit le champ précédent. II s'agit du pointeur (de la distance relative) vers le début de l'index. Conformément à l'étape E10, le procédé accède directement au début de l'index, et lit le champ suivant (Etape E11). Conformément à l'étape E12, le procédé vérifie qu'il s'agit d'un 25 commentaire ouvrant. Dans la négative, le procédé met en place une recherche sans index (Etape E13). Conformément à l'étape E14, le procédé vérifie que le champ suivant est l'URI http://crf.canon.fr/oml/xml-index (optionnel). Cette étape a pour fonction de doubler la vérification au cas où l'index aurait été corrompu lors de la première vérification. Le procédé lit alors successivement la taille o du champ offset, la taille c du champ clef, et le nombre n d'enregistrements. L'index étant trié par clefs croissantes, le procédé effectue alors selon l'étape E15 une recherche par dichotomie pour (éventuellement) trouver la clef recherchée. Le processus est alors répété jusqu'à ce que le procédé tombe sur la 5 clef (Etapes E16 ou E18) ou sur un intervalle nul correspondant à une recherche infructueuse (Etapes E16 et E17). La recherche dichotomique est en 0(log(n)) au lieu de 0(n) pour la recherche séquentielle, c'est-à-dire qu'elle est nettement plus rapide parce qu'elle nécessite moins de comparaisons. Les clefs et les offsets étant tous de même taille, il est relativement facile de pointer sur n'importe quelle entrée de l'index. Le procédé retourne l'offset de la clef, si il l'a effectivement trouvée. Sinon il retourne la valeur zéro (Etape E17). Le procédé accède directement à la balise recherchée via l'offset 15 obtenu ci-dessus (Etape E18). En référence à la figure 2, on a décrit en détail, la recherche par dichotomie. Les étapes initiales E50 à E56 consistent à définir le début du fichier P1 (Etapes E50), la fin du fichier P2 (Etape E52), et le milieu du fichier Pm contenant l'index (Etapes E54 et E56). La recherche par dichotomie accède au milieu du fichier contenant l'index et lit l'entrée correspondante Pm (Etape E58). Si la clef du milieu du fichier correspond (Etape E60) à la clef recherchée (égalité des identifiants), l'offset (décalage) correspondant est renvoyé (Etape E62). En cas d'inégalité, suivant que la clef du milieu est plus grande ou plus petite que la clef à rechercher (Etape E64), le procédé continue la recherche entre le début et le milieu (Etape E70) ou le milieu et la fin du fichier (Etape E82). Le processus est alors répété jusqu'à ce que le procédé aboutisse à la clef à rechercher (égalité des identifiants) (Etapes E80 ou E84) ou sur un intervalle nul (Etape E88). L'algorithme décrit en référence à la figure 1 permet donc d'accéder directement à une balise XML. Dans l'exemple, une fois l'offset de la balise connu, le procédé accède directement sur la dernière balise IMG , celle dont l'attribut CONTENT ID contient la valeur 4191 bl ddf302-6a48-a99b-2366f4d0ec1 b . En pratique, l'algorithme est modifié pour fonctionner avec les espaces de nommage ( namespace ) XML. Les namespaces XML permettent à deux utilisateurs de créer des balises de même nom.. Le conflit est évité en préfixant ces balises par un préfixe différent. Par exemple: Le problème pourrait à nouveau se poser de deux utilisateurs définissant le même namespace. Pour résoudre ce problème définitivement, un namespace est défini de manière unique par une URI. C'est l'URI (par exemple http://crf. canon. fr/ns/one ), et non sa référence (par exemple namespacel ) qui est utilisée pour toutes les comparaisons. Ces URls de nommage se définissent elles-mêmes sur une balise. Par exemple, ci-dessous, on définit sans ambiguïté les deux préfixes namespacel et namespace 2 : Pour gérer les namespaces correctement, il est nécessaire de les analyser (parser). On insère donc entre les étapes E17 et E18 précédentes, la nouvelle étape E19 suivante. Cette étape permet de gérer les namespaces. Ainsi selon l'étape E19, le procédé lit comme classiquement le fichier XML depuis le début jusqu'au commentaire suivant, qui indique le début du point où il peut utiliser l'index sans avoir de problème avec les namespaces (puisque désormais il a lu les déclarations de namespaces et qu'il connaît donc leurs valeurs) : En variante, la balise commentaire n'est pas seulement un indicateur de la possibilité d'utiliser l'index mais l'index lui-même. Ainsi, l'index lui-même peut être prévu dans la première sous- balise de la balise mère. Dans une autre variante, la présence de l'index peut aussi être indiquée par un attribut prédéterminé sur la balise mère comme par exemple: Dans l'exemple de l'album de photographies, toutes les images possèdent un identificateur unique. Or, ce peut ne pas être le cas, il peut falloir le construire, ou, du moins, en réduire la taille. En réduire la taille permet de réduire le nombre de comparaisons de caractères à effectuer. En effet, en utilisant l'index, il faut constamment comparer la valeur de la clef recherchée aux informations contenues dans l'index. Plus la clef est longue, plus cette comparaison prend du temps. Sur de gros fichiers, ce temps n'est pas négligeable. Or, la manière de réduire les clefs diffère selon les applications. Il n'est donc pas possible d'imposer une manière commune. Pour pallier cet inconvénient, le procédé selon l'invention insère directement dans le fichier XML la manière de réduire les clefs. En pratique, après la taille de l'index (cinquième champ à partir du début de l'index), on ajoute le champ suivant: Valeur de la fonction de réduction (c'est-à-dire de hachage) utilisée. Deux exemples de valeur de ce champ sont: hash="id.value()" hash="id.value()[1]+ id.value()[-1]" Dans le premier cas ci-dessus, il s'agit de la fonction identité. Dans le second, on utilise comme valeur de hachage d'une clef son premier et son dernier caractère. En pratique, on utilise le langage de programmation JavaScript pour 30 la définition des valeurs de hachage. Ce langage est bien connu de l'homme du métier et facilement disponible. En référence à la figure 3, on a décrit les étapes de base de l'algorithme de recherche d'une image particulière (sous-balise) lors de la lecture d'un fichier XML.. Ces étapes de base comprennent une étape E90 de définition d'une position P dans le fichier; une étape E92 de positionnement du fichier de ladite position P ainsi définie; une étape E94 de lecture de l'offset; une étape E96 de lecture de clef; et une étape de retour de données E98. En référence à la figure 4, on a décrit les étapes illustrant l'algorithme de création de l'index selon l'invention. Pour pouvoir utiliser l'index, il faut d'abord le créer. La création peut s'effectuer: soit lors de la génération des données XML; soit dans une étape de post-traitement, une fois toutes les données disponibles. On considère dans la suite uniquement le second algorithme. Le premier en est facilement déductible. On considère que le type d'élément à indexer est fourni par un chemin XPath. XPath est une syntaxe permettant de décrire le chemin d'accès à un noeud XML. Dans le cas de l'album de photographies numériques, on désire indexer toutes les balises IMG . Ces balises sont des sous-balises contenues dans la balise mère COLLECTION . On indique donc comme chemin XPath: "COLLECTION/IMG" Dans le même temps, on souhaite indiquer que la valeur des clefs 25 est contenue dans l'attribut: CONTENT ID . On ajoute cette information directement dans le chemin XPath, qui devient: "COLLECTION/IMG@CONTENT_ID" En variante, on utilise un second chemin XPath pour indiquer la valeur des clefs, car elles peuvent être stockées à un endroit différent du 30 document XML. Utiliser deux chemins XPath, l'un pour les balises, l'autre pour les clefs, présente en outre l'avantage que le premier chemin XPath peut désormais contenir des conditions. Par exemple, on peut utiliser: "COLLECTION/IMG[position() > 5]" pour indexer toutes les images, sauf les cinq premières. Si on désire réduire la taille des clefs, comme indiqué 5 précédemment, on fournira en outre une fonction de hachage. Munis de ces informations, il est désormais possible d'indexer cette souspartie du document XML. L'algorithme de création et index est le suivant: Conformément à l'étape E100, le procédé consiste à créer un 10 tableau t vide. Il contiendra l'index à la fin de l'algorithme. Dans l'étape E102, il est prévu d'initialiser la variable i à un. Conformément à l'étape E104, le procédé parcourt le document XML jusqu'à trouver la balise recherchée. Selon l'étape E106, le procédé note la position o de cette balise dans 15 le fichier (c'est-à-dire le nombre de caractères depuis le début du fichier, jusqu'au Selon l'étape E108, le procédé passe les attributs de cette balise et identifie (El 10) celui contenant la clef. Selon l'étape E112, le procédé lit la valeur c de l'attribut contenant la clef. Si nécessaire, il est prévu de remplacer c par la valeur hachée de c. Selon l'étape E114, le procédé stocke (o, c) dans le tableau t(]. Selon l'étape E116, il est prévu d'incrémenter i. Ensuite le procédé saute les balises filles ou sous-balises, lit la balise fermante (de la balise recherchée) et lit la balise suivante (Etape E118). S'il n'y 25 en a plus, le procédé continue en étape E122. S'il s'agit de nouveau d'une balise à indexer, le procédé continue à l'étape E106. Sinon, il continue en étape E118. Selon l'étape E122, le procédé trie le tableau t suivant l'ordre des clefs croissantes. Selon l'étape E124, le procédé écrit l'index. En référence à la figure 5, on a décrit l'algorithme d'écriture de l'index selon l'invention. L'écriture proprement dite de l'index s'effectue de la manière suivante dans un mode préféré de réalisation: Selon l'étape E200, il est prévu d'ouvrir le fichier XML Selon l'étape E202, le procédé se positionne à l'extrême fin du fichier. Il est prévu de vérifier qu'il n'y a pas déjà un index et le cas échéant, l'éliminer. Selon l'étape E204, le procédé note la position p courante (c'est-à-dire le début de l'index). Selon l'étape E206, le procédé écrit un commentaire ouvrant. Par exemple, le commentaire est http://crf.canon.fr/oml/xml-index (Etape E208). Le procédé écrit la longueur du champ offset (il s'agit de la longueur de la plus petite chaîne qui permettra de contenir le plus grand offset contenu dans le tableau t). Par exemple, la longueur du champ offset est égale à 7 (étape E210). Le procédé écrit la longueur du champ clef (Etape E212). Dans l'exemple de l'album photo, toutes les clefs sont de longueurs identiques. Le procédé écrit la taille du tableau t (Etape E214). Selon l'étape E222, le procédé parcourt le tableau t, et pour chaque élément, écrit l'offset, puis la clef. Selon l'étape E224, le procédé écrit la variable p. Selon l'étape E226, le procédé écrit le commentaire http://crf.canon.fr/oml/xml-index, et selon l'étape E228, il écrit le commentaire 25 fermant et ferme enfin le fichier (Etape E230). En variante, comme mentionnée en référence à la figure 1, l'écriture du commentaire s'effectue non pas à la fin du fichier mais dans la première sous-balise de la balise mère nécessitant une indexation. Dans une autre variante, l'écriture du commentaire s'effectue par l'écriture d'un attribut prédéterminé dans la balise mère nécessitant une indexation. Par souci de simplicité, ci-dessus, on a omis les écritures d'espace qui permettent de séparer les champs. Par ailleurs, si l'on veut que l'index soit facilement lisible par un être humain, il faut insérer un retour chariot: après l'en-tête de l'index; après chaque clef; à la fin de l'index. En outre, pour que tous les offsets aient la même taille, il faudra éventuellement rajouter des zéros en en-tête. Ainsi, l'offset 123 deviendra par exemple: 0000123 , ce qui permet d'avoir tous les offsets sur 7 caractères. On peut vouloir indexer plusieurs sous-parties d'un même document XML. Dans ce cas, on modifie l'index comme suit (d'autres variantes sont possibles) : L'index contient plusieurs sous-index. Un index maître permet de lister les différents sous-index. C'est l'index principal qui est contenu à l'extrême fin du fichier. Une représentation compacte de ces sous-index, qui tient dans un seul commentaire XML, est la suivante: É Commentaire ouvrant É http://crf. canon.fr/oml/xml-index É Taille du champ offset de l'index 1 É Taille du champ clef de l'index 1 É Taille de l'index 1 É Offset1,i É Clef1,i É Offset2,1 É Clef2,1 É É Offsetn,1 É Clefn,i É Taille du champ offset de l'index n É Taille du champ clef de l'index n É Taille de l'index n É Offset1,n É Clef1,n É Offset2,n É Clef2,n É Offsetn,n É Clefn,n É Offset du début de l'index 1 É Offset du début de l'index 2 É Offset du début de l'index n É Nombre d'index É http://crf.canon.fr/oml/xml-index É Commentaire fermant En référence à la figure 6, on a représenté les ressources physiques d'un appareil programmable 200 apte à mettre en oeuvre l'invention. L'appareil 200 comporte un bus de communication 202, auquel sont reliés: une unité centrale de traitement 203 (microprocesseur, CPU) qui commande les échanges entre les divers éléments de l'appareil; - une mémoire morte (ROM) 204 pouvant comporter les programmes de l'invention (Prog1, Prog2) ; une mémoire vive (RAM) 206; un disque dur 212 pouvant comporter les programmes précités; un clavier 210; une caméra numérique 201; un écran 208; un lecteur de disquette 214 adapté à recevoir une disquette 216 et à y lire ou à y écrire des documents traités ou à traiter selon l'invention; 30 - une interface de communication 218 reliée à un réseau de communication 220, par exemple le réseau Internet, l'interface étant apte à transmettre et à recevoir des documents. Le bus de communication 202 permet la communication et l'interopérabilité entre les différents éléments inclus dans l'appareil ou reliés à lui. La représentation du bus n'est pas limitative et, notamment, l'unité centrale est susceptible de communiquer des instructions à tout élément de l'appareil directement ou par l'intermédiaire d'un autre élément de l'appareil. Le code exécutable de chaque programme permettant à l'appareil programmable de mettre en oeuvre les traitements selon l'invention peut être stocké par exemple dans le disque dur 212 ou en mémoire morte 204. Selon une variante de réalisation, la disquette 216 peut contenir des documents ainsi que le code exécutable des programmes précités qui, une fois lu par l'appareil, est stocké dans le disque dur 212. Selon une autre variante de réalisation, le code exécutable des programmes peut être reçu par l'intermédiaire du réseau de communication, via l'interface 106, pour être stocké de façon identique à celle décrite précédemment. Les disquettes peuvent être remplacées par tout support d'information tel que, par exemple, un disque compact (CD ROM) ou une carte mémoire. De manière générale, un moyen de stockage d'information, visible par un ordinateur ou par un microprocesseur, intégré ou non à l'appareil, éventuellement amovible, est adapté à mémoriser un ou plusieurs programmes dont l'exécution permet la mise en oeuvre du procédé selon l'invention. De manière plus générale, le ou les programmes peuvent être chargés dans un des moyens de stockage de l'appareil avant d'être exécutés. L'unité centrale 203 commande et dirige l'exécution des instructions ou portions de code logiciel du ou des programmes selon l'invention, instructions qui sont stockées dans le disque dur 212 ou la mémoire morte 204, ou bien dans les autres éléments de stockage précités. Lors de la mise sous tension, le ou les programmes qui sont stockés dans une mémoire non volatile, par exemple le disque dur 212 ou la mémoire ROM 204, sont transférés dans la mémoire vive RAM 206 qui contiendra alors le code exécutable du ou des programmes selon l'invention, ainsi que des registrespour mémoriser les variables des paramètres nécessaires à la mise en oeuvre de l'invention. Il convient de noter que l'appareil programmable comportant le 5 dispositif selon l'invention peut être également un appareil programmé. Cet appareil contient alors le code du ou des programmes informatiques, par exemple figé dans un circuit intégré à application spécifique (ASIC). REVENDICATIONS 1. Procédé d'accès à une sous-balise lors de la lecture d'un fichier écrit en langage de balisage, le procédé étant caractérisé en ce qu'il comprend les étapes suivantes: 1) en réponse à une requête d'accès à une sous-balise choisie contenue dans une balise mère et accompagnée d'un identifiant, vérifier dans le fichier, l'existence d'un index associé à la balise mère et représenté sous la forme d'un tableau contenu dans ledit fichier et comprenant, pour chaque sous-balise de la balise mère, au moins une ligne de correspondance entre un identifiant attribué à la sous-balise et au moins la position de la sous-balise dans le fichier, 2) en cas de vérification positive, aller dans le tableau et comparer l'identifiant de la requête avec les identifiants dudit tableau selon une loi de recherche et de comparaison choisie, 3) en cas de comparaison positive, obtenir la position de la sous-balise et accéder directement à la sous-balise à partir de ladite position ainsi obtenue. 2. Procédé selon la revendication 1, dans lequel les identifiants sont rangés dans l'index selon un ordre choisi et la loi de recherche et de comparaison est du type dichotomique. 3. Procédé selon la revendication 2, dans lequel l'ordre de rangement des identifiants est de type croissant. 4. Procédé selon l'une quelconque des précédentes revendications, dans lequel il est prévu au préalable de créer un index selon les étapes suivantes: i) créer un tableau comprenant, pour chaque sous-balise, au moins une ligne de correspondance entre un identifiant attribué à la sousbalise et au moins la position de la sous-balise dans le fichier, ii) trier les lignes de correspondance selon un ordre choisi en fonction de l'identifiant, iii) écrire en langage de balisage l'index à partir du tableau ainsi créé dans le fichier à un endroit choisi. 5. Procédé selon l'une des revendications précédentes, dans lequel la vérification de l'existence d'un index consiste à vérifier la présence d'une balise commentaire écrite en langage de balisage et apte à contenir ledit index. 6. Procédé selon la revendication 5, dans lequel ladite balise commentaire est placée en fin du fichier. 7. Procédé selon la revendication 5, dans lequel ladite balise commentaire est la première sous-balise de la balise mère. 8. Procédé selon l'une des revendications 1 à 4, dans lequel la 20 vérification de l'existence d'un index consiste à vérifier la présence d'un attribut prédéterminé dans la balise mère. 9. Procédé selon l'une des revendications précédentes, caractérisé en ce que dans chaque ligne de correspondance l'identifiant est sous une forme réduite selon l'application d'une loi de réduction, la loi de recherche et de comparaison utilisant ladite loi de réduction. 10. Procédé selon la revendication 9, caractérisé en ce que la loi de réduction est stockée dans le fichier. 11. Procédé selon la revendication 9 ou 10, caractérisé en ce que la loi de réduction est une fonction de hachage. 12. Dispositif d'accès à une sous-balise lors de la lecture d'un fichier écrit en langage de balisage, caractérisé en ce qu'il comprend: -des moyens de vérification aptes, en réponse à une requête d'accès à une sousbalise choisie contenue dans une balise mère accompagnée d'un identifiant, à vérifier dans le fichier, l'existence d'un index associé à la balise mère et représenté sous la forme d'un tableau contenu dans ledit fichier et comprenant, pour chaque sous-balise de la balise mère, au moins une ligne de correspondance entre un identifiant attribué à la sous-balise et au moins la position de la sous-balise dans le fichier; -des moyens de traitement aptes, en cas de vérification positive, à aller dans le tableau et à comparer l'identifiant de la requête avec les identifiants dudit tableau, selon une loi de recherche et de comparaison choisie; et - des moyens d'accès aptes en cas de comparaison positive à obtenir la position de la sous-balise et à accéder directement à la sous-balise à partir de ladite position ainsi obtenue. 13. Dispositif selon la revendication 12, caractérisé en ce qu'il comprend en outre des moyens de création aptes à créer un tableau comprenant pour chaque sous-balise au moins une ligne de correspondance entre un identifiant attribué à la sous-balise et au moins la position de la sous-balise dans le fichier, à trier les lignes de correspondance selon un ordre choisi en fonction de l'identifiant et à écrire en langage de balisage l'index à partir du tableau ainsi créé dans le fichier à un endroit choisi. 14. Support d'informations lisible par un système informatique, caractérisé en ce qu'il comporte des instructions d'un programme informatique permettant la mise en oeuvre d'un procédé d'accès selon l'une quelconque des revendications 1 à 11, lorsque ce programme est chargé et exécuté par un système informatique. 15. Support d'informations amovible, partiellement ou totalement lisible par un système informatique, caractérisé en ce qu'il comporte des instructions d'un programme informatique permettant la mise en oeuvre d'un procédé d'accès selon l'une quelconque des revendications 1 à 11, lorsque le programme est chargé et exécuté par un système informatique. 16. Programme d'ordinateur stocké sur un support d'informations, ledit programme comportant des instructions permettant la mise en oeuvre d'un procédé d'accès selon l'une quelconque des revendications 1 à 11, lorsque le programme est chargé et exécuté par un système informatique.