Brevet FR2904447A1 — publié le 20080201

La présente invention concerne un procédé et un dispositif de recherche d'un sous-élément contenant une information d'identification d'une entité recherchée dans un fichier écrit en langage de balisage, un procédé et un dispositif de modification d'un document, un procédé et un dispositif d'ajout d'une entité identifié par un sous-élément dans un fichier écrit en langage de balisage et un procédé et un dispositif de suppression d'un sous-élément dans 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 de 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 un format de description de leur représentation ou de leur affichage. Le format XML est de plus en plus utilisé pour le stockage et la 20 transmission de données numériques (par exemple, pour représenter un album de photographies). Cela génère un certain nombre de problèmes, notamment lorsque la quantité de données à représenter est importante. L'accès aux données peut alors durer un certain temps. 25 C'est plus particulièrement le cas lorsqu'on a besoin uniquement d'une sous-partie de ces données, par exemple une photographie numérique parmi un album de photographies. Le code présent en Figure 1 représente un fichier XML comprenant une collection d'images comportant deux images, à savoir l'image Mont Saint- 30 Michel 002 et l'image Mont Saint-Michel 004 . Selon ledit fichier, la collection comprend, d'une part, des métadonnées définies dans la balise consistant à définir des 2904447 2 paramètres de haut niveau tels que les droits d'accès aux images et, d'autre part, un ensemble d'images. Chaque description d'image est contenue dans une sous-balise IMG comprenant un identifiant CONTENT_ID et des métadonnées propres à l'image, ces dernières définissant par exemple la taille 5 de l'image et son nom. Plutôt que l'accès à l'ensemble des photographies, il se pose généralement le problème d'obtenir la description d'une photographie particulière contenue dans l'album (par exemple pour vérifier si la personne qui en fait la requête est autorisée à visualiser cette photographie). 10 Pour rechercher une photo dans l'album, la méthode classique consiste à parcourir l'album jusqu'à ce que l'on trouve la photo. Il est évident que cette méthode pose des problèmes de performance pour des albums volumineux. Il est à noter que XML n'est pas un format indexé. Il n'est donc pas 15 possible d'accéder directement aux informations concernant uniquement une photographie particulière. Pour rechercher une photo une autre solution consiste à ajouter un index à l'album. Pour des raisons de facilité d'utilisation, cet index peut être présent directement dans le fichier XML. Toutefois, il peut être stocké dans un fichier annexe au fichier XML. Par ailleurs, le fichier XML ainsi indexé peut être apte à être lu 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). Un tel index permet d'accéder très rapidement à une photo de l'album. Cependant, à la moindre modification de l'album, l'index doit être recréé. Ainsi, l'ajout d'une photo dans l'album devient-elle une opération coûteuse. Une autre solution consiste à ajouter un pointeur ou une information au début de la description de chaque photo qui indique la position de la photo suivante tel que décrit à l'adresse Internet suivante : http://www.w3.org/TR/xbcproperties/#accelerated-sequential-access. 2904447 3 Ainsi, dès que l'on détecte qu'une photo ne correspond pas à celle recherchée, on peut passer à la suivante sans devoir parcourir toute sa description. Cependant, l'ajout d'un pointeur au début de chaque photo oblige 5 aussi à parcourir l'album de façon linéaire. Toutefois, ce parcours est plus rapide que dans le cas de la méthode classique. Ainsi, cette solution pose aussi des problèmes de performance pour les albums volumineux. Compte tenu de ce qui précède, il serait intéressant de pouvoir réaliser une modification du format du fichier écrit en langage de balisage, de 10 manière à s'affranchir d'au moins certains des inconvénients mentionnés ci- dessus. La présente invention vise en premier lieu à fournir un procédé de recherche d'un sous-élément contenant une information d'identification d'une entité recherchée dans un fichier écrit en langage de balisage, ledit sous- 15 élément étant contenu dans un élément parent, ledit élément parent contenant une pluralité de sous-éléments associés pour chacun à une entité, caractérisé en ce qu'au moins un sous-élément comprend au moins : - une information d'identification d'une entité apte à être ordonnancée, 20 - une information de liaison inférieure identifiant au moins un sous-élément ayant une information d'identification inférieure à celle dudit sous-élément, et - une information de liaison supérieure identifiant au moins un sous-élément ayant une information d'identification supérieure à celle dudit 25 sous-élément, le procédé comprenant les étapes suivantes appliquées à un sous-élément courant : - comparaison de l'information d'identification du sous-élément recherché avec l'information d'identification du sous-élément courant, 30 - si l'information d'identification du sous-élément recherché est inférieure à l'information d'identification du sous-élément courant, le 2904447 4 sous-élément courant devient le sous-élément identifié par l'information de liaison inférieure du sous-élément courant, - si l'information d'identification du sous-élément recherché est supérieure à l'information d'identification du sous-élément courant, le 5 sous-élément courant devient le sous-élément identifié par l'information de liaison supérieure du sous-élément courant. Ainsi, selon l'invention, les entités présentes dans un document sont ordonnancées notamment sous la forme d'un arbre ou d'une liste doublement chainée à partir d'une information d'identification. Une telle organisation permet 10 ensuite une recherche rapide de l'entité répondant à un critère de recherche. La recherche s'effectue, conformément à l'invention, en comparant l'information d'identification du sous-élément courant et l'information d'identification du sous-élément recherché. Des informations de liaison vers des sous-éléments ayant respectivement une information d'identification inférieure 15 et supérieure permettent d'accélérer la navigation dans l'ensemble des sous-éléments et donc améliorent l'efficacité de la recherche. Selon une caractéristique particulière, tant que l'information d'identification du sous-élément recherché est différente de l'information d'identification du sousélément courant, lesdites étapes sont réitérées. 20 Selon une autre caractéristique particulière, au moins deux sous-éléments comprenant des informations d'identification équivalentes concernant au moins deux entités, lesdites étapes sont réitérées tant que l'information d'identification du sous-élément recherché est équivalente à l'information d'identification du sous-élément courant. 25 Selon cette caractéristique, la recherche permet de trouver l'ensemble des sous-éléments ayant une information d'identification égale ou équivalente à l'entité recherchée. Selon un autre mode de réalisation, au moins un sous-élément comprend en outre une information de liaison d'équivalence identifiant au moins 30 un sous-élément ayant une information d'identification équivalente à celle dudit sous-élément. 2904447 5 Ainsi, la recherche de sous-élément est accélérée lorsque plusieurs sous-éléments du fichier ont des informations d'identification équivalentes. Selon cette caractéristique, une information de liaison identifie l'ensemble des sous-éléments ayant une information d'identification 5 équivalente. Selon un autre mode de réalisation, si l'information d'identification du sous-élément recherché est équivalente à l'information d'identification du sous-élément courant, le sous-élément recherché comprend au moins un sous-élément identifié par l'information de liaison d'équivalence du 10 sous-élément courant. Selon une caractéristique particulière, les informations de liaison des sous-éléments contenus dans l'élément parent structurent les souséléments sous la forme d'un arbre. Selon une autre caractéristique particulière, au moins un 15 sous-élément comprenant une pluralité d'informations d'identification de types différents, le procédé comprend une étape préalable de détermination des types d'information d'identification sur lesquels la recherche est à effectuer, lesdites étapes étant réalisées sur les types d'information d'identification déterminés. 20 Selon cette caractéristique, la recherche est effectuée sur différentes informations d'identification. Ainsi, il est possible de s'adapter à diverses applications qui peuvent nécessiter l'utilisation de divers types d'informations d'identification, tout en maintenant l'avantage d'une recherche accélérée d'un sous-élément dans un 25 fichier en langage de balisage conformément à l'invention. Selon encore une autre caractéristique particulière, l'information d'identification est apte à être déterminée à partir d'information sur l'entité. La présente invention a également pour but de fournir un procédé de modification d'un fichier écrit en langage de balisage, ledit fichier contenant un 30 élément parent comprenant une pluralité de sous-éléments associés pour chacun à une entité, caractérisé en ce qu'il comprend les étapes suivantes : obtention d'un premier sous-élément ; 2904447 6 - détermination d'une information d'identification pour ce premier sous-élément ; -détermination d'au moins un sous-élément inférieur ayant une information d'identification inférieure à celle dudit premier sous-élément ; 5 -détermination d'au moins un sous-élément supérieur ayant une information d'identification supérieure à celle dudit premier sous-élément ; -modification du premier sous-élément par ajout d'une information de liaison inférieure identifiant le sous-élément inférieur déterminé et une information de liaison supérieure identifiant le sous-élément supérieur 10 déterminé. Conformément à l'invention, le document est modifié de tel sorte que les sous-éléments soient liés entre eux de manière à représenter leur ordonnancement en fonction de leur information d'identification. Cette organisation prend la forme notamment d'un arbre de dépendance ou d'une 15 liste doublement chainée. Selon une caractéristique particulière, le procédé comprend une étape préalable de détermination d'une liste des sous-éléments ordonnancés en fonction de leur information d'identification ; le premier sous-élément déterminé est le sous-élément présent sensiblement au milieu de la liste des 20 sous-éléments ordonnancés ; le sous-élément inférieur est le sous-élément présent sensiblement au milieu de la liste des sous-éléments ayant une information d'identification inférieure au premier sous-élément ; le sous-élément supérieur est le sous-élément présent sensiblement au milieu de la liste des sous-éléments ayant une information d'identification supérieure au premier 25 sous-élément. Selon cette caractéristique, on obtient un arbre de dépendance des sous-éléments relativement équilibré. Cette caractéristique permet de grandement diminuer le temps de recherche ultérieur par rapport au cas d'une recherche dans un arbre de 30 dépendance des sous-éléments déséquilibré. Selon une autre caractéristique particulière, le procédé comprend les étapes suivantes : 2904447 7 - détermination d'au moins un sous-élément équivalent dont l'information d'identification de ce sous-élément équivalent est équivalente à celle dudit premier sousélément ; - modification du premier sous-élément par ajout d'une information 5 de liaison d'équivalence identifiant le sous-élément. Selon cette caractéristique, les sous-éléments ayant une même information d'identification sont identifiés au moyen d'une information de liaison d'équivalence. Selon autre une caractéristique particulière, les étapes sont répétées 10 pour créer une structure d'arbre à partir des sous-éléments. Selon encore une autre caractéristique particulière, le procédé comprend une étape préalable de détermination de l'information d'identification des sous-éléments à partir d'information sur l'entité. Ainsi, l'information d'identification apte à être ordonnancée peut être 15 obtenue à partir de diverses informations relatives à une entité. Selon une autre caractéristique particulière, le procédé comprend une étape préalable de sélection de sous-éléments à modifier en fonction d'au moins un critère de sélection prédéterminé. La présente invention a également pour but de fournir un procédé 20 d'ajout d'un sous-élément contenant une information d'identification d'une nouvelle entité dans un élément parent dans un fichier écrit en langage de balisage, caractérisé en ce qu'au moins un sous-élément comprend au moins : - une information d'identification d'une entité apte à être ordonnancée, 25 - une information de liaison inférieure identifiant au moins un sous-élément ayant une information d'identification inférieure à celle dudit sous-élément, et - une information de liaison supérieure vers au moins un sous-élément ayant une information d'identification supérieure à celle dudit 30 sous-élément, le procédé comprenant les étapes suivantes : 2904447 8 - détermination d'un sous-élément cible en fonction de l'information d'identification de l'entité à ajouter, - si l'information d'identification du sous-élément à ajouter est inférieure à l'information d'identification du sous-élément cible, alors une 5 information de liaison inférieure identifiant le sous-élément à ajouter est ajoutée au sous-élément cible, - si l'information d'identification du sous-élément à ajouter est supérieure à l'information d'identification du sous-élément cible, alors une information de liaison supérieure identifiant le sous-élément à ajouter est 10 ajoutée au sous-élément cible, - ajout du sous-élément à ajouter dans le fichier. Selon ces caractéristiques, il est permis d'ajouter une nouvelle entité dans le document tout en maintenant l'ordonnancement des sous-éléments du document. Ainsi, lors de l'ajout d'un sous-élément, on détermine d'une part, la 15 place de ce sousélément au sein des sous-éléments ordonnancés et les informations de liaison sont mises à jour afin de maintenir cet ordonnancement des sous-éléments vis-à-vis des informations d'identification. Selon une caractéristique particulière, l'étape de détermination d'un sous-élément cible comprend les étapes suivantes réalisées par rapport au 20 sous-élément courant : -comparaison de l'information d'identification du sous-élément à ajouter avec l'information d'identification du sous-élément courant, - si l'information d'identification du sous-élément à ajouter est inférieure à l'information d'identification du sous-élément courant, 25 o si l'information de liaison inférieure du sous-élément courant n'identifie aucun sous-élément, alors le sous-élément cible est le sous-élément courant; o sinon, le sous-élément courant devient le sous-élément identifié par l'information de liaison inférieure du sous-élément 30 courant ; - si l'information d'identification du sous-élément à ajouter est supérieure à l'information d'identification du sous-élément courant, 2904447 9 o si l'information de liaison supérieure du sous-élément courant n'identifie aucun sous-élément, alors le sous-élément cible est le sous-élément courant ; o sinon, le sous-élément courant devient le 5 sous-élément identifié par l'information de liaison supérieure du sous-élément courant. La présente invention a également pour but de fournir un procédé de suppression d'un sous-élément contenant une information d'identification d'une entité dans un élément parent dans un fichier écrit dans un langage de 10 balisage, caractérisé en ce qu'au moins un sous-élément comprend au moins : - une information d'identification d'une entité, une information de liaison inférieure identifiant au moins un sous-élément ayant une information d'identification inférieure à celle dudit sous-élément, et 15 - une information de liaison supérieure identifiant au moins un sous-élément ayant une information d'identification supérieure à celle dudit sous-élément ; le procédé comprenant les étapes suivantes : détermination d'un sous-élément cible contenant une information 20 de liaison identifiant dudit sous-élément à supprimer, - obtention d'un sous-élément de remplacement identifié par une information de liaison dudit sous-élément à supprimer, modification de ladite information de liaison dudit sous-élément cible pour identifier ledit sous-élément de remplacement obtenu. 25 Ainsi, selon ces caractéristiques, il est permis de supprimer un sous-élément du document sans toutefois compromettre l'ordonnancement des sous-éléments dans le document. Corrélativement, l'invention fournit également un dispositif de recherche d'un sousélément contenant une information d'identification d'une 30 entité recherchée dans un fichier écrit en langage de balisage, ledit sous-élément étant contenu dans un élément parent, ledit élément parent 2904447 10 contenant une pluralité de sous-éléments associés pour chacun à une entité, caractérisé en ce qu'au moins un sous-élément comprend au moins : une information d'identification d'une entité apte à être ordonnancée, 5 - une information de liaison inférieure identifiant au moins un sous-élément ayant une information d'identification inférieure à celle dudit sous-élément, et -une information de liaison supérieure identifiant au moins un sous-élément ayant une information d'identification supérieure à celle dudit 10 sous-élément, le dispositif comprenant : - des moyens de comparaison de l'information d'identification du sous-élément recherché avec l'information d'identification d'un sous-élément courant, 15 - des moyens de modification aptes à modifier ledit sous-élément courant tel que le sous-élément identifié par l'information de liaison inférieure du sous-élément courant devient le sous-élément courant si l'information d'identification du sous-élément recherché est inférieure à l'information d'identification du sous-élément courant, 20 - des moyens de modification aptes à modifier ledit sous-élément courant tel que le sous-élément identifié par l'information de liaison supérieure du sous-élément courant devient le sous-élément courant si l'information d'identification du sous-élément recherché est supérieure à l'information d'identification du sous-élément courant. 25 Ce dispositif présente les mêmes avantages que le procédé de recherche brièvement décrit ci-dessus. La présente invention a également pour but de fournir un dispositif de modification d'un fichier écrit en langage de balisage, ledit fichier contenant un élément parent comprenant une pluralité de sous-éléments associés pour 30 chacun à une entité, caractérisé en ce qu'il comprend : - des moyens d'obtention d'un premier sous-élément ; 2904447 11 - des moyens de détermination d'une information d'identification pour ce premier sous-élément ; - des moyens de détermination d'au moins un sous-élément inférieur aptes à déterminer un sous-élément inférieur ayant une information 5 d'identification inférieure à celle dudit premier sous-élément ; - des moyens de détermination d'au moins un sous-élément supérieur aptes à déterminer un sous-élément supérieur ayant une information d'identification supérieure à celle dudit premier sous-élément ; - des moyens de modification du premier sous-élément par ajout 10 d'une information de liaison inférieure identifiant le sous-élément inférieur déterminé et une information de liaison supérieure identifiant le sous-élément supérieur déterminé. Ce dispositif présente les mêmes avantages que le procédé de modification brièvement décrit ci-dessus. 15 La présente invention a également pour but de fournir un dispositif d'ajout d'un sous-élément contenant une information d'identification d'une nouvelle entité dans un élément parent dans un fichier écrit en langage de balisage, caractérisé en ce qu'au moins un sous-élément comprend au moins : - une information d'identification d'une entité apte à être 20 ordonnancée, - une information de liaison inférieure identifiant au moins un sous-élément ayant une information d'identification inférieure à celle dudit sous-élément, et - une information de liaison supérieure vers au moins un 25 sous-élément ayant une information d'identification supérieure à celle dudit sous-élément, le dispositif comprenant - des moyens de détermination d'un sous-élément cible en fonction de l'information d'identification de l'entité à ajouter, 30 - des moyens d'ajout au sous-élément cible d'une information de liaison inférieure identifiant le sous-élément à ajouter dans le cas où 2904447 12 l'information d'identification du sous-élément à ajouter est inférieure à l'information d'identification du sous-élément cible, des moyens d'ajout au sous-élément cible d'une information de liaison supérieure identifiant le sous-élément à ajouter dans le cas où 5 l'information d'identification du sous-élément à ajouter est supérieure à l'information d'identification du sous-élément cible, - des moyens d'ajout du sous-élément à ajouter dans le fichier. Ce dispositif présente les mêmes avantages que le procédé de d'ajout brièvement décrit ci-dessus. 10 La présente invention a également pour but de fournir un dispositif de suppression d'un sous-élément contenant une information d'identification d'une entité dans un élément parent dans un fichier écrit dans un langage de balisage, caractérisé en ce qu'au moins un sous-élément comprend au moins : une information d'identification d'une entité, 15 - une information de liaison inférieure identifiant au moins un sous-élément ayant une information d'identification inférieure à celle dudit sous-élément, et - une information de liaison supérieure identifiant au moins un sous-élément ayant une information d'identification supérieure à celle dudit 20 sous-élément ; le dispositif comprenant : - des moyens de détermination d'un sous-élément cible contenant une information de liaison identifiant ledit sous-élément à supprimer, - des moyens d'obtention d'un sous-élément de remplacement 25 identifié par une information de liaison dudit sous-élément à supprimer, - des moyens de modification de ladite information de liaison dudit sous-élément cible pour identifier ledit sous-élément de remplacement obtenu. Ce dispositif présente les mêmes avantages que le procédé de suppression brièvement décrit ci-dessus. 30 Selon d'autres aspects, l'invention concerne aussi des dispositifs de traitement d'information aptes à fonctionner en tant que dispositifs de recherche, de modification d'ajout et de suppression de l'invention tels que 2904447 13 décrits brièvement ci-dessus, des supports d'information lisibles par un système informatique ainsi que des programmes d'ordinateur pour une mise en oeuvre des procédés de l'invention décrits brièvement ci-dessus. D'autres aspects et avantages de la présente invention apparaîtront 5 plus clairement à la lecture de la description qui va suivre, cette description étant donnée uniquement à titre d'exemple non limitatif et faite en référence aux dessins annexés, dans lesquels : la Figure 1 illustre un document écrit en XML d'une collection de photos ; 10 - la Figure 2 illustre un document écrit en XML d'une collection de photos selon la Figure 1 annoté conformément à l'invention ; - la Figure 3 représente un algorithme de recherche d'un sous-élément selon l'invention ; - la Figure 4 représente une variante de l'algorithme de recherche 15 d'un sous-élément selon l'invention ; - la Figure 5 représente une autre variante de l'algorithme de recherche d'un sous-élément selon l'invention ; - la Figure 6 représente un algorithme de modification d'un document écrit en langage de balise selon l'invention ; 20 - la Figure 7 représente un algorithme de l'étape de génération des pointeurs entre les sous-éléments compris dans un élément de l'algorithme de la Figure 6 selon l'invention ; - la Figure 8 représente un algorithme d'ajout d'un sous-élément dans un élément selon l'invention ; 25 - la Figure 9 représente un algorithme de l'étape d'insertion d'un sous-élément dans un élément de l'algorithme de la Figure 8 selon l'invention ; - la Figure 10 représente un algorithme général de suppression d'un sous-élément compris dans un élément selon l'invention ; - la Figure 11 représente un algorithme de l'étape de détermination 30 du plus grand sous-élément inférieur à un sous-élément donné dans un élément de l'algorithme de la Figure 10 selon l'invention ; 2904447 14 - la Figure 12 représente un algorithme de l'étape de suppression du sous-élément compris dans un élément de l'algorithme de la Figure 10 selon l'invention ; et - la Figure 13 représente, de manière schématique, un appareil dans 5 lequel est mise en oeuvre l'invention. La description de l'invention est réalisée à partir d'un fichier de type XML, toutefois, la mise en oeuvre peut être réalisée sur tout fichier en langage de balisage. L'invention peut s'appliquer par exemple au fichier décrit en 10 référence à la Figure 1. De manière plus générale, l'invention s'applique à un fichier de type XML, contenant un élément parent représentant une collection d'entités (par exemple une collection de photographies), chaque entité de la collection (par exemple une photographie) étant représentée par un sous-élément de l'élément 15 parent. Les sous-éléments peuvent être plus ou moins complexes pour représenter les différentes caractéristiques de leur entité (par exemple un lien vers le fichier image correspondant à la photographie, le nom de l'auteur de la photographie, une description de la photographie, des détails techniques concernant la photographie...). 20 Selon l'invention, les sous-éléments comprennent une information d'identification, cette information pouvant être un nom ou une donnée déterminée à partir de la structure du sous-élément et / ou du contenu du sous-élément. L'invention consiste à annoter l'ensemble des sous-éléments d'un 25 élément d'un document pour accélérer l'accès ou la recherche de l'un de ces sous-éléments à partir d'une information d'identification, cette dernière pouvant être une clé. Dans le cas des documents XML, l'ensemble des sous-éléments d'un élément du document correspond à l'ensemble des sous-balises d'une 30 balise mère. Selon un mode de réalisation de l'invention, l'élément parent, notamment la balise mère contenant une collection de sous-éléments, est 2904447 15 modifié par l'ajout d'un attribut, nommé par exemple XL:INDEX. Au moyen de cet attribut, on indique que les sous-éléments de l'élément parent ont été annotés pour une recherche rapide. Cet attribut, optionnel, prend une valeur qui définit notamment la méthode de calcul de l'attribut d'identification ou clé des 5 sous-éléments. La méthode de calcul est, par exemple, définie au moyen d'une expression XPath. L'utilisation d'une expression XPath permetd'obtenir une chaîne de caractères ou un entier pour un sous-élément. Par défaut et selon un mode de réalisation, la clé des sous-éléments 10 correspond à l'identifiant des sous-éléments, tel que décrit dans le document accessible à l'adresse http://www.w3.orgITR/2005/REC-xml-id-200509091. En outre, l'élément parent peut contenir un attribut, nommé par exemple XL:FIRST, qui permet d'indiquer le premier sous-élément à traiter lors de la recherche. 15 La valeur de cet attribut est, par exemple, l'adresse de ce premier sous-élément. Si cet attribut n'est pas présent dans l'élément parent, le premier sous-élément à considérer est le premier sous-élément annoté contenu dans l'élément parent. 20 Selon un mode de réalisation, l'élément parent peut aussi contenir un attribut nommé XL:TYPE indiquant les sous-éléments annotés. Ceci permet d'annoter uniquement une partie des sous-éléments contenus dans l'élément parent. Par exemple, si l'élément parent contient des photographies et des vidéos, il est ainsi possible d'annoter que les sous-éléments correspondant à 25 des photographies. La valeur de cet attribut est par exemple une expression XPath. Dans ce cas, l'expression XPath retourne un ensemble de sous-éléments, fils de l'élément parent. Selon un mode de réalisation, cette expression XPath est une expression relative de la forme nom_élément . En effet, une telle expression XPath est aisée à évaluer et son utilisation n'a pas 30 d'impact important sur les traitements effectués par l'invention. Par défaut, tous les sous-éléments sont annotés. 2904447 16 Selon un mode de réalisation particulier, l'élément parent peut aussi contenir un attribut nommé XL:MULTIPLE de façon à indiquer qu'une même clé peut être utilisée pour plusieurs sous-éléments. Cet attribut est particulièrement utile par exemple pour effectuer une recherche dans une liste de personnes en 5 fonction de leur année de naissance. La valeur de l'attribut nommé XL:MULTIPLE est mise à la valeur 1 pour indiquer que les clés ne sont pas uniques. Par défaut, on considère que les clés sont uniques. En outre, chaque sous-élément annoté comprend deux attributs nommés respectivement XL:L et XL:R, de manière à indiquer comment 10 poursuivre la recherche. Ces deux attributs sont des informations de liaison inférieures et supérieures, l'information de liaison inférieure identifiant au moins un sous-élément ayant une information d'identification inférieure à celle du sous-élément courant et l'information de liaison supérieure identifiant au moins un sous-élément ayant une information supérieure à celle du sous-élément 15 courant. La valeur de chacun des attributs XL:L et XL:R d'un sous-élément est l'adresse d'un autre sous-élément. Ainsi, lors du processus de recherche d'un sous-élément, trois cas peuvent se présenter lors du traitement d'un sous-élément. 20 - Si la clé du sous-élément correspond à la clé recherchée, alors le sous-élément constitue le résultat de la recherche. - Si la clé recherchée est inférieure à la clé du sous-élément, alors le sous-élément suivant à considérer est celui indiqué par l'attribut nommé XL:L. - Si la clé recherchée est supérieure à la clé du sous-élément, alors 25 le sous-élément suivant à considérer est celui indiqué par l'attribut nommé XL:R. Dans le mode de réalisation dans lequel les clés ne sont pas uniques, lorsque la clé du sous-élément considéré est égale à la clé recherchée, la recherche doit se poursuivre en considérant l'élément indiqué 30 par l'attribut nommé XL:L. Dans une variante de réalisation, chaque sous-élément annoté comprend un attribut nommé XL:M qui indique comment poursuivre la 2904447 17 recherche lorsque la clé recherchée est égale à celle du sous-élément considéré. Ainsi, dans ce cas, lorsque la clé du sous-élément considéré est égale à la clé recherchée, la recherche se poursuit en considérant le sous- 5 élément indiqué par l'attribut nommé XL:M. Si l'attribut nommé XL:M est utilisé mais n'est pas présent pour un sous-élément donné, la recherche est terminée. Selon l'invention, il est également possible d'effectuer des recherches sur plusieurs types d'identifiant ou de clé. Pour ce faire, les différents attributs utilisés sont formés d'une liste de valeurs, ces valeurs étant 10 séparées, par exemple, par des points-virgules. Dans le cas de l'album de photographies, l'utilisation de plusieurs types d'identifiant permet par exemple d'effectuer indifféremment une recherche en fonction de l'identifiant de la photo, de son nom ou de sa date de prise de vue. 15 Quand plusieurs types d'identifiant sont utilisés, la première opération à réaliser pour effectuer une recherche est de déterminer quel type d'identifiant doit être utilisé pour la recherche. La détermination du type d'identifiant sur lequel effectuer une recherche est réalisée, par exemple, en comparant les différentes valeurs de 20 l'attribut XL:INDEX de l'élément parent à une indication fournie par l'utilisateur. Cette opération permet, par exemple, d'obtenir l'indice du type d'identifiant à utiliser. Ensuite, lors de l'exécution de la recherche, la valeur à considérer pour un attribut donné est celle dont l'indice correspond à l'indice du type 25 d'identifiant. Selon une variante de réalisation, pour permettre à un utilisateur de mieux différencier les types d'identifiants et donc les types de recherches possible, un attribut XL:INDEX_NAME est ajouté à l'élément parent. Cet attribut comprend, pour chaque type d'identifiant, un nom décrivant cet identifiant. 30 Ainsi, dans l'exemple précédent, cet attribut pourrait avoir par exemple la valeur Identifiant de la photo ; Nom de la photo ; Date de prise de vue . 2904447 18 Si toutefois un attribut n'a pas de valeur ou est absent, on considère que sa liste de valeurs est constituée des valeurs par défaut pour cet attribut. La Figure 2 reprend le document XML de la Figure 1 dans lequel on a inséré les attributs précédemment présentés afin de permettre une recherche 5 efficace dans la collection d'images conformément à l'invention. Ainsi, selon l'invention, le traitement du fichier XML, aussi appelé parsing en terminologie anglo-saxonne, est effectué de manière à permettre le saut de fragments complets du document XML, sans risque de compromettre la gestion correcte des propriétés du document XML, comme les espaces de 10 nommage ( namespaces en terminologie anglo-saxonne). Un algorithme de recherche d'un sous-élément au sein d'un élément parent, conformément à l'invention, est illustré à la Figure 3. La recherche d'un sous-élément à partir de son identifiant CR, aussi appelé clé dans le suite du document, commence par la recherche de 15 l'élément parent (étape 305) dans le document considéré qui contient l'ensemble des sous-éléments. Dans le cas de mise en oeuvre dans un document de type XML, l'élément parent se caractérise par une balise ouvrante commençant l'élément collection . La recherche de l'élément collection s'effectue en parcourant de 20 manière classique le document XML. Cette recherche est en général rapide, car l'élément collection se situe notamment au début du fichier XML. Toutefois, si l'élément collection n'est pas présent au début du document XML, il est possible d'ajouter, au début du document, un pointeur vers l'élément collection, notamment au moyen d'une information insérée dans 25 un commentaire. De cet élément parent, on extrait la formule permettant de calculer la clé associée à un sous-élément, la clé étant déterminée notamment à partir de l'entité décrivant ce sous-élément (étape 310). Lors de l'étape suivante (étape 320), on obtient également 30 l'information permettant d'atteindre le premier sous-élément à traiter pour la recherche, cette information étant notamment un pointeur vers ce premier sous-élément. 2904447 19 A partir de cette information sur le premier sous-élément, l'étape 325 consiste à atteindre le premier sous-élément à évaluer pour la recherche. L'étape 330 suit l'étape 325 au cours de laquelle la clé CE associée à ce premier sous-élément est calculée, notamment, à partir des informations 5 extraites du sous-élément. L'étape 335 suivante compare la valeur de la clé CE avec la clé CR du sous- élément recherché. Si les deux clés sont équivalentes (par exemple si elles ont la même valeur, ou si leurs valeurs sont égales moyennant un traitement prédéfini, ce qui 10 permet de considérer par exemple les clés 1,00 et 1 comme équivalentes, ou les clés Mont Saint-Michel et mont saint-michel comme équivalentes), alors l'étape 335 est suivie de l'étape 340, au cours de laquelle le sous-élément considéré est un résultat pour la recherche. A l'issue de l'étape 340, il est mis fin à l'algorithme à l'étape 350. 15 Dans le cas contraire, si à l'étape 335 les clés CE et CR ne sont pas équivalentes (par exemple si elles n'ont pas la même valeur), alors l'étape 335 est suivie de l'étape 380. Dans ce cas, il faut poursuivre la recherche avec un autre sous-élément. 20 Lors de l'étape 380, on vérifie si la clé CR du sous-élément recherché est inférieure à la clé CE du sous-élément courant. Si le test est positif, c'est-à-dire si la clé CR du sous-élément recherché est inférieure à la clé CE, alors l'algorithme se poursuit à l'étape 382, au cours de laquelle on obtient une information de liaison inférieure identifiant 25 un sous-élément ayant une information d'identification, notamment une clé, inférieure à l'information du sous-élément courant. Dans le cas contraire, si le test est négatif, c'est-à-dire si la clé CR du sous-élément recherché est supérieure à la clé CE, alors l'algorithme se poursuit à l'étape 384 au cours de laquelle on obtient une information de liaison 30 supérieure identifiant un sous-élément ayant une information d'identification, notamment une clé, supérieure à l'information du sous-élément courant. 2904447 20 L'information de liaison est notamment un pointeur vers un sous-élément. Lors de l'étape suivante (étape 386), on vérifie si le pointeur obtenu soit lors de l'étape 382 soit lors de l'étape 384 existe ou non, c'est-à-dire s'il est 5 différent d'une valeur nulle. Si le pointeur a une valeur nulle, alors l'étape 386 est suivie de l'étape 350, qui met fin à l'algorithme. En effet, il n'y a plus de sous-élément à explorer, la recherche est donc terminée et l'algorithme ne retourne aucun résultat. 10 Dans le cas contraire, si le pointeur a une valeur non nulle, alors l'étape 386 est suivie de l'étape 388, qui permet d'atteindre le sous-élément suivant à traiter. L'algorithme se poursuit à l'étape 330 précédemment décrite. La Figure 4 décrit une variante de réalisation de l'algorithme de recherche illustré à la Figure 3. 15 Selon cette variante de réalisation, plusieurs sous-éléments peuvent avoir une même information d'identification, notamment une même clé. Les étapes déjà présentes dans la Figure 3 et exposées ci-dessus ont le même identifiant et ne seront pas à nouveau décrites. Au sein de l'algorithme illustré à la Figure 4, ce qui diffère de 20 l'algorithme illustré en Figure 3 réside en ce que les étapes 415 et 445 et 470 et 475 ont été insérées et illustrent le cas où plusieurs sous-éléments possèdent une même clé. L'étape 415, qui suit l'étape 310 précédemment décrite, permet d'obtenir une indication d'unicité ou non des clés, aussi appelée multiplicité 25 des résultats . Cette indication permet de savoir si plusieurs sous-éléments du document peuvent posséder la même clé. Si c'est le cas, l'algorithme de recherche peut retourner plusieurs résultats. Dans cet algorithme, lorsqu'un sous-élément a été trouvé, notamment lors des étapes 335 et 340, l'algorithme se poursuit à l'étape 445, 30 de façon à déterminer si le résultat peut être multiple. En pratique, l'étape 445 consiste à vérifier la valeur de l'indication de multiplicité obtenue à l'étape 415. 2904447 21 Si la multiplicité est utilisée (c'est-à-dire que les clés ne sont pas uniques), alors l'algorithme se poursuit à l'étape 470 par la mise à jour d'une variable R, précédemment initialisée à la valeur faux à la valeur vrai . L'étape 384 précédemment décrite suit l'étape 470 afin d'obtenir le pointeur 5 vers le sous-élément supérieur. Si la clé CE du nouveau sous-élément traité est égale à la clé CR du sous-élément recherché (déterminée par les étapes 330 et 335 précédemment décrites), alors le nouveau sous-élément est ajouté au résultat lors de l'étape 340 et le traitement se poursuit selon le même processus avec le sous-élément 10 supérieur suivant. Si la clé CE du nouveau sous-élément traité est différente de la clé CR du sous-élément recherché (déterminée par les étapes précédemment décrite 330 et 335), alors l'étape 335 se poursuit à l'étape 475, qui permet d'arrêter la recherche. 15 En effet, lors de l'étape 475, on vérifie la valeur de la variable R. Si la valeur de cette variable est vrai , alors il est mis fin à l'algorithme lors de l'étape 350. En effet, la valeur vrai de la variable R indique qu'au moins un sous-élément a été trouvé. Si, au contraire, lors de l'étape 475, la variable R n'a pas la valeur 20 vrai alors l'algorithme se poursuit à l'étape 380 précédemment décrite. De retour à l'étape 445, lorsque le test détermine que la multiplicité n'est pas utilisée (c'est-à-dire que les clés sont uniques), alors il est mis fin à l'algorithme par l'étape 350 précédemment décrite. La Figure 5 décrit une autre variante de réalisation de l'algorithme de 25 recherche illustré en Figure 3 et en Figure 4. Selon cette variante de réalisation, une troisième information de liaison, appelée aussi pointeur est utilisée. Elle comprend l'ensemble des sous-éléments ayant une information d'identification équivalente voire égale, notamment une même clé. 30 Les étapes déjà présentes en Figure 3 ou en Figure 4 et exposées ci-dessus ont le même identifiant et ne seront pas à nouveau décrites. 2904447 22 Au sein de l'algorithme illustré en Figure 5, ce qui diffère de l'algorithme illustré en Figure 3 et en Figure 4 réside en ce que les étapes 550, 555, 560 et 565 ont été insérées et permettent de présenter le cas de l'utilisation d'une troisième information de liaison, cette information de liaison 5 contenant les sous-éléments ayant un même identifiant ou une même clé. Ce mode de réalisation permet une recherche plus rapide des sous-éléments ayant un même identifiant, ou une même clé. En effet, selon ce mode de réalisation, d'une part, on évite de parcourir successivement plusieurs sous-éléments ayant une même clé et, d'autre part, lorsque la clé est 10 équivalente, le résultat contenant l'ensemble des sous-éléments recherchés est directement accessible, puisque la liste de résultats comprend l'ensemble de la liste de sous-éléments identifiée par la troisième information de liaison. Selon ce mode de réalisation, lorsqu'un sous-élément a été trouvé, notamment lors des étapes 335 et 340, et que plusieurs sous-éléments peuvent 15 avoir un même identifiant ou clé (test de l'étape 445), alors une étape 550 suit l'étape 445, qui consiste à tester si la troisième information de liaison, notamment au moyen de l'attribut XL:M, aussi appelée pointeur d'égalité, est utilisée dans la mise en oeuvre. Dans la négative, l'étape 550 est suivie de l'étape 470 20 précédemment décrite. Dans l'affirmative, c'est-à-dire si un pointeur d'égalité est utilisé pour mémoriser l'ensemble des sous-éléments ayant une même clé, alors l'étape 550 est suivie de l'étape 555. L'étape 555 consiste à tester si le pointeur d'égalité est présent, 25 notamment en testant si ce pointeur est différent de la valeur nulle. Si tel n'est pas le cas, l'étape 555 est suivie de l'étape 350 précédemment décrite et met fin à l'exécution de l'algorithme. Dans le cas contraire, si le pointeur d'égalité est présent, alors un ou plusieurs sous-éléments ayant une même clé que le sousélément courant sont 30 présents. L'algorithme se poursuit donc à l'étape 560, qui consiste à obtenir le pointeur et, ensuite, à atteindre le sous-élément ayant la même clé référencée par le pointeur (étape 565). L'étape 565 est suivie de l'étape 340 2904447 23 précédemment décrite, qui consiste à ajouter ce nouveau sous-élément au résultat (étape 340). Les Figures 6 et 7 illustrent des algorithmes de modification d'un document écrit en langage de balisage afin de permettre la mise en oeuvre de 5 recherches tel qu'illustré aux Figures 3 à 5. Les modifications apportées sur le document écrit en langage de balisage par ces algorithmes permettent d'effectuer différentes recherches sur le document au moyen notamment de différentes informations d'identification. Par exemple, sur un album photo, un premier type de recherche peut être de 10 trouver une photo en fonction de son identifiant, tandis qu'un deuxième type de recherche peut être de trouver une photo en fonction de sa date de prise de vue. Pour réaliser ces recherches, un ensemble d'informations d'identification doit être précisé. 15 En particulier, il est nécessaire notamment de préciser sur quels types d'information d'identification ou clé d'accès la recherche va avoir lieu. Selon un mode de réalisation particulier, on utilise une expression de type XPath permettant, à partir d'un sous-élément de calculer un identifiant. Par exemple, dans le cas du document de la Figure 1, l'expression XPath pour 20 obtenir une clé d'accès correspondant à l'identifiant d'une photographie peut être : ./@CONTENT ID . Toujours pour le même document, l'expression XPath permettant d'obtenir une clé d'accès correspondant au nom du fichier image contenant la photographie peut être : 1METADATAUORIGINAL_FILENAME/@VALUE . 25 Cette méthode de calcul de l'identifiant ou de la clé d'accès à une entité est mémorisée dans l'attribut XL:INDEX de l'élément parent. Par défaut, si aucune information n'est fournie aux algorithmes au sujet de cette méthode de calcul, l'attribut xml:id des sous-éléments est utilisé. Le calcul de l'identifiant ou de la clé d'accès pour chaque entité peut 30 être relativement complexe. Par exemple si l'identifiant utilisé est la date et l'heure de la photo, les différents composants de la date et de l'heure (année, 2904447 24 jour, mois...) doivent être extrait du sous-élément, combinés et éventuellement transformés pour obtenir une clé d'accès facile à comparer. Selon une variante de réalisation, on mémorise la valeur de l'identifiant de chaque sous-élément dans un attribut XL:ID ajouté à ce 5 sous-élément. Quand cet identifiant ou clé d'accès doit être obtenu, il suffit de lire la valeur de cet attribut. La suite de la description précise comment les algorithmes des Figures 6 et 7 modifient un document pour améliorer la recherche. Les adaptations nécessaires pour améliorer la recherche par l'utilisation de 10 plusieurs informations d'identification seront décrites ultérieurement. Les principales modifications à réaliser sur un document écrit en langage de balisage, notamment en langage XML, consistent à insérer, dans les différents sous-éléments constituant une collection, des informations de liaisons tendant à indiquer l'ordre de traitement des différents sous-éléments de 15 la collection. Ces informations permettent d'organiser, notamment, les sous-éléments sous la forme d'un arbre de recherche. La modification du document écrit en langage de balisage, selon l'algorithme conforme à l'invention, débute à l'étape 610, par la réécriture du 20 document en lui ajoutant les attributs nécessaires à la réalisation de la recherche. L'ensemble des attributs décrivant les options utilisées, notamment les attributs XL:INDEX, XL:TYPE, etc., sont directement insérés dans le document. 25 Les attributs décrivant l'ordre de parcours des différents sous-éléments sont, quant à eux, générés avec une valeur temporaire susceptible d'être remplacée par la vraie valeur. En effet, étant donné qu'une mise en oeuvre possible de l'invention consiste à utiliser des pointeurs vers une position dans le fichier pour atteindre directement des éléments, il est important 30 que l'ajout d'un tel attribut de parcours ne modifie pas la position d'un sous-élément dans le fichier. 2904447 25 Selon un exemple de réalisation, un attribut nommé XL:L est généré pour un sous-élément au cours de l'étape 610 avec une valeur "000000", qui sera remplacée ultérieurement par l'adresse du sous-élément ayant une information d'identification inférieure à ce sous-élément, ce dernier étant 5 déterminé ultérieurement. En outre, cette valeur "000000" permet d'identifier les pointeurs n'adressant aucun sous-élément, ce qui est le cas pour l'attribut nommé XL:L d'un sous-élément qui n'a pas de sous-élément ayant une information d'identification inférieure. 10 II est à noter que le nombre de `0' utilisés pour cette valeur "000000" dépend de la taille du fichier contenant le document. En effet, cette valeur "000000" doit être capable de contenir toute adresse vers toute position dans le fichier. L'étape 610 est suivie de l'étape 620 de création d'une liste L des 15 sous-éléments qui doivent pouvoir être recherchés. Selon un mode de réalisation particulier, l'étape 620 est réalisée en parallèle ou en quasi-parallèle avec l'étape 610. Cette liste L comprend, pour des sous-éléments, voire pour chaque sous-élément, une information d'identification du sous-élément ou la valeur de 20 la clé de ce dernier et la position de ce sous-élément dans le fichier. L'étape 630 suit l'étape 620, qui consiste à trier la liste L, notamment en réalisant un tri par ordre croissant des clés. Enfin, lors de l'étape suivante (étape 640), l'algorithme de génération des pointeurs pour les éléments de la liste L illustré en Figure 7 est appelé. 25 Puis, il est mis fin à l'algorithme de la Figure 6 lors de l'étape 650. L'algorithme illustré en Figure 6 peut être utilisé pour ajouter des informations dans un document écrit en langage de balisage afin de réaliser plusieurs types de recherche sur un même document. Pour ce faire, il convient, d'une part, de générer, à l'étape 610, les attributs pour l'ensemble des 30 recherches pouvant être effectuées, puis, d'autre part, pour chaque type de recherche, il convient de réaliser les étapes 620, 630 et 640. 2904447 26 La Figure 7 illustre un algorithme permettant de générer des informations de liaison, notamment des pointeurs pour les sous-éléments d'une liste triée L0. Selon cet algorithme, on génère un arbre de sous-éléments à partir 5 de la liste triées LO, la racine de cet arbre étant le sous-élément présent au milieu de la liste LO et ses deux branches correspondant respectivement à la première moitié de la liste et à la deuxième moitié de la liste. L'algorithme illustré en Figure 7 est utilisé de manière récursive. En outre, l'algorithme de la Figure 7 est apte à traiter le cas où 10 plusieurs sous-éléments ont la même clé. En cas de clé non unique, cet algorithme peut générer aussi bien des documents dont la structure permet d'effectuer des recherches selon l'algorithme décrit en référence à la Figure 4 que des documents dont la structure permet d'effectuer des recherches selon l'algorithme décrit en référence à la Figure 5. 15 L'algorithme débute à l'étape 702, qui consiste à déterminer le sous-élément présent au milieu de la liste LO appelé Em. L'étape 702 est suivie de l'étape 704 au cours de laquelle trois listes sont créées à partir de la liste LO et nommées respectivement Li, Lm et Ls. La liste Lm comprend l'ensemble des sous-éléments de la liste LO 20 dont la clé est égale à la clé du sous-élément milieu Em. Etant donné que la liste LO est triée, il suffit, pour créer cette liste, de parcourir la liste LO à partir du sous-élément milieu Em vers le début de la liste et d'ajouter les sous-éléments, tant que leur clé reste équivalente à la clé du sous-élément milieu Em. Ensuite, on effectue ce parcours à partir du 25 sous-élément milieu Em vers la fin de la liste LO. La liste Li contient l'ensemble des sous-éléments de la liste LO dont la clé est inférieure à la clé du sous-élément milieu Em et la liste Ls contient ceux dont la clé est supérieure à la clé du sous-élément milieu Em. L'étape 704 est suivie de l'étape 710, qui consiste à trouver le 30 sous-élément positionné au milieu de la liste Li appelé Ei. L'étape 710 est suivie de l'étape 712, au cours de laquelle l'information de liaison inférieure, ou pointeur inférieur du sous-élément Em, 2904447 27 représenté par l'attribut nommé XL:L, est définie pour indiquer la position du sous-élément Ei. On peut noter que si la liste Li est vide, alors la variable Ei prend une valeur nulle et le pointeur inférieur du sous-élément Em est alors défini pour 5 indiquer qu'il ne comprend aucun sous-élément et donc que son pointeur est nul. L'algorithme se poursuit, à l'étape 720, par le test de la liste Lm, afin de déterminer si celle-ci est vide ou non. Si le test détermine que la liste est vide, alors l'algorithme se poursuit 10 à l'étape 725. Sinon, l'algorithme se poursuit à l'étape 740 décrite ultérieurement. Les étapes 725 à 738 ont pour objectif de relier la liste Ls au sous-élément Em et de générer les informations de liaison, ou pointeurs pour les listes Li et Ls. 15 Ainsi, l'étape 725 consiste à affecter à la variable nommée Ec la valeur du sous-élément Em. L'étape 725 est suivie de l'étape 730 au cours de laquelle on détermine le sous-élément positionné au milieu de la liste Ls, nommé Es . L'algorithme se poursuit à l'étape 732, qui consiste à définir le 20 pointeur supérieur du sous-élément Ec, afin d'indiquer la position du sous-élément Es. Comme lors des étapes 710 et 712, si la liste Ls est vide, alors, le pointeur supérieur du sousélément Ec est défini de façon à ne pointer sur aucun autre sous-élément. L'étape 734 suit l'étape 732 et consiste à générer les pointeurs de la 25 liste Li, sous réserve que cette liste Li ne soit pas vide. Ces pointeurs sont générés en appliquant l'algorithme de la Figure 7 sur la liste Li. Il en est de même pour la liste Ls lors de l'étape 736, si la liste Ls n'est pas vide. Ainsi, au cours de cette étape, les pointeurs sont générés pour les sous-éléments de la liste Ls. 30 Ensuite, il est mis fin à l'algorithme lors de l'étape 738. De retour à l'étape 720, si la liste Lm n'est pas vide, celle-ci doit être reliée au sous-élément Em. 2904447 28 Pour cela, l'étape 720 est suivie de l'étape 740, afin de déterminer si le pointeur d'égalité est utilisé ou non. Si le pointeur d'égalité n'est pas utilisé, alors l'ensemble des sous-éléments de la liste Lm est lié au sous-élément Em par l'intermédiaire de 5 son pointeur supérieur. Cette mise en oeuvre est décrite aux étapes 742 à 752, qui permettent de traiter les sous-éléments de la liste Lm. Dans le cas contraire, l'algorithme se poursuit à l'étape 760 décrite ultérieurement. L'étape 742 consiste à obtenir le premier sous-élément de la liste Lm 10 nommé Ec. L'étape 744 suit l'étape 742 de façon à définir le pointeur supérieur du sous-élément Em représenté par l'attribut nommé XL:R pour indiquer la position du sous-élément Ec. L'algorithme se poursuit à l'étape 746 par un test permettant de 15 déterminer s'il reste d'autres sous-éléments de la liste Lm à traiter. S'il n'y a plus d'autres sous-éléments dans la liste Lm, c'est-à-dire si tous les sous-éléments de la liste Lm ont été traités, alors, l'étape 746 est suivie de l'étape 730 décrite précédemment, quipermet de relier la liste Ls au sous-élément Em par l'intermédiaire des sous-éléments de la liste Lm. 20 Si le test de l'étape 746 montre qu'il reste des sous-éléments de la liste Lm à traiter, alors, l'étape 746 est suivie de l'étape 748 au cours de laquelle la variable nommée Ep est définie à la valeur du sous-élément Ec et le sous-élément Ec prend la valeur du sous-élément suivant de la liste Lm. L'étape 748 est suivie de l'étape 750 dans laquelle on définit le 25 pointeur supérieur du sous-élément Ep, c'est-à-dire l'attribut XL:R, pour indiquer la position du sous-élément Ec. Quant à l'étape suivante (étape 752), on définit le pointeur inférieur du sous-élément Ep, c'est-à-dire l'attribut XL:L, à la valeur nulle. Les étapes 748 à 752 sont réitérées tant qu'il existe des 30 sous-éléments dans la liste Lm. De retour à l'étape 740, dans le cas où la liste Lm n'est pas vide (étape 720) et que le pointeur d'égalité est utilisé (étape 740), alors l'algorithme 2904447 29 se poursuit aux étapes 760 à 772, au cours desquelles l'ensemble des sous-éléments de la liste Lm est lié au sous-élément Em par l'intermédiaire de ce pointeur, représenté par l'attribut XL:M. L'étape 760 consiste à obtenir le premier sous-élément de la liste Lm 5 nommé Ec. L'étape 762 suit l'étape 760 au cours de laquelle on définit le pointeur d'égalité du sous-élément Em, représenté par l'attribut nommé XL:M , de manière à indiquer la position du sous-élément Ec. L'algorithme se poursuit à l'étape 764 par un test permettant de 10 déterminer s'il reste d'autres sous-éléments de la liste Lm à traiter. S'il n'y a plus d'autres sous-éléments dans la liste Lm, c'est-à-dire si tous les sous-éléments de la liste Lm ont été traités, alors l'étape 764 est suivie de l'étape 725 décrite précédemment, qui permet de relier la liste Ls au sous-élément Em par l'intermédiaire des sous-éléments de la liste Lm. 15 Si le test de l'étape 764 montre qu'il reste des sous-éléments de la liste Lm à traiter, alors l'étape 764 est suivie de l'étape 766 au cours de laquelle la variable nommée Ep est définie à la valeur du sous-élément Ec et le sous-élément Ec prend la valeur du sous-élément suivant de la liste Lm. L'étape 766 est suivie de l'étape 768 dans laquelle on définit le 20 pointeur d'égalité du sous-élément Ep, c'est-à-dire l'attribut XL:M, pour indiquer la position du sous-élément Ec. Lors de l'étape suivante (étape 770), on définit le pointeur inférieur du sous-élément Ep, c'est-à-dire l'attribut XL:L, à la valeur nulle. L'étape suivante (étape 772) définit le pointeur supérieur du 25 sous-élément Ep, c'est-à-dire l'attribut XL:R, à la valeur nulle. Les étapes 766 à 772 sont réitérées tant qu'il existe des sous-éléments dans la liste Lm. Les Figures 8 et 9 illustrent un algorithme d'ajout d'un sous-élément dans une collection conformément à l'invention. 30 Pour que l'ajout d'un sous-élément soit conforme à l'invention, il convient d'insérer le nouveau sous-élément dans la collection triée afin d'optimiser la recherche. 2904447 30 L'algorithme de la Figure 8 débute à l'étape 810 par la création d'un nouveau sous-élément, En, décrivant l'entité à ajouter dans la collection représentée par l'élément parent, par exemple une nouvelle photo dans une collection d'image. 5 Ce sous-élément est inséré à la fin de l'élément parent afin de ne pas modifier la position dans le fichier des éléments et sous-éléments existant. II est toutefois possible de modifier cet algorithme afin d'insérer un sous-élément à un emplacement différent de la fin du fichier. Pour cela, un mode de réalisation consiste à utiliser un algorithme 10 similaire à celui ultérieurement décrit en référence à la Figure 12, mais en l'appliquant à l'insertion d'un fragment de document. Toutefois, l'insertion d'un sous-élément au milieu du fichier peut devenir coûteuse en termes de temps de traitement. L'étape 810 est suivie de l'étape 820, qui consiste à obtenir le 15 premier sous-élément à considérer pour la recherche nommé Ep. Ce premier sous-élément est obtenu notamment à partir du pointeur XL:FIRST de l'élément parent. Ensuite, l'algorithme se poursuit par l'étape 830 au cours de laquelle le nouveau sous-élément En est inséré en guise de liaison, dans l'ordre de la 20 recherche par rapport au sous-élément Ep. Cette insertion est décrite plus en détail en support de la Figure 9, ci-après. La figure 9 illustre un algorithme d'insertion d'un sous-élément En dans l'ordre de recherche par rapport à un sous-élément E0. 25 L'algorithme débute à l'étape 905 par la vérification selon laquelle l'information d'identification (ou la clé) du sous-élément En est équivalente à la clé du sous-élément E0. S'il n'y a pas équivalence entre les clés des sous-éléments, l'étape 905 est suivie de l'étape 910 au cours de laquelle la clé du sous-élément En est 30 comparée à la clé du sous-élément E0. Si, au contraire, les clés des sous-éléments En et EO sont équivalentes, alors l'algorithme se poursuit à l'étape 955 décrite ultérieurement. 2904447 31 L'étape 910 consiste donc à déterminer si la clé du sous-élément En est inférieure à la clé du sous-élément E0. Si le test est positif, alors l'algorithme se poursuit à l'étape 915. Dans le cas contraire, l'étape 910 est suivie de l'étape 935 décrite ultérieurement. 5 L'étape 915 consiste à obtenir le sous-élément Ei référencé par le pointeur inférieur du sous-élément E0. L'étape 915 est suivie de l'étape 920 au cours de laquelle on vérifie si le sous-élément Ei existe. Si le sous-élément Ei n'existe pas, alors l'algorithme se poursuit à 10 l'étape 925, qui consiste à définir le pointeur inférieur du sous-élément E0, au moyen de l'attribut XL:L, pour référencer le sous-élément En. Il est ensuite mis fin à l'algorithme lors de l'étape 990. Dans le cas contraire, si, lors de l'étape 920, il est montré que le sous-élément Ei existe, alors l'algorithme se poursuit à l'étape 930, qui consiste 15 à insérer le nouveau sous-élément En dans l'ordre de recherche par rapport au sous-élément Ei en utilisant ce même algorithme de façon récursive. Il est ensuite mis fin à l'algorithme lors de l'étape 990. De retour à l'étape 910 dans le cas où la clé du sous-élément En n'est pas inférieur à la clé du sous-élément E0, l'algorithme se poursuit à l'étape 20 935 au cours de laquelle on obtient le sous-élément Es référencé par le pointeur supérieur du sous-élément E0. L'étape 940 suit l'étape 935 au cours de laquelle on vérifie l'existence du sous-élément Es. Si le sous-élément Es n'existe pas, alors l'algorithme se poursuit à 25 l'étape 945, qui consiste à définir le pointeur supérieur du sous-élément E0, au moyen de l'attribut XL:R, pour référencer le sous-élément En. Il est ensuite mis fin à l'algorithme lors de l'étape 990. Dans le cas contraire, si, lors de l'étape 940, il est montré que le sous-élément Es existe, alors l'algorithme se poursuit à l'étape 950, qui 30 consiste à insérer le nouveau sous-élément En dans l'ordre de recherche par rapport au sous-élément Es en utilisant ce même algorithme de façon récursive. Il est ensuite mis fin à l'algorithme lors de l'étape 990. 2904447 32 De retour à l'étape 905, dans le cas où les clés des sous-éléments En et EO sont équivalentes, l'algorithme se poursuit à l'étape 955. L'étape 955 consiste à vérifier si le pointeur d'égalité est utilisé ou non. 5 Dans l'affirmative, l'algorithme se poursuit à l'étape 960 et, dans le cas contraire, l'étape 955 est suivie de l'étape 975 décrite ultérieurement. Lors de l'étape 960, on obtient le sous-élément Em référencé par le pointeur d'égalité du sous-élément E0. Lors de l'étape suivante (étape 965), le pointeur est redéfini pour 10 référencer le nouveau sous-élément En, notamment au moyen de l'attribut XL:M. L'étape 965 est suivie de l'étape 970 au cours de laquelle le pointeur d'égalité du nouveau sous-élément En, à savoir l'attribut XL:M, est défini pour référencer le sous-élément Em. Il est ensuite mis fin à l'algorithme lors de 15 l'étape 990. De retour à l'étape 955 dans le cas où le pointeur d'égalité n'est pas utilisé, l'étape 955 est suivie de l'étape 975 au cours de laquelle on obtient le sous-élément Es référencé par le pointeur supérieur du sous-élément E0. Lors de l'étape suivante (étape 980), le pointeur est redéfini pour 20 référencer le nouveau sous-élément En, notamment au moyen de l'attribut XL:R. L'étape 980 est suivie de l'étape 985 au cours de laquelle le pointeur supérieur de ce nouveau sous-élément En, à savoir l'attribut XL:R, est défini pour référencer le sous-élément Es. Il est ensuite mis fin à l'algorithme lors de 25 l'étape 990. II est à noter que si le sous-élément Em ou le sous-élément Es n'est pas défini, le pointeur du sous-élément En le référençant est défini par une valeur nulle. Selon une variante de réalisation, si plusieurs sous-éléments ne 30 peuvent avoir de clés équivalentes, les étapes 905 et les étapes de 955 à 985 ne sont pas nécessaires. De même, si le pointeur d'égalité n'est pas utilisé, les étapes 955 à 970 ne sont pas nécessaires. 2904447 33 II est à noter que lorsqu'un grand nombre de sous-éléments ont été ajoutés à une collection, alors, l'ordre de recherche peut ne plus être optimal. Dans ce cas, une solution consiste à recréer l'ensemble des pointeurs en utilisant l'algorithme de la Figure 6. 5 Selon une autre variante de réalisation, l'algorithme de la Figure 9 est modifié, notamment les étapes 910 à 950, pour rééquilibrer automatiquement l'arbre de recherche afin que l'ordre de recherche reste optimal. Le rééquilibrage de l'arbre de recherche peut être réalisé en utilisant des techniques classiques d'équilibrage d'arbres binaires. 10 Les Figures 10, 11 et 12 illustrent un algorithme de suppression d'un sous-élément d'un élément parent conformément à l'invention. L'algorithme de suppression d'un sous-élément d'un élément parent de la Figure 10 débute à l'étape 1002 par la recherche du sous-élément Er. La recherche du sous-élément Er à supprimer s'effectue par exemple 15 selon l'algorithme de la Figure 3. Toutefois, une différence réside dans le fait que le sous-élément Ep précédant le sous-élément à supprimer Er dans l'ordre de recherche, doit être mémorisé, ce qui est réalisé lors de l'étape 1004. Un mode de réalisation consiste à mémoriser, lors de la recherche 20 effectuée conformément à l'algorithme de la Figure 3, non seulement le sous-élément courant, mais aussi le sous-élément précédant. Dans le cas où le sous-élément à supprimer Er est le premier sous-élément recherché, on considère que le sous-élément précédent est l'élément parent. L'algorithme s'applique de la même manière, en utilisant le 25 pointeur XL:FIRST à la place du pointeur XL:R et en considérant que les pointeurs XL:M et XL:L ne sont pas définis. L'étape 1004 est suivie de l'étape 1010 consistant à vérifier si le sous-élément à supprimer Er est référencé dans le sous-élément Ep par le pointeur d'égalité, notamment au moyen de l'attribut XL:M. 30 Si tel est le cas, l'algorithme se poursuit à l'étape 1012, alors que, dans le cas contraire, l'étape 1010 est suivie de l'étape 1020 décrite ultérieurement. 2904447 34 Lors de l'étape 1012, on obtient le sous-élément Em référencé par le pointeur d'égalité du sous-élément à supprimer Er. L'étape suivante (étape 1014) consiste à définir le pointeur d'égalité du sous-élément Ep pour référencer le sous-élément Em. 5 L'étape 1014 se poursuit à l'étape 1016 de suppression d'un fragment du document correspondant au sous-élément à supprimer Er. Cette suppression est illustrée par l'algorithme de la Figure 12 qui sera décrite ultérieurement. A l'issue de l'étape 1016, il est mis fin à l'algorithme (étape 1018). 10 De retour à l'étape 1010, si le sous-élément à supprimer Er n'est pas référencé par le pointeur d'égalité, notamment au moyen de l'attribut XL:M, ou si le sous-élément Ep est en fait l'élément parent (vérification qui peut aussi être effectuée lors de l'étape 1010), plusieurs cas sont envisagés. Lors de l'étape 1020, on vérifie, notamment au moyen de l'attribut 15 XL:M, si le pointeur d'égalité du sous-élément à supprimer Er référence un sous-élément existant. Dans l'affirmative, l'algorithme se poursuit à l'étape 1022. Au contraire, si le pointeur ne référence pas un sous-élément existant alors l'algorithme se poursuit à l'étape 1030 décrite ultérieurement. 20 Lors de l'étape 1022, on obtient le sous-élément Em référencé par le pointeur d'égalité du sous-élément à supprimer Er. L'étape 1024 suit l'étape 1022 consistant à remplacer le sous-élément à supprimer Er par le sous-élément Em. Pour ce faire, le pointeur d'égalité du sous-élément Ep référençant le sous-élément à supprimer Er est 25 modifié pour référencer le sous-élément Em. Enfin, lors des étapes suivantes 1026 et 1028, les pointeurs du sous-élément à supprimer Er sont copiés dans le sous-élément Em, notamment au moyen des attributs XL:L et XL:R. L'étape 1028 est suivie de l'étape 1016 précédemment décrite. 30 De retour à l'étape 1020, dans le cas où le pointeur d'égalité du sous-élément à supprimer Er ne référence pas un sous-élément existant, notamment au moyen de l'attribut XL:M, l'algorithme se poursuit à l'étape 1030, 2904447 qui consiste à effectuer un test déterminant, notamment au moyen de l'attribut XL:L, si le pointeur inférieur du sous-élément à supprimer Er est existant ou absent. Si le pointeur inférieur ne référence pas un sous-élément existant, 5 alors l'algorithme se poursuit à l'étape 1032. Dans le cas contraire, l'étape 1030 se poursuit à l'étape 1040 qui sera décrite ultérieurement. Lors de l'étape 1032, on obtient un sous-élément supérieur Es référencé par le pointeur supérieur du sous-élément à supprimer Er. 10 L'étape 1034 suit l'étape 1032, qui consiste à remplacer le sous-élément à supprimer Er par son sous-élément supérieur Es. Pour ce faire, le pointeur du sous-élément Ep référençant le sous-élément à supprimer Er est modifié pour référencer le sous-élément Em. L'étape 1034 est suivie de l'étape 1016 précédemment décrite. 15 De retour à l'étape 1030 dans le cas où le pointeur d'égalité du sous-élément à supprimer Er ne référence pas un sous-élément existant, notamment au moyen de l'attribut XL:M, et où le pointeur inférieur du sous-élément à supprimer Er référence un sous-élément existant, notamment au moyen de l'attribut XL:L, on vérifie, lors de l'étape 1040, notamment au moyen de l'attribut 20 XL:R, si le pointeur supérieur du sous-élément à supprimer Er référence ou non un sous-élément existant. Si le pointeur supérieur ne référence pas un sous-élément existant, l'algorithme se poursuit à l'étape 1042. Dans le cas contraire, l'étape 1040 est suivie de l'étape 1050 décrite ultérieurement. 25 L'étape 1042 consiste à obtenir un sous-élément inférieur Ei référencé par le pointeur inférieur du sous-élément à supprimer Er. L'étape 1044 suit l'étape 1042, qui consiste à remplacer le sous-élément à supprimer Er par son sous-élément inférieur Ei. Pour ce faire, le pointeur du sous-élément Ep référençant le sous-élément à supprimer Er est 30 modifié pour référencer le sousélément Em. L'étape 1044 est suivie de l'étape 1016 précédemment décrite. 2904447 36 Enfin, de retour à l'étape 1040 dans le cas où le pointeur d'égalité du sous-élément à supprimer Er, notamment l'attribut XL:M, ne référence pas un sous-élément existant, où le pointeur inférieur du sous-élément à supprimer Er, notamment l'attribut XL:L, référence un sous-élément existant et où le pointeur 5 supérieur du sous-élément à supprimer Er, notamment l'attribut XL:R, référence un sous-élément existant, alors, l'algorithme se poursuit à l'étape 1050, qui consiste à trouver le plus grand sous-élément Es inférieur au sous-élément à supprimer Er. L'algorithme détaillant cette étape est illustré en Figure 11 et sera décrit ultérieurement. 10 L'étape 1050 est suivie de l'étape 1052 consistant à modifier le pointeur du sous-élément Ep référençant le sous-élément à supprimer Er pour référencer le sous-élément Es. Ensuite, les pointeurs inférieur et supérieur du sous-élément à supprimer Er, notamment au moyen des attributs XL:L et XL:R, sont copiés 15 dans le sous-élément Es lors des étapes suivantes 1054 et 1056. L'étape 1056 est suivie de l'étape 1016 précédemment décrite. Selon un mode de réalisation, cet algorithme est modifié, notamment à l'étape 1050, afin d'utiliser soit le plus grand sous-élément Es inférieur au sous-élément Er, soit le plus petit sous-élément Ei supérieur au sous-élément 20 Er. Le choix de l'un de ces sous-éléments se fait en fonction de la profondeur respective des deux branches du sous-élément Er. En effet, selon un mode de réalisation, il est choisi le sous-élément ayant la plus grande profondeur afin de diminuer la profondeur de l'arbre. 25 Selon un autre mode de réalisation, on rééquilibre l'arbre de recherche en utilisant des techniques classiques d'équilibrage d'arbres binaires. Toutefois, cette optimisation de l'algorithme de suppression d'un sous-élément d'une collection est souvent moins important que l'optimisation de l'algorithme d'ajout d'un sous-élément. 30 En effet, lors de suppressions de sous-éléments, le temps nécessaire pour réaliser une recherche d'un sous-élément est, dans le pire des cas, égal au temps de recherche nécessaire dans la collection initiale, alors 2904447 37 que, lors d'ajouts, certaines recherches peuvent avoir des performances fortement dégradées. L'algorithme illustré en Figure 11 permet de déterminer le plus grand sous-élément inférieur à un sous-élément EO donné. En outre, cet algorithme 5 supprime les références vers le sous-élément trouvé, ce qui permet de la sorte de l'insérer à un endroit différent dans l'ordre de recherche. L'algorithme débute à l'étape 1105, qui consiste à définir la variable nommée Ep à la valeur du sous-élément E0. L'étape 1110 suit l'étape 1105, qui permet d'obtenir le sous-élément 10 inférieur au sous-élément Ep nommé Er. Pour continuer, l'algorithme va parcourir les liens présents dans l'attribut XL:R, c'est-à-dire ceux identifiant l'information de liaison supérieure en partant du sous-élément Er tant que ces liens font référence à des sous-éléments non vides. 15 Pour cela, l'algorithme comprend une étape 1115 de test, qui permet de déterminer si l'information de liaison supérieure identifiée par l'attribut XL:R du sous-élément Er existe. Si ladite information existe, l'algorithme se poursuit à l'étape 1120, qui consiste à obtenir le sous-élément supérieur Es du sous-élément Er. Lors 20 de l'étape suivante (étape 1125), la variable Ep est définie à la valeur du sous-élément Er et la variable Er est définie à la valeur du sous-élément Es. L'algorithme se poursuit à l'étape 1115 précédemment décrite de manière à réitérer les étapes précédemment décrites tant que l'information de liaison supérieure identifiée par l'attribut XL:R du sous-élément Er comprend 25 des éléments. Si, lors de l'étape 1115, l'information de liaison supérieure identifiée par l'attribut XL:R du sous-élément Er n'existe pas, alors, l'algorithme se poursuit à l'étape 1130, qui consiste à obtenir le sous-élément inférieur du sous-élément Er appelé Ei , puis, à l'étape 1135, qui consiste à remplacer le 30 sous-élément Er par son sous-élément inférieur Ei. Pour cela, le pointeur du sous-élément Ep référençant le sous-élément Er est modifié pour référencer le sous-élément Ei. 2904447 38 Enfin, l'algorithme retourne le résultat, c'est-à-dire une référence au sous-élément Er lors de l'étape 1140. L'algorithme de la Figure 12 illustre la suppression d'un sous-élément Er d'un élément parent dans un document, notamment la 5 suppression d'un fragment XML représentant un sous-élément Er d'un document XML. Afin que la recherche d'un sous-élément puisse être maintenue possible malgré la suppression d'un sous-élément, il convient de recalculer la valeur des adresses contenues dans le document et utilisées pour la mise en 10 oeuvre de l'invention. Pour ce faire, l'algorithme débute à l'étape 1205, qui consiste à calculer la taille Tr du fragment du document représentant le sous-élément Er qui va être supprimé. La taille Tr correspond au nombre d'octets qui vont être supprimés 15 du fichier. Ensuite, l'algorithme se poursuit à l'étape 1210, qui consiste à calculer l'adresse Or du sous-élément à supprimer Er. L'étape 1215 suivant l'étape 1210 consiste à effectuer la suppression du fragment représentant le sous-élément à supprimer Er du document. 20 Ensuite, l'algorithme parcourt le document pour mettre à jour les adresses. Pour ce faire, il se poursuit à l'étape 1220 au cours de laquelle on obtient la première adresse Oc présente dans le document. Lors de l'étape 1225, on compare la valeur de cette adresse Oc avec l'adresse Or. 25 Si l'adresse Oc est supérieure à l'adresse Or, c'est-à-dire si l'adresse Oc référence une partie du document située après l'ancien sous-élément Er, alors, l'algorithme se poursuit à l'étape 1230, qui consiste à modifier la valeur de l'adresse Oc pour prendre en compte la suppression du sous-élément Er. La nouvelle valeur de l'adresse Oc est son ancienne valeur diminuée 30 de la taille Tr. L'étape 1230 est suivie de l'étape 1235, qui consiste à vérifier s'il reste une autre adresse à traiter. 2904447 39 En outre, si lors de l'étape 1225, l'adresse Oc n'est pas supérieure à l'adresse Or, alors l'étape suivante est l'étape 1235. Lorsque toutes les adresses ont été traitées (étape 1235), alors, l'algorithme se termine à l'étape 1245. 5 S'il reste des adresses à traiter, alors l'étape 1235 est suivie de l'adresse 1240, qui consiste à obtenir l'adresse suivante Oc. L'étape 1240 est suivie de l'étape 1225 précédemment décrite. Selon une variante de réalisation, l'algorithme décrit en référence à la Figure 12 n'est pas appliqué chaque fois qu'un sous-élément est supprimé. 10 En effet, cet algorithme impose le parcours complet du fichier, ce qui peut demander un temps important. Dans cette variante, quand un élément est supprimé ses informations de liaisons, notamment les valeurs des attributs XL:R et XL:L prennent une valeur spécifique (par exemple la valeur XXXXXX ) pour indiquer que ce sous-élément est supprimé de la collection. 15 Éventuellement, une partie du contenu de ce sous-élément peut être modifié pour qu'une recherche classique ignore ce sous-élément. Par exemple, le sous-élément peut être transformé en un commentaire sans changer sa taille. Dans les faits, l'entité représentée par le sous-élément a été effectivement supprimée de la collection, mais le sous-élément lui-même reste présent dans le fichier. 20 Quand un nombre prédéfini d'entités ont été supprimés, ou quand un nombre prédéfini de changements ont été effectués sur la collection, le fichier peut être mis à jour pour supprimer les sous-éléments inutiles. Dans une autre variante de réalisation, la mise à jour utilise une version modifiée de l'algorithme décrit en référence à la Figure 12, qui traite 25 simultanément l'ensemble des sous-éléments à supprimer. Selon cette variante de réalisation, les variables Tr et Or sont organisées sous la forme d'un tableau contenant l'ensemble des informations sur les sous-éléments à supprimer. Ensuite, chaque adresse Oc est comparée à l'ensemble des valeurs 30 du tableau Or pour déterminer si la valeur correspondante du tableau Tr doit lui être soustraite. 2904447 Dans encore une autre variante de réalisation, la mise à jour utilise l'algorithme de création des pointeurs décrit en référence à la Figure 6. Selon cette variante, l'exécution peut être plus coûteuse que celle de la première variante toutefois, l'organisation des sous-éléments est bien 5 adaptée à l'état courant de la collection. En référence à la Figure 13, un dispositif apte à fonctionner en tant que dispositif de recherche d'un sous-élément contenant une information d'indentification d'une entité recherchée et/ou dispositif d'ajout d'un sous-élément contenant une information d'indentification d'une nouvelle entité 10 et/ou dispositif de suppression d'un sous-élément contenant une information d'identification d'une entité selon l'invention est maintenant décrit dans sa configuration matérielle. Le dispositif de traitement d'information de la Figure 13 possède l'ensemble des moyens nécessaires à la mise en oeuvre du procédé de 15 recherche d'un sous-élément contenant une information d'indentification d'une entité recherchée et/ou du procédé d'ajout d'un sous-élément contenant une information d'indentification d'une nouvelle entité et/ou du procédé de suppression d'un sous-élément contenant une information d'identification d'une entité selon l'invention. 20 Selon le mode de réalisation choisi, ce dispositif peut être par exemple un micro-ordinateur 1300 connecté à différentes périphériques, par exemple une caméra numérique 1301 (ou un scanner, ou tout autre moyen d'acquisition ou de stockage d'image) reliée à une carte graphique et fournissant ainsi les informations à traiter selon l'invention. 25 Le micro-ordinateur 1300 comporte de préférence une interface de communication 1302 reliée à un réseau 1303 apte à transmettre des informations numériques. Le micro-ordinateur 1300 comporte également un moyen de stockage 1304, tel qu'un disque dur, ainsi qu'un lecteur de disquette 1305. La disquette 1306, comme le disque 1304, peuvent contenir des 30 données d'implantation logicielle de l'invention, ainsi que le code de l'invention qui, une fois lu par le micro-ordinateur 1300, sera stocké dans le disque dur 1304. 2904447 41 Selon une variante, le ou les programmes permettant au dispositif 1300 de mettre en oeuvre l'invention sont stockés dans une mémoire morte ROM 1307. Selon une autre variante, le ou les programmes sont reçus totalement 5 ou partiellement à travers le réseau de communication 1303 pour être stockés comme indiqué. Le micro-ordinateur 1300 peut également être relié à un microphone 1308 par l'intermédiaire d'une carte d'entrée/sortie (non représentée). Le micro-ordinateur 1300 comprend également un écran 1309 pour visualiser les 10 informations à traiter et/ou servir d'interface avec l'utilisateur, afin que l'utilisateur puisse, par exemple, paramétrer certains modes de traitement à l'aide du clavier 1310 ou de tout autre moyen approprié, tel qu'une souris. L'unité centrale CPU 1311 exécute les instructions relatives à la mise en oeuvre de l'invention, ces instructions étant stockées dans la mémoire morte 15 ROM 1307 ou dans les autres éléments de stockage décrits. Lors de la mise sous tension, les programmes et procédés de traitement stockés dans une des mémoires non-volatiles, par exemple la ROM 1307, sont transférés dans la mémoire vive RAM 1312, qui contiendra alors le code exécutable de l'invention, ainsi que les variables nécessaires à la mise en 20 oeuvre de l'invention. En variante, les procédés peuvent être stockés dans différents emplacements de stockage du dispositif 1300. De manière générale, un moyen de stockage d'information lisible par un ordinateur ou par un microprocesseur, intégré ou non au dispositif, éventuellement amovible, mémorise un programme 25 dont l'exécution met en oeuvre les procédés de recherche, création depointeurs, ajout ou suppression selon l'invention. Il est aussi possible de faire évoluer le mode de réalisation de l'invention, par exemple en ajoutant des méthodes de recherche, de création de pointeurs, d'ajout et de suppression actualisées ou améliorées qui sont transmises par le réseau de communication 30 1303 ou chargées par l'intermédiaire d'une ou plusieurs disquettes 1306. Bien entendu, les disquettes 1306 peuvent être remplacées par tout support d'information tel que CD-ROM ou carte mémoire. 2904447 42 Un bus de communication 1313 permet la communication entre les différents éléments du micro-ordinateur 1300 et les éléments reliés à celui-ci. On notera que la représentation du bus 1313 n'est pas limitative. En effet, l'unité centrale CPU 1311 est, par exemple, susceptible de communiquer des 5 instructions à tout élément du micro-ordinateur 1300, directement ou par l'intermédiaire d'un autre élément du micro-ordinateur 1300. Bien entendu, la présente invention n'est nullement limitée aux modes de réalisation décrits et représentés, mais englobe, au contraire, toute variante à la portée de l'homme du métier. 10 REVENDICATIONS 1. Procédé de recherche d'un sous-élément contenant une information d'identification d'une entité recherchée dans un fichier écrit en langage de balisage, ledit sous-élément étant contenu dans un élément parent, ledit élément parent contenant une pluralité de sous-éléments associés pour chacun à une entité, caractérisé en ce qu'au moins un sous-élément comprend au moins : - une information d'identification d'une entité apte à être ordonnancée, - une information de liaison inférieure identifiant au moins un sous-élément ayant une information d'identification inférieure à celle dudit sous-élément, et - une information de liaison supérieure identifiant au moins un sous-élément ayant une information d'identification supérieure à celle dudit sous-élément, le procédé comprenant les étapes suivantes appliquées à un sous-élément courant : -comparaison de l'information d'identification du sous-élément recherché avec l'information d'identification du sous- élément courant, - si l'information d'identification du sous-élément recherché est inférieure à l'information d'identification du sous-élément courant, le sous-élément courant devient le sous-élément identifié par l'information de liaison inférieure du sous-élément courant, - si l'information d'identification du sous-élément recherché est supérieure à l'information d'identification du sous-élément courant, le sous-élément courant devient le sous-élément identifié par l'information de liaison supérieure du sous-élément courant. 2. Procédé de recherche selon la revendication 1, caractérisé en ce que, tant que l'information d'identification du sous-élément recherché est 2904447 44 différente de l'information d'identification du sous-élément courant, lesdites étapes sont réitérées. 3. Procédé de recherche selon la revendication 2, caractérisé en ce 5 qu'au moins deux sous-éléments comprenant des informations d'identification équivalentes concernant au moins deux entités, lesdites étapes sont réitérées tant que l'information d'identification du sous-élément recherché est équivalente à l'information d'identification du sous-élément courant. 10 4. Procédé de recherche selon l'une quelconque des revendications précédentes, caractérisé en ce qu'au moins un sous-élément comprend en outre une information de liaison d'équivalence identifiant au moins un sous-élément ayant une information d'identification équivalente à celle dudit sous-élément. 15 5. Procédé de recherche selon la revendication 4, caractérisé en ce que si l'information d'identification du sous-élément recherché est équivalente à l'information d'identification du sous-élément courant, le sous-élément recherché comprend au moins un sous-élément identifié par l'information de 20 liaison d'équivalence du sous-élément courant. 6. Procédé de recherche selon l'une quelconque des revendications précédentes, caractérisé en ce que les informations de liaison des sous-éléments contenus dans l'élément parent structurent les souséléments 25 sous la forme d'un arbre. 7. Procédé de recherche selon l'une quelconque des revendications précédentes, caractérisé en ce que, au moins un sous-élément comprenant une pluralité d'informations d'identification de types différents, le procédé comprend 30 une étape préalable de détermination des types d'information d'identification sur lesquels la recherche est à effectuer, lesdites étapes étant réalisées sur les types d'information d'identification déterminés. 2904447 45 8. Procédé de recherche selon l'une quelconque des revendications précédentes, caractérisé en ce que l'information d'identification est apte à être déterminée à partir d'information sur l'entité. 5 9. Procédé de modification d'un fichier écrit en langage de balisage, ledit fichier contenant un élément parent comprenant une pluralité de sous-éléments associés pour chacun à une entité, caractérisé en ce qu'il comprend les étapes suivantes : 10 - obtention d'un premier sous-élément ; - détermination d'une information d'identification pour ce premier sous-élément ; détermination d'au moins un sous-élément inférieur ayant une information d'identification inférieure à celle dudit premier sous-élément ; 15 -détermination d'au moins un sous-élément supérieur ayant une information d'identification supérieure à celle dudit premier sous-élément ; -modification du premier sous-élément par ajout d'une information de liaison inférieure identifiant le sous-élément inférieur déterminé et une information de liaison supérieure identifiant le sous-élément supérieur 20 déterminé. 10. Procédé de modification d'un fichier selon la revendication 9, caractérisé en ce qu'il comprend une étape préalable de détermination d'une liste des sous-éléments ordonnancés en fonction de leur information 25 d'identification ; le premier sous-élément déterminé est le sous-élément présent sensiblement au milieu de la liste des sous-éléments ordonnancés ; le sous-élément inférieur est le sous-élément présent sensiblement au milieu de la liste des sous-éléments ayant une information d'identification 30 inférieure au premier sous-élément ; 2904447 46 le sous-élément supérieur est le sous-élément présent sensiblement au milieu de la liste des sous-éléments ayant une information d'identification supérieure au premier sous-élément. 5 11. Procédé de modification selon la revendication 9 ou la revendication 10, caractérisé en ce qu'il comprend les étapes suivantes : -détermination d'au moins un sous-élément équivalent dont l'information d'identification de ce sous-élément équivalent est équivalente à celle dudit premier sous-élément ; 10 - modification du premier sous-élément par ajout d'une information de liaison d'équivalence identifiant le sous-élément. 12. Procédé de modification selon l'une quelconques des revendications 9 à 11, caractérisé en ce que les étapes sont répétées pour 15 créer une structure d'arbre à partir des sous-éléments. 13. Procédé de modification selon l'une quelconque des revendications 9 à 12, caractérisé en ce qu'il comprend une étape préalable de détermination de l'information d'identification des sous-éléments à partir 20 d'information sur l'entité. 14. Procédé de modification selon l'une quelconque des revendications 9 à 13, caractérisé en ce qu'il comprend une étape préalable de sélection de sous-éléments à modifier en fonction d'au moins un critère de 25 sélection prédéterminé. 15. Procédé d'ajout d'un sous-élément contenant une information d'identification d'une nouvelle entité dans un élément parent dans un fichier écrit en langage de balisage, caractérisé en ce qu'au moins un sous-élément 30 comprend au moins : une information d'identification d'une entité apte à être ordonnancée, 2904447 47 - une information de liaison inférieure identifiant au moins un sous-élément ayant une information d'identification inférieure à celle dudit sous-élément, et - une information de liaison supérieure vers au moins un 5 sous-élément ayant une information d'identification supérieure à celle dudit sous-élément, le procédé comprenant les étapes suivantes : - détermination d'un sous-élément cible en fonction de l'information d'identification de l'entité à ajouter, 10 - si l'information d'identification du sousélément à ajouter est inférieure à l'information d'identification du sous-élément cible, alors une information de liaison inférieure identifiant le sous-élément à ajouter est ajoutée au sous-élément cible, si l'information d'identification du sous-élément à ajouter est 15 supérieure à l'information d'identification du sous-élément cible, alors une information de liaison supérieure identifiant le sous-élément à ajouter est ajoutée au sous-élément cible, ajout du sous-élément à ajouter dans le fichier. 20 16. Procédé d'ajout selon la revendication 15, caractérisé en ce que l'étape de détermination d'un sous-élément cible comprend les étapes suivantes réalisées par rapport au sous-élément courant : - comparaison de l'information d'identification du sous-élément à ajouter avec l'information d'identification du sous-élément courant, 25 - si l'information d'identification du sous-élément à ajouter est inférieure à l'information d'identification du sous-élément courant, o si l'information de liaison inférieure du sous-élément courant n'identifie aucun sous-élément, alors le sous-élément cible est le sous-élément courant; 30 o sinon, le sous-élément courant devient le sous-élément identifié par l'information de liaison inférieure du sous-élément courant ; 2904447 48 -si l'information d'identification du sous-élément à ajouter est supérieure à l'information d'identification du sous-élément courant, o si l'information de liaison supérieure du sous-élément courant n'identifie aucun sous-élément, alors le sous-élément cible 5 est le sous-élément courant ; o sinon, le sous-élément courant devient le sous-élément identifié par l'information de liaison supérieure du sous-élément courant. 10 17. Procédé de suppression d'un sous-élément contenant une information d'identification d'une entité dans un élément parent dans un fichier écrit dans un langage de balisage, caractérisé en ce qu'au moins un sous-élément comprend au moins : une information d'identification d'une entité, 15 -une information de liaison inférieure identifiant au moins un sous-élément ayant une information d'identification inférieure à celle dudit sous-élément, et une information de liaison supérieure identifiant au moins un sous-élément ayant une information d'identification supérieure à celle 20 dudit sous-élément ; le procédé comprenant les étapes suivantes : détermination d'un sous-élément cible contenant une information de liaison identifiant dudit sous-élément à supprimer, - obtention d'un sous-élément de remplacement identifié par une 25 information de liaison dudit sous-élément à supprimer, modification de ladite information de liaison dudit sous-élément cible pour identifier ledit sous-élément de remplacement obtenu. 18. Dispositif de recherche d'un sous-élément contenant une 30 information d'identification d'une entité recherchée dans un fichier écrit en langage de balisage, ledit sous-élément étant contenu dans un élément parent, ledit élément parent contenant une pluralité de sous-éléments associés pour 2904447 49 chacun à une entité, caractérisé en ce qu'au moins un sous-élément comprend au moins : - une information d'identification d'une entité apte à être ordonnancée, 5 - une information de liaison inférieure identifiant au moins un sous-élément ayant une information d'identification inférieure à celle dudit sous-élément, et - une information de liaison supérieure identifiant au moins un sous- élément ayant une information d'identification supérieure à celle dudit 10 sous-élément, le dispositif comprenant : - des moyens de comparaison de l'information d'identification du sous-élément recherché avec l'information d'identification d'un sous-élément courant, 15 - des moyens de modification aptes à modifier ledit sous-élément courant tel que le sous-élément identifié par l'information de liaison inférieure du sous-élément courant devient le sous-élément courant si l'information d'identification du sous-élément recherché est inférieure à l'information d'identification du sous-élément courant, 20 - des moyens de modification aptes à modifier ledit sous-élément courant tel que le sous-élément identifié par l'information de liaison supérieure du sous-élément courant devient le sous-élément courant si l'information d'identification du sous-élément recherché est supérieure à l'information d'identification du sous-élément courant. 25 19. Dispositif de modification d'un fichier écrit en langage de balisage, ledit fichier contenant un élément parent comprenant une pluralité de sous-éléments associés pour chacun à une entité, caractérisé en ce qu'il comprend : 30 - des moyens d'obtention d'un premier sous-élément ; - des moyens de détermination d'une information d'identification pour ce premier sous-élément ; 2904447 50 - des moyens de détermination d'au moins un sous-élément inférieur aptes à déterminer un sous-élément inférieur ayant une information d'identification inférieure à celle dudit premier sous-élément ; - des moyens de détermination d'au moins un sous-élément 5 supérieur aptes à déterminer un sous-élément supérieur ayant une information d'identification supérieure à celle dudit premier sous-élément ; - des moyens de modification du premier sous-élément par ajout d'une information de liaison inférieure identifiant le sous-élément inférieur déterminé et une information de liaison supérieure identifiant le sous-élément 10 supérieur déterminé. 20. Dispositif d'ajout d'un sous-élément contenant une information d'identification d'une nouvelle entité dans un élément parent dans un fichier écrit en langage de balisage, caractérisé en ce qu'au moins un sous-élément 15 comprend au moins : - une information d'identification d'une entité apte à être ordonnancée, - une information de liaison inférieure identifiant au moins un sous-élément ayant une information d'identification inférieure à celle dudit 20 sous-élément, et - une information de liaison supérieure vers au moins un sous-élément ayant une information d'identification supérieure à celle dudit sous-élément, le dispositif comprenant 25 - des moyens de détermination d'un sous-élément cible en fonction de l'information d'identification de l'entité à ajouter, - des moyens d'ajout au sous-élément cible d'une information de liaison inférieure identifiant le sous-élément à ajouter dans le cas où l'information d'identification du sous-élément à ajouter est inférieure à 30 l'information d'identification du sous-élément cible, - des moyens d'ajout au sous-élément cible d'une information de liaison supérieure identifiant le sous-élément à ajouter dans le cas où 2904447 51 l'information d'identification du sous-élément à ajouter est supérieure à l'information d'identification du sous-élément cible, - des moyens d'ajout du sous-élément à ajouter dans le fichier. 5 21. Dispositif de suppression d'un sous-élément contenant une information d'identification d'une entité dans un élément parent dans un fichier écrit dans un langage de balisage, caractérisé en ce qu'au moins un sous-élément comprend au moins : - une information d'identification d'une entité, 10 une information de liaison inférieure identifiant au moins un sous-élément ayant une information d'identification inférieure à celle dudit sous-élément, et une information de liaison supérieure identifiant au moins un sous-élément ayant une information d'identification supérieure à celle 15 dudit sous-élément ; le dispositif comprenant : des moyens de détermination d'un sous-élément cible contenant une information de liaison identifiant ledit sous-élément à supprimer, - des moyens d'obtention d'un sous-élément de remplacement identifié 20 par une information de liaison dudit sous-élément à supprimer, des moyens de modification de ladite information de liaison dudit sous-élément cible pour identifier ledit sous-élément de remplacement obtenu. 25 22. Support d'informations lisible par un système informatique, éventuellement totalement ou partiellement amovible, notamment CD-ROM ou support magnétique, tel un disque dur ou une disquette, ou support transmissible tel un signal électrique ou optique, ce support d'informations comprenant des instructions d'un programme d'ordinateur permettant la mise 30 en oeuvre du procédé de recherche d'un sous-élément contenant une information d'identification d'une entité recherchée dans un fichier écrit en 2904447 52 langage de balisage selon l'une quelconque des revendications 1 à 8, lorsque ce programme est chargé et exécuté par un système informatique. 23. Support d'informations lisible par un système informatique, 5 éventuellement totalement ou partiellement amovible, notamment CD-ROM ou support magnétique, tel un disque dur ou une disquette, ou support transmissible tel un signal électrique ou optique, ce support d'informations comprenant des instructions d'un programme d'ordinateur permettant la mise en oeuvre du procédé de modification d'un fichier écrit en langage de balisage 10 selon l'une quelconque des revendications 9 à 14, lorsque ce programme est chargé et exécuté par un système informatique. 24. Support d'informations lisible par un système informatique, éventuellement totalement ou partiellement amovible, notamment CD-ROM ou 15 support magnétique, tel un disque dur ou une disquette, ou support transmissible tel un signal électrique ou optique, ce support d'informations comprenant des instructions d'un programme d'ordinateur permettant la mise en oeuvre du procédé d'ajout d'un sous-élément contenant une information d'identification d'une nouvelle entité dans un élément parent dans un fichier 20 écrit en langage de balisage selon l'une quelconque des revendications 15 à 16, lorsque ce programme est chargé et exécuté par un système informatique. 25. Support d'informations lisible par un système informatique, éventuellement totalement ou partiellement amovible, notamment CD-ROM ou 25 support magnétique, tel un disque dur ou une disquette, ou support transmissible tel un signal électrique ou optique, ce support d'informations comprenant des instructions d'un programme d'ordinateur permettant la mise en oeuvre du procédé de suppression d'un sous-élément contenant une information d'identification d'une entité dans un élément parent dans un fichier 30 écrit dans un langage de balisage selon la revendication 17, lorsque ce programme est chargé et exécuté par un système informatique. 2904447 53 26. Programme d'ordinateur stocké sur un support d'informations, ledit programme contenant des instructions permettant la mise en oeuvre du procédé de recherche d'un sous-élément contenant une information d'identification d'une entité recherchée dans un fichier écrit en langage de 5 balisage selon l'une quelconque des revendications 1 à 8, lorsque ce programme est chargé et exécuté par un système informatique. 27. Programme d'ordinateur stocké sur un support d'informations, ledit programme contenant des instructions permettant la mise en oeuvre du 10 procédé de modification d'un fichier écrit en langage de balisage selon l'une quelconque des revendications 9 à 14, lorsque ce programme est chargé et exécuté par un système informatique. 28. Programme d'ordinateur stocké sur un support d'informations, 15 ledit programme contenant des instructions permettant la mise en oeuvre du procédé d'ajout d'un sous-élément contenant une information d'identification d'une nouvelle entité dans un élément parent dans un fichier écrit en langage de balisage selon l'une quelconque des revendications 15 à 16, lorsque ce programme est chargé et exécuté par un système informatique. 20 29. Programme d'ordinateur stocké sur un support d'informations, ledit programme contenant des instructions permettant la mise en oeuvre du procédé de suppression d'un sous-élément contenant une information d'identification d'une entité dans un élément parent dans un fichier écrit dans un 25 langage de balisage selon la revendication 17, lorsque ce programme est chargé et exécuté par un système informatique. 30