Brevet FR2913274A1 — publié le 20080905

La présente invention concerne un procédé et un dispositif de codage d'un document et un procédé et un dispositif de décodage d'un document. Elle s'applique, en particulier, au langage XML (acronyme de Extensible Markup Language pour langage de balisage extensible). Ce langage est une syntaxe pour définir des langages informatiques. XML permet ainsi de créer des langages adaptés à des utilisations différentes mais pouvant être traités par les mêmes outils. Un document XML est composé d'éléments, chaque élément commençant par une balise ouvrante comportant le nom de l'élément (par exemple: ) et se terminant par une balise fermante comportant, elle aussi, le nom de l'élément (par exemple: ). Chaque élément peut contenir d'autres éléments, appelés éléments enfants (une terminologie de filiation, parent , enfant , étant utilisée pour décrire les relations entre les éléments imbriqués) ou des données textuelles. D'autre part, un élément peut être précisé par des attributs, chaque attribut étant défini par un nom et ayant une valeur. Les attributs sont placés dans la balise ouvrante de l'élément qu'ils précisent (par exemple: ). La syntaxe XML permet aussi de définir des commentaires (par exemple: ) et des instructions de traitement, qui peuvent préciser à une application informatique les traitements à appliquer au document XML (par exemple: ). L'ensemble des éléments, attributs, données textuelles, commentaires et instructions de traitement sont regroupés sous le nom générique de noeud . Un document XML peut être décrit en termes d'événements, par exemple dans le cas de parseurs XML travaillant en mode streaming, c'est-à-dire représentant un document XML comme un flux de données, tels que les parseurs SA) acronyme de Simple API for XML , pour Interface de programmation simple pour XML). Ainsi, par exemple, un élément XML sera représenté par un événement de début d'élément, un ensemble d'événements représentant ses attributs, un autre ensemble d'événements représentant son contenu et un événement de fin d'élément. Plusieurs langages XML différents peuvent contenir des éléments de même nom. Pour pouvoir mélanger plusieurs langages XML différents, un ajout a été effectué à la syntaxe XML permettant de définir des espaces de nommage ( Namespace en anglais). Deux éléments seront identiques seulement s'ils ont le même nom et se trouvent dans le même espace de nommage. Un espace de nommage est défini par une URI (acronyme de Uniform Resource Identifier , pour identifiant uniforme de ressource), par exemple: http://canon.crf.fr/xml/monlangage . L'utilisation d'un espace de nommage dans un document XML passe par la définition d'un préfixe qui est un raccourci vers l'URI de cet espace de nommage. Ce préfixe est défini à l'aide d'un attribut spécifique (par exemple: xmlns:ml="http://canon.crf.fr/xml/monlangage" associe le préfixe ml à l'URI http://canon.crf.fr/xml/monlangage ). Ensuite, l'espace de nommage d'un élément ou d'un attribut sera précisé en faisant précéder son nom par le préfixe associé à l'espace de nommage suivi de : (par exemple: ). Le standard XML Schema définit un langage permettant de décrire la structure d'un ensemble de documents XML. Un document XML Schema est un document XML, et décrit l'ensemble des éléments et des attributs pouvant être présents dans un document XML conforme à ce document XML Schema, ainsi que les relations entre ces éléments et ces attributs. D'autres systèmes permettent de décrire la structure d'un ensemble de documents XML, comme les DTD (acronyme de Document Type Definition , pour Définition de Type de Document) ou comme le langage Relax NG. XML présente de nombreux avantages et est devenu un standard pour stocker des données dans un fichier ou pour échanger des données. XML permet en particulier de disposer de nombreux outils pour traiter les fichiers générés. D'autre part, un document XML peut être édité manuellement avec un simple éditeur de texte. En outre, comme un document XML contient sa structure intégrée aux données, ce document est très lisible même sans en connaître la spécification. Le principal inconvénient de la syntaxe XML est d'être très prolixe. Ainsi la taille d'un document XML peut être plusieurs fois supérieure à la taille intrinsèque des données. Cette taille importante des documents XML induit aussi un temps de traitement important lors de la génération et surtout de la lecture de documents XML. Pour remédier à ces inconvénients, d'autres méthodes pour encoder un document XML ont été recherchées. Le but de ces méthodes est de coder le contenu du document XML sous une forme plus efficace, mais permettant de reconstruire facilement le document XML. Cependant, la plupart de ces méthodes ne conservent pas l'ensemble des avantages du format XML. Parmi ces méthodes, la plus simple consiste à coder les données de structure dans un format binaire au lieu d'utiliser un format textuel. En outre, la redondance des informations structurelles dans le format XML peut être supprimée ou au moins diminuée (par exemple, il n'est pas forcément utile de préciser le nom de l'élément dans la balise ouvrante et la balise fermante). Une autre méthode est d'utiliser une table d'index, en particulier pour les noms d'éléments et d'attributs qui sont généralement répétés dans un document XML. Ainsi, lors de la première occurrence d'un nom d'élément, celui-ci est codé normalement dans le fichier et un index lui est associé. Puis, pour les occurrences suivantes de ce nom d'élément, l'index sera utilisé à la place de la chaîne complète, réduisant la taille du document généré, mais facilitant aussi la lecture (il n'y a plus besoin de lire la chaîne complète dans le fichier, et en outre, la détermination de l'élément lu peut être réalisée par une comparaison d'entiers au lieu d'une comparaison de chaînes de caractères). Un deuxième ensemble de méthodes repose sur l'utilisation de motifs (en anglais patterns ) détectés dans le document XML à coder. Ces motifs représentent les informations structurelles et certaines informations de contenu du document XML. Le but de ces méthodes est de coder les motifs répétés dans le document XML pour éviter de coder plusieurs fois les mêmes informations. Ces méthodes de codage sont très efficaces pour les documents XML contenant de nombreuses répétitions de structures identiques ou très similaires. Dans certains cas, il est intéressant de pouvoir commencer à encoder un document sans le, connaître entièrement (en anglais streaming ). Cependant, concernant XML binaire et les motifs, les méthodes précédemment décrites sont destinées à être appliquées sur des documents dont on a une connaissance globale. Cependant, aucune des méthodes de détection des motifs citées ci-dessus n'est adaptée au streaming. La présente invention vise à remédier à ces inconvénients et, notamment, de fournir une méthode pour produire des motifs structurels permettant d'encoder efficacement des données XML en streaming. A cet effet, selon un premier aspect, la présente invention vise un procédé de codage d'un document structuré, caractérisé en ce qu'il comporte : - une étape d'obtention d'au moins un motif dit primaire représentant au moins des informations structurelles de données dudit document, - une étape d'obtention d'une partie du document différente de la totalité du document, - une étape de création d'au moins un motif dérivé formé par modification d'un motif primaire, représentant des données de ladite partie du document et - une étape de codage de données du document pour fournir un code, ledit code associant un motif à au moins une donnée codée. Ainsi, le procédé objet de la présente invention permet de partir de motifs primaires, puis d'enrichir ces motifs primaires quand plus d'informations du document sont disponibles. Grâce à ce mécanisme, si l'on ignore certaines informations redondantes, cette ignorance n'est que temporaire, et l'on dispose d'un moyen efficace d'ajouter ces informations ignorées aux motifs déjà définis en particulier en codant la différence avec un motif de la même famille partageant une structure commune. Selon des caractéristiques particulières, au cours de l'étape de codage, on effectue une étape de détermination d'un motif décrivant le mieux des données à coder, le motif associé aux dites données étant ce motif le plus proche. Selon des caractéristiques particulières, au cours de ladite étape de détermination d'un motif décrivant le mieux des données à coder, le motif décrivant le mieux des données à coder est le motif pour lequel le codage des différences entre les données à coder et ledit motif utilise la plus faible quantité d'information. Grâce à chacune de ces dispositions, le codage est optimisé en termes de quantité d'information résultante. Selon des caractéristiques particulières, le procédé tel que succinctement exposé ci-dessus comporte, en outre, une étape de codage d'une définition d'un motif associé à des données codées. Selon des caractéristiques particulières, au cours de l'étape de codage d'une définition d'un motif, la définition du motif est codée en codant la différence entre les données représentées par ce motif et les données représentées par un autre motif déjà codé. Grâce à ce type de codage, la définition de motif est également codée de manière efficace. Selon des caractéristiques particulières, le procédé tel que succinctement exposé ci-dessus comporte une étape de déclenchement de l'étape de création d'au moins un motif dérivé, au cours de laquelle on compare avec au moins une valeur seuil prédéterminée, pour des données de ladite partie du document, un nombre d'instances de motifs d'une famille de motif comportant un motif primaire et chaque motif dérivé dudit motif primaire et, en cas d'égalité, on déclenche l'étape de création d'au moins un motif dérivé. Selon des caractéristiques particulières, au cours de l'étape de déclenchement, on compare ledit nombre d'instances à une valeur seuil limite et si le nombre d'instances est supérieur à ladite valeur seuil limite, on ne déclenche pas d'étape de création de motif dérivé. Ainsi, on limite le coût de chaque motif, tant en termes d'espace mémoire occupé qu'en termes d'opérations à effectuer : en effet, on définit le nombre maximal d'instances considérées pour construire et enrichir un motif tant que ce nombre n'est pas atteint on stocke les instances mais, une fois ce nombre atteint, on sait que plus aucun traitement n'est à réaliser sur le motif, et on peut donc effacer les instances que l'on avait conservées. Selon des caractéristiques particulières, au cours de l'étape de création d'au moins un motif dérivé, on effectue une étape d'extraction de redondance de différentes instances d'un motif et le motif dérivé représente ladite redondance. On note que le motif dérivé représente la redondance mais aussi d'autres informations : celles qui figurent dans le motif primaire, et aussi, le cas échéant, des informations de redondances précédemment extraites. Selon des caractéristiques particulières, au cours de l'étape d'extraction de redondance, ladite redondance comporte chaque sous-motif invariant des dites instances. Selon des caractéristiques particulières, au cours de l'étape 25 d'extraction de redondance, ladite redondance comporte chaque contenu invariant desdites instances. Grâce à chacune de ces dispositions, le taux de compression est élevé puisque des parties invariantes des instances sont représentées par le même motif dérivé. 30 Selon des caractéristiques particulières, au cours de l'étape d'extraction de redondance, ladite redondance comporte chaque sous-motif possédant un taux de présence dans les instances supérieur à une valeur limite prédéterminée. Selon des caractéristiques particulières, au cours de l'étape d'extraction de redondance, ladite redondance comporte chaque contenu possédant un taux de présence dans les instances supérieur à une valeur limite prédéterminée. Grâce à chacune de ces dispositions, par rapport à l'utilisation des sous-motifs ou contenus invariants, le même motif dérivé représente plus d'instances différentes tout en maintenant un bon taux de compression. Ainsi, on hiérarchise les données contenues dans un motif par degré de probabilité de redondance : quand peu d'instances d'un motif sont disponibles, on cherche la redondance la plus probable. En revanche, quand davantage d'instances sont disponibles, on s'intéresse à des informations qui ont moins de chances d'être redondantes. Selon des caractéristiques particulières, au cours de l'étape de codage, le code fourni représente la différence entre les données représentées par un motif et le motif auquel lesdites données sont associées. Selon des caractéristiques particulières, ledit document est un document en langage XML. Selon des caractéristiques particulières, le procédé tel que succinctement exposé ci-dessus comporte une étape de création d'un événement composite qui rassemble un élément du document et au moins un de ses noeuds enfants associés au même motif que ledit élément. On note que cet événement composite remplace les événements distincts et réunit, d'un côté, une référence à un motif (ce qui permet de connaître la structure des données) et, de l'autre, les informations qui figurent dans l'instance mais pas dans ce motif (par exemple des informations de contenu textuel). Ainsi, toutes les informations sont conservées sous la forme d'un seul événement, au lieu de l'être dans des événements distincts. On libère ainsi de la place mémoire, et, par conséquent, on peut acquérir plus de données en même temps, ce qui permet d'obtenir de meilleurs résultats en termes de compression. Ainsi, le procédé objet de la présente invention est efficace pour la création de motifs, aussi bien en termes de vitesse d'encodage qu'en termes de taille des données. Selon un deuxième aspect, la présente invention vise un procédé de décodage d'un document structuré, de caractérisé en ce qu'il comporte : - une étape d'obtention d'au moins un motif dit primaire représentant au moins des informations structurelles de données dudit document, - une étape d'obtention de données dudit document à décoder 10 associées audit au moins un motif primaire, - une étape de création d'au moins un motif dérivé formé par modification d'un motif primaire, représentant lesdites données et - une étape de décodage des données à décoder en fonction dudit motif dérivé. 15 Selon un troisième aspect, la présente invention vise un dispositif de codage d'un document structuré, caractérisé en ce qu'il comporte : - un moyen d'obtention d'au moins un motif dit primaire représentant au moins des informations structurelles de données dudit document, 20 - un moyen d'obtention d'une partie du document différente de la totalité du document, - un moyen de création d'au moins un motif dérivé formé par modification d'un motif primaire, représentant des données de ladite partie du document et 25 - un moyen de codage de données du document pour fournir un code, ledit code associant un motif à au moins une donnée codée. Selon un quatrième aspect, la présente invention vise un dispositif de décodage d'un document structuré, de caractérisé en ce qu'il comporte : - un moyen d'obtention d'au moins un motif dit primaire 30 représentant au moins des informations structurelles de données dudit document, - un moyen d'obtention de données dudit document à décoder associées audit au moins un motif primaire, - un moyen de création d'au moins un motif dérivé formé par modification d'un motif primaire, représentant lesdites données et - un moyen de décodage des données à décoder en fonction dudit motif dérivé. Selon un cinquième aspect, la présente invention vise un programme d'ordinateur chargeable dans un système informatique, ledit programme contenant des instructions permettant la mise en oeuvre du procédé de codage tel que succinctement exposé ci-dessus et/ou du procédé de décodage tel que succinctement exposé ci-dessus. Selon un sixième aspect, la présente invention vise un support d'informations lisibles par un ordinateur ou un microprocesseur, amovible ou non, conservant des instructions d'un programme informatique, caractérisé en ce qu'il permet la mise en oeuvre du procédé de codage tel que succinctement exposé ci-dessus et/ou du procédé de décodage tel que succinctement exposé ci-dessus. Les avantages, buts et caractéristiques de ce procédé de codage, de ces dispositifs, de ce programme et de ce support d'information étant similaires à ceux du procédé objet de la présente invention, tel que succinctement exposé ci-dessus, ils ne sont pas rappelés ici. D'autres avantages, buts et caractéristiques de la présente invention ressortiront de la description qui va suivre faite, dans un but explicatif et nullement limitatif en regard des dessins annexés, dans lesquels : - la figure 1 représente, schématiquement, un mode de réalisation particulier du dispositif de codage et du dispositif de décodage objets de la présente invention, - la figure 2 représente, sous forme d'un logigramme, un mode de réalisation particulier du procédé de codage objet de la présente invention, - la figure 3 représente, sous forme d'un logigramme, des étapes mises en oeuvre pour une première méthode de création de motifs de l'une des étapes illustrées en figure 2, - la figure 4 représente, sous forme d'un logigramme, des étapes mises en oeuvre pour une deuxième méthode de création de motifs de l'une des étapes illustrées en figure 2, - la figure 5 représente, sous forme d'un logigramme, des étapes 5 d'encodage d'étapes illustrées en figure 2 et la figure 6 représente, sous forme d'un logigramme, des étapes d'un mode de réalisation particulier du procédé de décodage objet de la présente invention. On observe, en figure 1, un mode particulier de réalisation du 10 dispositif de codage et du dispositif de décodage objets de la présente invention, 100 et différents périphériques adaptés à implémenter chaque aspect de la présente invention. Dans le mode de réalisation illustré en figure 1, le dispositif 100 est un micro-ordinateur de type connu connecté, dans le cas du codeur, par le biais d'une carte graphique 104, à un moyen d'acquisition ou de 15 stockage de documents structurés 101, par exemple une interface avec un réseau informatique local ou avec une mémoire, adapté à fournir des données d'un document structuré. Le dispositif 100 comporte une interface de communication 118 reliée à un réseau 134 apte à transmettre, en entrée, des données numériques 20 à coder ou à décoder et, en sortie, des données codées ou décodées par le dispositif 100. Le dispositif 100 comporte également un moyen de stockage 112, par exemple un disque dur, et un lecteur 114 de disquette 116. La disquette 116 et le moyen de stockage 112 peuvent contenir des données à coder ou à décoder, des données codées ou décodées et un programme 25 informatique adapté à implémenter le procédé de codage ou le procédé de décodage objets de la présente invention. Selon une variante, le programme permettant au dispositif de mettre en oeuvre la présente invention est stocké en mémoire morte ROM (acronyme de read only memory pour mémoire non réinscriptible) 106. Selon une autre 30 variante, le programme est reçu par l'intermédiaire du réseau de communication 134 avant d'être stocké. Le dispositif 100 possède un écran 105 permettant de visualiser les données à coder ou décodées ou servant d'interface avec l'utilisateur pour paramétrer certains modes d'exécution du dispositif 100, à l'aide d'un clavier 110 et/ou d'une souris par exemple. Une unité centrale CPU (acronyme de central processing unit ) 103 exécute les instructions du programme informatique et de programmes nécessaires à son fonctionnement, par exemple un système d'exploitation. Lors de la mise sous tension du dispositif 100, les programmes stockés dans une mémoire non volatile, par exemple la mémoire morte 106, le disque dur 112 ou la disquette 116, sont transférés dans une mémoire vive RAM (acronyme de random access memory pour mémoire à accès aléatoire) 108 qui contiendra alors le code exécutable du programme objet de la présente invention ainsi que des registres pour mémoriser les variables nécessaires à sa mise en oeuvre. Bien entendu, la disquette 116 peut être remplacée par tout support d'information amovible, tel que disque compact, clé ou carte mémoire. De manière plus 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 objet de la présente invention. Un bus de communication 102 permet la communication entre les différents éléments inclus dans le dispositif 100 ou reliés à lui. La représentation, en figure 1, du bus 102 n'est pas limitative et notamment l'unité centrale 103 est susceptible de communiquer des instructions à tout élément du dispositif 100 directement ou par l'intermédiaire d'un autre élément du dispositif 100. Le dispositif décrit ici et, particulièrement, l'unité centrale 103, sont susceptibles d'implémenter tout ou partie des traitements décrits en regard des figures 2 à 6, pour mettre en oeuvre chaque procédé objet de la présente invention et constituer chaque dispositif objet de la présente invention. Dans toute la suite de la description, on dit qu'un motif est le plus proche , le plus représentatif ou décrit le mieux un élément, s'il minimise la quantité d'information représentant la différence entre cet élément et ce motif. Dans toute la description, la valeur des seuils mentionnés est déterminée, par exemple, par apprentissage (on choisit les valeurs de seuil qui, en moyenne, permettent d'obtenir le meilleur résultat en terme de compression) et/ou en fonction des ressources disponibles (capacité de traitement d'une unité centrale ou quantité de mémoire tampon disponible, par exemple). Ci-dessous, on présente d'abord un exemple de document XML auquel peut être appliqué l'invention. 100 110 111 112 John 113 Smith 114 120 121 122 Mary 123 Smith 124 130 131 132 Jack 133 Smith 134 140 141 142 Emma 143 Smith 144 150 151 152 Tony 153 Smith 154 160 161 162 Kate 163 Smith 164 199 Le document décrit une liste de personnes en indiquant, pour chacune, son prénom et son nom. En relation avec ce document, on présente, ci-dessous, une famille de motifs associés à l'élément person dans un mode de réalisation particulier du procédé de codage objet de la présente invention. Cette famille comprend trois motifs : - un motif primaire MP, décrivant uniquement la structure de l'élément XML (nom, attributs, type des noeuds enfants), - un motif dérivé incluant les sous-motifs (MS), motif dérivé reprenant le motif primaire auquel s'ajoutent les sous-motifs redondants (les sous-motifs de person sont toujours firstName et lastName dans ce document) et - un motif dérivé incluant le contenu (MC), motif reprenant les sous- motifs MS, auxquels s'ajoutent les valeurs textuelles redondantes (la valeur du contenu de l'élément lastName est toujours Smith ). Famille F des motifs associés à l'élément person Motif primaire (MP) Motif sous-motifs (MS) Motif contenu (MC) Motif Motif Contenu Contenu Contenu Smith 30 Les motifs dérivés sont produits successivement par la mise en oeuvre de la présente invention dans son mode de réalisation décrit dans les figures. Le cas du document XML présenté ci-dessus est utilisé pour illustrer le fonctionnement du procédé de codage objet de la présente invention. Bien que, dans le cas du document présenté, la structure utilisée pour décrire chaque personne soit identique (personne, nom et prénom), ceci n'est pas une condition nécessaire à la mise en oeuvre de la présente invention. Ainsi, imaginons que la deuxième instance soit la suivante : Mary Smith London Dans ce cas, lorsqu'on traite cette instance, on la compare à la première afin de déterminer la quantité de différences existant entre elles. Cette opération permet de mesurer la distance entre ces instances, et si celle-ci est inférieure à un seuil prédéterminé, on considère qu'elles appartiennent à la même famille F. Plusieurs options sont alors envisageables : soit modifier la définition du motif primaire MP en ajoutant un nouveau sous-motif (dans ce cas, il sera nécessaire de coder pour chaque instance de type (firstName, lastName) l'absence du troisième sous-motif), ou bien conserver la même définition du motif primaire MP (dans ce cas, il sera nécessaire de coder pour chaque instance de type (firstName, lastName, city) l'existence d'un troisième motif). Il est à noter que la définition du motif primaire ne doit plus être modifiée à partir du moment où l'on encode une instance avec ce motif ou l'un de ses dérivés, et pour déterminer le motif primaire le plus représentatif (dans notre cas, présence ou non d'un troisième sous-motif), il faut donc considérer les instances acquises jusqu'au moment où le nombre d'instances pour la famille considérée atteint ce que l'on nomme par la suite seuil primaire (seuil à partir duquel on utilise les motifs pour encoder les instances). Si on prend la valeur de 3 pour ce seuil primaire dans cet exemple où l'on a modifié la deuxième instance, on constate que l'on a deux instances de type (firstName, lastName) et une instance de type (firstName, lastName, city) : on choisit donc de ne pas inclure de troisième sous-motif dans le motif primaire, car ce type d'instance est, d'après les données acquises, moins représentatif. La figure 2 présente le traitement général réalisé, dans un mode de réalisation de la présente invention, afin d'encoder un document XML, en créant des motifs structurels sans attendre d'avoir la connaissance globale des données. A cet effet, on considère que l'on reçoit des événements XML un à un et, afin de conserver ces informations, on les stocke dans une mémoire tampon (en anglais buffer ). Une fois suffisamment de données acquises, par exemple par comparaison d'un nombre d'instances à une valeur limite, on effectue la création de motifs. On note que plus l'espace mémoire de la mémoire tampon est important, plus on peut y accumuler de données etretarder l'encodage de ces données, ce qui augmente la probabilité d'utiliser un motif et donc d'encoder plus efficacement les données. Au cours d'une étape 200, on obtient un événement XML. Dans le cas de l'exemple de document XML présenté ci-dessus, les événements que l'on peut obtenir sont les suivants : début de document, fin de document, début d'élément, fin d'élément, contenu textuel et commentaire. Au cours d'une étape 210, on détermine si la mémoire tampon d'événement est pleine ou non : si oui, au cours d'une étape 220, on procède à l'encodage du premier événement contenu dans la mémoire tampon d'événements, c'est-à-dire l'événement le plus ancien qui a été introduit dans la mémoire tampon d'événements et on libère l'espace mémoire occupé par cet événement dans la mémoire tampon d'événements, pour y mémoriser un nouvel événement, comme exposé en regard de la figure 5. Si le résultat de l'étape 210 est négatif ou à la suite de l'étape 220, on ajoute l'événement obtenu au cours de l'étape 200 à la mémoire tampon d'événement, au cours d'une étape 230, puis l'on teste (étape 240) s'il s'agit d'une fin d'élément, au cours d'une étape 240. Si l'événement est une fin d'élément, on détermine si le début de l'élément figure encore dans la mémoire tampon, au cours d'une étape 270. Si oui, cela signifie que tout le contenu de l'élément est en mémoire, et on procède, pour cet élément, à la création d'un motif et/ou au traitement du nombre d'instances lié à un motif déjà créé, au cours d'une étape 280 détaillée en regard de la figure 3, avant de retourner à l'étape 200 afin d'obtenir l'événement suivant. Si le résultat de l'étape 270 est négatif, on retourne à l'étape 200 . On note que les tests effectués au cours des étapes 240 et 270 permettent de déterminer si l'algorithme de création de motif doit être appelé. L'algorithme de création de motif, décrit en regard de la figure 3, recherche des motifs couvrant l'intégralité d'un élément, en utilisant un critère double : - la réception de la fin d'un élément, objet du test de l'étape 240, et - la vérification de la présence de l'événement de début d'élément correspondant dans la mémoire tampon, vérification objet du test de l'étape 270. On note que d'autres critères de création de motifs peuvent, conformément à la présente invention, être choisis, pour permettre par exemple la création de motifs ne représentant qu'une partie d'un élément. Ainsi, dans le cas d'une mémoire tampon de faible capacité, on peut privilégier une création de motifs représentant un petit nombre d'événements, sans nécessairement attendre la fin d'un l'élément (création sur le début de l'élément et une partie de ses enfants, ou bien création sur une partie des enfants de l'élément). Au contraire, dans le cas d'une mémoire tampon de capacité suffisante, on peut privilégier la création de motifs représentant un élément et tous ses enfants. II convient de remarquer que, dans le cas où un motif est associé à l'élément courant durant l'étape de traitement 280, on rassemble cet élément et ses enfants associés au même motif, en un seul événement composite Motif qui remplace, dans la mémoire tampon, les événements distincts (ces éléments distincts décrivant une instance de ce motif). Cet événement composite Motif unique réunit, d'un côté, une référence à un motif (ce qui permet de connaître la structure des données) et, de l'autre, les informations qui figurent dans l'instance mais pas dans ce motif (par exemple des informations de contenu textuel). Ainsi, toutes les informations sont conservées sous la forme d'un seul événement, au lieu de l'être dans des événements distincts. On libère donc de la place dans la mémoire tampon, et, par conséquent, on peut acquérir plus de données en même temps, ce qui permet d'obtenir de meilleurs résultats en termes de compression. Si au cours de l'étape 240, on détermine que l'événement n'est pas une fin d'élément, au cours d'une étape 250, on détermine si cet événement représente la fin du document. Si non, on retourne à l'étape 200. Si oui, on sait que plus aucun événement ne reste à acquérir, et on procède à l'encodage des événements qui restent dans la mémoire tampon, au cours d'une étape 260, comme décrit en regard de la figure 5, et le traitement prend fin, au cours d'une étape 290. La figure 3 décrit la création de motifs et l'association entre des motifs et des instances. Dans un premier temps, on crée un motif primaire à partir d'un élément XML. Ce motif primaire décrit la structure de l'élément et de ses enfants, et il convient donc pour tout autre élément ayant la même structure. Ce motif définit une famille de motifs F dont il est le premier élément. Le traitement appliqué consiste à enrichir ce motif primaire pour former un motif dérivé par ajouts d'information quand suffisamment d'instances sont disponibles, ce qui est déterminé, par exemple, par comparaison du nombre d'instances avec une valeur seuil prédéterminée, les instances étant copiées dans une liste E associée à la famille de motifs F, qui joue le rôle d'échantillon et est appelée échantillon . Dans le mode de réalisation décrit en figure 3, on définit différents seuils. A certains seuils correspondent des motifs dit dérivés du fait qu'ils dérivent du motif primaire d'une famille de motifs F. Ces différents motifs s'ajoutent au motif primaire dans la famille de motifs F. Lorsque tous les seuils ont été atteints, il ne reste plus de motif dérivé à créer, et l'on peut donc effacer les instances conservées dans l'échantillon E. Dans un tel cas, lorsqu'on rencontre un nouvel élément, on cherche quel motif de la famille de motifs F le décrit le mieux, c'est-à-dire qui minimise la quantité d'information représentant la différence entre cet élément et ce motif. Dans le meilleur des cas, il s'agit du dernier motif dérivé défini (c'est celui qui contient le plus d'informations) ; dans le pire des cas, le motif primaire convient. Dans le mode de réalisation illustré en figure 3, on considère l'utilisation de trois seuils qui sont, dans l'ordre de valeurs croissantes : - un seuil dit primaire , - un seuil dit de sous-motif et - un seuil dit de contenu . A titre d'exemple non limitatif, les inventeurs ont déterminé que les valeurs respectives de 3 , 4 et 5 donnaient de bons résultats pour les documents qu'ils ont codés en mettant en oeuvre la présente invention. Ces seuils correspondent à différents types d'informations présentes dans les motifs, et ce par degré croissant de probabilité de redondance. En effet, le seuil primaire correspond à la structure du motif primaire, laquelle ne change jamais pour un motif primaire donné. Dans le cas où plusieurs structures proches sont regroupées dans une même famille, la structure du motif primaire reste néanmoins fixe une fois que suffisamment d'instances ont été regroupées dans la famille pour pouvoir déterminer le motif primaire. Le seuil dit de sous-motif concerne les informations relatives aux motifs contenus ; ces informations sont relatives à la structure du document, et elles sont fréquemment redondantes. Ainsi, dans le cas du document XML cité précédemment, on retrouve les mêmes sous-motifs firstName et IastName pour une instance du motif person . Enfin, le seuil dit de contenu concerne les informations de contenus, c'est-à-dire les valeurs textuelles (par opposition à la structure). Il arrive à ces informations d'être redondantes, toutefois cela ne représente pas une majorité de cas. Dans le cas du document XML cité précédemment, les personnes ont un même nom de famille, mais pas le même prénom. Les valeurs de ces différents seuils sont définies arbitrairement. Avec des valeurs faibles, on court plus de risques de commettre des imprécisions dans la détection de la redondance, mais on minimise la quantité d'information à conserver ; à l'opposé, avec des valeurs élevées, l'extraction de la redondance sera plus fiable mais la quantité d'information plus importante, et le traitement plus coûteux et plus long. Les valeurs de ces différents seuils peuvent être déterminées expérimentalement en appliquant l'invention à un ensemble représentatif de documents XML pour vérifier quelles sont les valeurs donnant les meilleurs résultats. De la même manière, il est aussi possible de déterminer plusieurs ensembles de valeurs correspondant à différents types de documents ou à différentes configuration de traitement. Dans ce cas, l'encodeur choisit, en fonction du type de document XML ou de la configuration de traitement utilisée quel ensemble de valeurs utiliser. Dans ce dernier cas, si les motifs ne sont pas transmis avec le document codé, l'ensemble de valeurs utilisé est transmis dans le document codé pour que le décodeur puisse reconstruire les mêmes motifs. La première étape illustrée en figure 3, étape 300, consiste à créer le motif primaire MP décrivant l'élément considéré. Au cours de l'étape 300, on traite l'élément, ses attributs et ses enfants pour en extraire son modèle structurel. En particulier, si un enfant est un élément, on le considère comme un sous-motif. Dans le cas du document XML présenté plus haut, pour un élément person , le motif primaire est le suivant : Motif Motif Pour l'élément firstName , le cas de l'élément IastName étant analogue, le motif primaire est le suivant : Contenu textuel Ces motifs primaires ayant été créés, on détermine si un motif de même modèle structurel est déjà défini dans une famille de motifs F, au cours d'une étape 310. Si non, au cours d'une étape 311, on crée une nouvelle famille de motifs F dont MP est le motif primaire et un échantillon E vide associé à la famille de motifs F. En variante, notamment dans le cas d'utilisation d'un schéma XML, les étapes 300 à 310 sont remplacées ou complétées par une étape d'obtention de motifs primaires associés au document, par exemple dans son schéma. Dans ce cas aussi, pour chaque motif primaire ainsi obtenu, on crée une nouvelle famille F et on y associe un échantillon E vide. Si le résultat de l'étape 310 est positif, ou à la suite de l'étape 311, au cours d'une étape 320, on détermine le nombre N d'instances rencontrées pour la famille F, c'est-à-dire le nombre d'éléments correspondant au motif primaire MP. Puis, au cours d'une étape 330, on détermine si le nombre d'instances N est supérieur à un seuil primaire, seuil à partir duquel on utilise les motifs. On note que le seuil primaire est déterminé par apprentissage pour qu'à ce seuil ou au delà, il soit intéressant, en termes de taux de compression, d'utiliser un motif pour le codage (par exemple si la quantité d'information pour coder la définition des motifs est supérieure à celle du codage direct des instances). Si le résultat de l'étape 330 est négatif, au cours d'une étape 380, on ajoute une copie de l'instance à l'échantillon E associé à F et le traitement prend fin au cours d'une étape 390 et on retourne à l'étape 200 illustrée en figure 2. Ainsi, en revenant à l'exemple de document XML détaillé plus haut, si l'on fixe le seuil primaire à la valeur 3 , pour les deux premières instances, on procède à l'ajout d'une copie dans l'échantillon E mais on ne fait aucune association à un motif. Si le résultat de l'étape 330 est positif, au cours d'une étape 340, on détermine si le nombre d'instances N est strictement supérieur à un seuil dit de contenu , qui est le seuil le plus élevé, appelé également seuil limite. On note que la valeur de ce seuil limite n'est pas nécessairement égal à la valeur du seuil de contenu. Si oui, aucun motif n'est à créer et on cherche le motif le plus proche dans la famille F, au cours d'une étape 343, et on l'associe à l'instance en cours de traitement. Le traitement de cette instance prenant alors fin au cours d'une étape 390, et on retourne à l'étape 200 illustrée en figure 2. Dans le cas du document XML décrit plus haut, si on fixe le seuil de contenu à 5, alors on procédera de la sorte pour la sixième instance. Si le résultat de l'étape 330 est négatif, c'est-à-dire si le seuil de contenu n'est pas atteint par le nombre d'instances N, au cours d'une étape 341, on ajoute une copie de l'instance à l'échantillon E associé à la famille de motifs F considérée. Puis, on détermine si le nombre d'instances N est égal à l'un des seuils, au cours d'une étape 342. Si non, on associe l'instance au motif de la famille de motifs F le plus proche, au cours de l'étape 343 et le traitement prend fin, au cours de l'étape 390, et on retourne à l'étape 200. Si le résultat de l'étape 342 est positif, au cours d'une étape 350, on détermine si le nombre d'instances N est égal au seuil primaire plus un. Si oui, au cours d'une étape 351, on commence à utiliser les motifs pour les instances de la famille de motifs F et on désigne par M le motif primaire MP, puisqu'il est le seul motif de la famille de motifs F. Puis, on associe les instances de la famille de motifs F à ce motif primaire M, au cours d'une étape 375, ce qui signifie que si les instances devaient être encodées à cet instant, elles le seraient avec ce motif, l'association pouvant être modifiée par la suite. Il est à noter que certaines instances de la famille F ont pu être encodées avant que le seuil primaire soit atteint, en particulier dans le cas où la mémoire tampon est pleine et où on a codé des données qui s'y trouvaient pour libérer de l'espace mémoire (voir étape 220 en figure 2). Dans ce cas, on ne procède pas à l'association réalisée au cours de l'étape 375 pour ces instances déjà encodées mais on les conserve dans l'échantillon E. On note que le nombre N tient compte de toutes les instances, même celles qui ont été encodées sans utiliser le motif. Ainsi, le nombre N représente le nombre d'instances rencontrées pour la famille F, indépendamment du fait qu'on ait utilisé ou pas un motif de F pour encoder l'instance considérée. En se référant à l'exemple de document XML détaillé plus haut, avec un seuil primaire égal à 3 , c'est lorsque l'on rencontre la troisième instance que l'on commence à utiliser les motifs. On associe donc le motif primaire MP aux trois premières instances, si aucune n'a encore été encodée. Si le résultat de l'étape 350 est négatif, au cours d'une étape 360, on détermine si le nombre d'instances N est égal au seuil des sous-motifs. Si oui, on extrait la redondance relative aux sous-motifs dans les instances de l'échantillon E, au cours d'une étape 361. Pour extraire cette redondance, on compare les sous-motifs présents dans chaque instance, et on sélectionne les sous-motifs invariants. En variante, un critère moins contraignant que l'invariance est mis en oeuvre, par exemple en comparant un taux de représentativité, c'est-à-dire un taux de présence d'un sous-motif dans les instances, à une valeur limite, l'extraction de redondance étant effectuée au delà de cette valeur limite. En revenant à l'exemple de document XML illustré ci-dessus, le seuil de sous-motifs ayant la valeur 4 , on constate à partir des quatre premières instances stockées dans l'échantillon que les sous-motifs firstName et IastName sont invariants puisqu'ils prennent toujours la forme Contenu textuel et Contenu textuel , respectivement. On crée donc le motif MS décrit ci-dessus et on l'associe aux instances qui n'ont pas encore été encodées : Contenu textuel Contenu textuel Si le résultat de l'étape 360 est négatif, on extrait la redondance relative au contenu textuel dans les instances de l'échantillon E, au cours d'une étape 371. Pour extraire cette redondance, on compare les valeurs du contenu textuel et des attributs dans chaque instance, et on sélectionne les valeurs invariantes. En variante, un critère moins contraignant que l'invariance est mis en oeuvre, par exemple en relation avec le taux de représentativité défini ci-dessus. Le seuil de contenu étant le plus élevé, toutes les redondances ont été extraites, et on efface les instances présentes dans l'échantillon E, au cours d'une étape 372, ce qui permet de ne pas occuper d'espace mémoire superflue pour le motif donné. En revenant à l'exemple de document XML détaillé plus haut, le seuil de contenu ayant la valeur 5 , c'est en travaillant sur les cinq premières instances que l'on extrait la redondance de contenu. Les valeurs de contenu des éléments firstName changeant, aucune n'est sélectionnée. Pour l'élément lastName , en revanche, la valeur de contenu est toujours Smith , et on ajoute ce contenu au motif MS pour obtenir le motif MC , que l'on associe aux instances qui n'ont pas encore été encodées : Contenu textuel Smith Pour la sixième instance, on recherche le motif le plus proche dans la famille F = {MP, MS, MC}, MC en l'occurrence. A la suite des étapes 361 et 372, au cours d'une étape 373, on détermine si la redondance extraite est vide. Si oui, on ne crée pas de motif dérivé, et on associe l'instance au motif le plus proche, au cours d'une étape 343, puis le traitement prend fin au cours de l'étape 390. Si non, on crée un motif dérivé par ajout des informations de redondance au motif le plus riche déjà défini et on ajoute ce motif dérivé à la famille de motifs F, au cours d'une étape 374. Typiquement, on ajoute les informations de sous-motifs au motif primaire pour créer le motif dérivé MS, et l'on ajoute les informations de contenu au motif dérivé MS pour créer le motif dérivé MC ou on crée directement un motif dérivé MC à partir d'un motif primaire MP, par exemple au cas où il n'y a pas de sous-motifs. Puis, au cours d'une étape 375, on associe les instances au nouveau motif dérivé. Si le critère choisi pour déterminer la redondance est l'invariance, le nouveau motif décrit nécessairement toutes les instances, et l'association ne pose donc aucun problème. En revanche si l'on se base sur un taux de représentativité, seules les instances correspondant au motif sont associées. Le traitement s'achève alors au cours de l'étape 390. Le procédé de codage présenté ci dessus n'est pas restrictif, et d'autres types de seuils et de redondances peuvent être définis. Dans des variantes, on définit un seuil pour lequel on extrait les informations relatives aux chaînes de caractères qui ne sont constituées que de caractères blancs , comme les espaces, les tabulations et les retours à la ligne. En effet, ces chaînes de caractères servent à mettre en page le document (retour à la ligne, indentation), et elles présentent donc une forte probabilité d'être invariantes. Dans des variantes, on définit des seuils secondaires sur les sous-motifs ou sur le contenu et on conserve les instances décrites par le motif primaire MP mais pas par les motifs dérivés MS ou MC. Lorsque le nombre de ces instances atteint un seuil secondaire, on extrait de ces instances les informations de redondance et on crée, s'il y a lieu, un nouveau motif dérivé que l'on ajoute à la famille de motifs F. Les seuils secondaires sont fixés arbitrairement de manière à détecter des motifs dérivés plus ou moins fréquents : avec un seuil bas, on identifie des informations faiblement présentes, tandis qu'avec un seuil élevé on se limite aux informations ayant de nombreuses occurrences. Les seuils secondaires sont a priori sans lien avec les seuils précédemment définis, en particulier ce n'est pas parce qu'on atteint le seuil de contenu que l'on arrête le traitement propre à une famille de motif. On peut réitérer ce procédé tant qu'on trouve des instances non décrites par les motifs dérivés créés. Cependant, dans le cas d'un document avec peu de redondance, on risque de conserver un grand nombre d'instances et donc d'occuper beaucoup de place en mémoire. Afin de limiter ce problème, dans des variantes, on définit un seuil maximal pour le nombre d'instances : lorsque l'on atteint ce seuil (c'est-à-dire lorsque le nombre total d'instances de motifs d'une famille F atteint ce seuil), on procède à une ultime recherche de redondance (et on crée, s'il y a lieu, un motif dérivé) puis on vide l'échantillon E. Dans encore d'autres variantes, les motifs primaires ne sont pas extraits du document XML, mais sont obtenus à partir de sources extérieures au document XML, par exemple à partir d'un document XML Schéma décrivant la structure du document XML. Dans un tel cas, pour chaque motif primaire prédéfini, une famille F est créée. En outre si un motif primaire prédéfini existe, cela signifie qu'il sera probablement intéressant de l'utiliser. Aussi, le seuil primaire pour les motifs primaires prédéfinis peut être diminué, voire fixé à une valeur nulle, permettant d'utiliser les motifs primaires prédéfinis dès la première instance. Dans une sous-variante, un seuil supplémentaire est utilisé, correspondant aux parties communes d'un motif primaire. En effet, dans le cas de motifs primaires obtenus à partir d'une source extérieure, ces motifs primaires peuvent décrire un ensemble de possibilités plus vastes que celles utilisées dans un document XML donné. Par exemple, un document XML Schéma va décrire l'ensemble des possibilités pour la structure d'un document XML. Quand le seuil correspondant aux parties communes d'un motif primaire est atteint, un motif dérivé est créé, correspondant à une restriction du motif primaire : seules les informations structurelles contenues dans le motif primaire et présentes dans au moins une instance du motif primaire sont conservées dans ce motif dérivé. L'utilisation du motif dérivé pour coder un instance permet de diminuer le nombre d'absences à coder et donc de diminuer le coût de codage de l'instance. Dans encore d'autres variantes, d'autres seuils peuvent être utilisés. Par exemple, un seuil correspondant uniquement au contenu représenté par les valeurs des attributs, ou un seuil correspondant uniquement au contenu représenté par les items de type contenu textuel. Dans un autre mode de réalisation, la création des motifs est simplifiée. Pour chaque élément considéré, le motif primaire est créé. Les éléments ayant le même motif primaire sont regroupés dans une même famille. Si le nombre d'éléments dans une même famille dépasse une valeur prédéterminée, on extrait l'ensemble des redondances dans les éléments de cette famille est extrait et un motif dérivé est créé à partir du motif primaire et incluant cette redondance. Par la suite, tous les éléments de cette famille seront codés à partir de ce motif dérivé. Dans ce mode de réalisation, un seul seuil est utilisé et seul le motif dérivé est utilisé pour coder des données. Dans une variante de ce mode de réalisation le motif primaire est utilisé pour coder des données. Dans une autre variante de ce mode de réalisation, seules les redondances relatives aux sous-motifs sont utilisées pour créer le motif dérivé. Dans encore une autre variante de ce mode de réalisation, seules les redondances relatives aux contenus sont utilisées pour créer le motif dérivé. Dans d'autres variantes encore, seules certaines redondances particulières sont utilisées pour créer le motif dérivé. Par exemple, seules les redondances relatives à la valeur d'un attribut sont utilisées. La figure 4 décrit une variante pour la création de motifs. Dans cette variante, au lieu de distinguer des seuils d'instanciation liés aux motifs comme dans le mode de réalisation illustré en figure 3, on définit des seuils d'instanciation liés aux parties des motifs, avec notamment un seuil NS pour le nombre d'instance d'un sous-motif, et un seuil NC pour le nombre d'instances d'une valeur de contenu. Ainsi, dès qu'un sous-motif est présent au moins NS fois, on crée un motif dérivé du motif primaire incluant ce sous-motif, et dès qu'un contenu est présent NC fois, on crée un motif dérivé du motif primaire incluant ce contenu. Par rapport à la description du mode de réalisation illustré en figure 3, pour décrire la figure 4, des étapes sont décrites de manière plus synthétique, mais les mécanismes présentés en regard de la figure 3 s'appliquent aussi à la figure 4. Ainsi, le système d'échantillon fonctionne de manière similaire, et lorsqu'on parle de création de motif (étapes 440, 460 et 480), on regroupe les étapes d'extraction de redondance, d'analyse de cette redondance (nulle ou pas), de création de motif et d'association à certaines instances. La principale différence entre les modes de réalisation illustrés en figures 3 et 4 concerne la gestion des seuils, puisque le seuil n'est plus appliqué seulement aux instances mais aussi au contenu des instances. A ce titre, les étapes 342 à 375 de la figure 3 sont remplacées par les étapes 420 à 480 de la figure 4. Aux cours des étapes 400 et 410, on considère un élément qui correspond à une famille de motifs F, avec S désignant l'ensemble des sous-motifs des instances de la famille de motifs F et C désignant l'ensemble des contenus de ces mêmes instances. Puis, au cours d'une étape 420, on ajoute les sous-motifs de l'élément à l'ensemble S et le contenu de l'élément à l'ensemble C. On évalue alors si des critères de création du motif primaire sont vérifiés, au cours d'une étape 430. A cet effet, on détermine si le nombre d'instances de la famille de motifs F est supérieur ou égal à une valeur seuil NP, déterminée par apprentissage et/ou en fonction des caractéristiques des ressources requises et, si oui, on crée un motif primaire et on l'associe aux instances qui n'ont pas encore été encodées, au cours d'une étape 440. Sinon, ou à la suite de l'étape 440, on détermine si des critères de création d'un motif à sous-motifs sont vérifiés, au cours d'une étape 450. A cet effet, pour chaque sous-motif SM de l'ensemble S, on détermine si son nombre d'instances est supérieur ou égal à la valeur seuil NS. Si oui, au cours d'une étape 460, on crée un motif dérivé MS contenant ce sous-motif SM et dérivant du motif primaire. En outre, si d'autres sous-motifs apparaissent systématiquement avec ce sous-motif SM, ces autres sous-motifs sont inclus dans la définition du motif MS. Si le résultat de l'étape 450 est négatif, ou à la suite de l'étape 460, au cours d'une étape 470, on détermine si des critères de création d'un motif à contenu sont vérifiés. A cet effet, pour chaque contenu SC de l'ensemble C, on détermine si son nombre d'instances est supérieur ou égal à la valeur seuil NC. Si oui, au cours d'une étape 480, on crée un motif dérivé MC contenant ce contenu SC et dérivé soit du motif primaire MP, soit d'un motif à sous-motifs MS auquel le contenu est systématiquement associé, dans le cas d'un critère d'invariance, ou, lorsqu'on met en oeuvre un critère de représentativité, souvent associé. En outre, si d'autres contenus apparaissent systématiquement avec ce contenu SC, ces autres contenus sont inclus dans la définition du motif dérivé MC. Si le résultat de l'étape 470 est négatif ou à la suite de l'étape 480, le traitement prend fin, au cours d'une étape 490 et on retourne à l'étape 200. Un avantage de la variante illustrée en figure 4 réside dans le fait qu'elle est adaptée à la création de davantage de motifs que la variante illustrée en figure 3. Concernant la gestion de la mémoire, dans desvariantes, pour éviter de conserver trop de données, on prend la décision de supprimer les informations les moins représentatives lorsque l'on atteint un seuil considéré comme limite (défini arbitrairement suivant les contraintes que l'on adopte, notamment en ce qui concerne la mémoire requise). Si, par exemple, on atteint ce seuil limite pour les sousmotifs dans l'ensemble S (L sous-motifs différents), on supprime celui pour lequel cela fait le plus longtemps que l'on n'a pas rencontré d'instance. Dans des variantes, si le nombre d'instances d'éléments représentés par la famille de motifs F atteint lui-même un seuil limite (similaire au seuil maximal pour le nombre d'instances décrit plus haut), on effectue un dernier traitement puis on efface les données conservées dans la mémoire tampon. La figure 5 décrit l'encodage des données relatives à un événement, XML dans le cas présent. Deux cas se présentent : l'encodage d'événements XML simples et l'encodage d'événements XML liés à des motifs. Au cours d'une étape 500, on considère un événement à encoder. Au cours d'une étape 510, on détermine si l'événement E représente un début d'élément. Si non, au cours d'une étape 570, on encode directement l'événement, soit comme événement faisant partie d'un motif, soit comme événement indépendant, selon des techniques connues en soi, par exemple les techniques décrites en introduction, avec des index de contenu. On note que, dans le cas d'un événement faisant partie d'un motif, on a moins d'informations à coder car le motif décrit certaines des informations de l'événement à encoder. Puis, au cours d'une étape 571, on supprime l'événement de la mémoire tampon et le traitement prend fin à l'étape 590 et on retourne à l'une des étapes 230 ou 260, selon l'étape, 220 ou 260, respectivement, par laquelle on est arrivé à l'étape 500. On note que, dans le cas où l'on vient de l'étape 260, on y retourne puisqu'on doit coder plusieurs événements et qu'elle comporte une boucle à cet effet. Si le résultat de l'étape 510 est positif, c'est-à-dire si l'événement représente le début d'un élément, on détermine si l'événement est associé à un motif M, au cours d'une étape 520. Si non, on suit la procédure d'encodage direct précédemment décrite, au cours des étapes 570, 571 et 590. Si oui, on obtient la famille de motifs F à laquelle appartient le motif M, au cours d'une étape 521, puis on détermine si la définition du motif M a déjà été encodée, au cours d'une étape 530. Si la définition du motif M n'a pas déjà été encodée, on l'encode, soit dans sa totalité, soit par référence à une autre définition proche. A cet effet, on cherche si la définition d'un motif M' de la famille de motifs F a déjà été encodé, au cours d'une étape 540. Si oui, on encode uniquement les données qui diffèrent entre les motifs M et M', au cours d'une étape 541. On note que si plusieurs définitions de motifs ont déjà été encodées, on choisit le motif M' le plus proche du motif M la proximité étant déterminée en fonction des différences entre les définitions. Pour ces données qui diffèrent, comme on connaît les différents seuils et les définitions associées, on sait quel type d'information est à ajouter ou à retirer pour passer de la définition du motif M' à la définition du motif M, ce qui est avantageux pour optimiser le codage des données et ainsi minimiser le surcoût relatif au codage de plusieurs motifs d'une même famille de motifs F. Si le résultat de l'étape 540 est négatif, on encode la définition complète du motif M, au cours d'une étape 550. En reprenant l'exemple de document détaillé ci-dessus, si on a déjà codé le motif dérivé MS, pour coder le motif dérivé MC, on ajoute les informations de contenus, c'est-à-dire, pour l'élément firstName , pas de valeur et, pour l'élément lastName , la valeur Smith . L'existence ou non d'une valeur peut-être codée sur 1 bit (et donc 2 bits ici au total pour le motif MC), et l'on code ensuite les valeurs des contenus des éléments du motif MS. Après les étapes 541 et 550, ainsi que si le résultat de l'étape 530 est positif, on encode l'événement comme instance du motif M, au cours d'une étape 560, puis on procède à l'encodage des enfants de l'événement en tant que données appartenant à l'instance du motif M, au cours d'une étape 561. Puis, on efface l'événement, au cours d'une étape 562, et le traitement prend fin à l'étape 590. Une variante de la méthode présentée en figure 5 consiste à encoder implicitement les motifs. Dans ce cas, l'algorithme d'encodage et l'algorithme de décodage partagent des règles de création de motifs, et il n'est pas alors nécessaire d'encoder les définitions puisqu'elles sont déterminées automatiquement du côté de l'encodeur comme du côté du décodeur, ce qui dispense donc des étapes 530 à 550. II est important de souligner que, dans ce mode de fonctionnement, un motif ne peut être utilisé pour encoder l'information qui a servi à le créer : en effet pour savoir qu'il faut créer un motif, le décodeur doit, lui aussi, lire cette information puisque le processus d'encodagedécodage doit être symétrique. Par rapport au procédé décrit en regard de la figure 3, cela signifie que l'on ne peut pas associer un nouveau motif à des instances précédemment rencontrées (étape 375) : le motif ne sera utilisé que pour les éventuelles instances à venir. Une autre variante consiste à modifier l'étape 550 pour coder le motif M par différences par rapport à un autre motif déjà codé. Pour cela, on compare le motif M aux autres motifs déjà codés. Si le motif M a un nombre de différences par rapport à un motif déjà codé inférieur à un seuil prédéterminé, alors le motif M est codé par différence par rapport à ce motif déjà codé. Pour cela, la référence de ce motif déjà codé est codée, ainsi que les différences du motif M par rapport à ce motif déjà codé. La figure 6 décrit le décodage d'un événement, XML dans le cas présent. Trois cas se présentent : le décodage d'événements simples, le décodage d'événements liés à un motif connu et le décodage d'un événement lié à un nouveau motif. Pour décoder un document dans sa totalité, on applique le traitement décrit dans cette figure jusqu'à ce que l'on atteigne l'événement marquant la fin du document. Au cours d'une étape 600, on considère un événement à décoder. Au cours d'une étape 610, on détermine si l'événement est un événement simple. Si oui, au cours d'une étape 670, on décode directement l'événement, soit comme événement faisant partie d'un motif, soit comme événement indépendant. On note que, dans le cas d'un événement faisant partie d'un motif, on a moins d'informations à décoder car le motif décrit certaines informations de l'événement à décoder. Le traitement du document prend alors fin à l'étape 690 si l'événement traité est un événement de fin de document. Sinon, on retourne à l'étape 600 pour obtenir l'événement suivant du document. Si le résultat de l'étape 610 est négatif, c'est-à-dire si l'événement n'est pas un événement standard, on détermine si l'événement correspond à une instance d'un motif M connu, au cours d'une étape 620. Si oui, on obtient le motif concerné lors d'une étape 621, puis on suit la procédure de décodage direct précédemment décrite, au cours des étapes 670 et 690. Si non, cela signifie que l'événement marque le début d'une instance d'un nouveau motif. La définition du motif M peut figurer soit dans sa totalité, soit par référence à un autre motif proche. L'alternative retenue est obtenue par lecture de données encodées et évaluée à l'étape 640. Si le résultat est positif, on décode uniquement les différences avant de créer le motif M, au cours d'une étape 641. Sinon, on décode la définition complète du motif M, au cours d'une étape 650 ; ces informations lues, on peut créer le motif M. En reprenant l'exemple de document détaillé ci-dessus, si on a déjà décodé le motif dérivé MS et que le motif MC a été encodé par référence au motif MS, il suffira pour décoder MC de lire les informations de contenu, en l'occurrence Smith pour le sous-motif lastName . Après les étapes 641 et 650, on décode l'événement comme instance du motif M, au cours d'une étape 660. Le traitement du document prend alors fin à l'étape 690 si l'événement traité est un événement de fin de document. Sinon, on retourne à l'étape 600 pour obtenir l'événement suivant du document. Dans le cas où la variante d'encodage implicite des motifs est adoptée, il n'est pas nécessaire lors du décodage de lire les définitions, celles-ci étant en effet obtenues automatiquement de par les règles de création de motifs partagées entre l'encodeur et le décodeur. Les étapes 640 à 660 disparaissent alors. Dans ce cas, le décodeur reproduit les étapes réalisées par le codeur, sur la base des données du document déjà décodées, des éventuels motifs primaires obtenus, par exemple, à partir d'un schéma, des motifs dont la définition a déjà été décodée. En particulier, le décodeur effectue une étape d'obtention d'au moins un motif dit primaire représentant au moins des informations structurelles de données dudit document, une étape de création d'au moins un motif dérivé formé par modification d'un motif primaire, représentant des données d'une partie du document différente de l'ensemble des données du document. Pour reproduire le fonctionnement du codeur, le décodeur peut compter les instances d'un motif et, sur la base des valeurs seuils décrites en regard de la figure 3, effectuer une étape de déclenchement de la création d'au moins un motif dérivé. De même, pour reproduire le fonctionnement du codeur et créé un motif dérivé, le décodeur peut effectuer une extraction de redondance (représentant des sous-motifs ou des contenus, invariants ou présentant un taux de présence suffisant dans les instances traitées) de différentes instances d'un motif.10 REVENDICATIONS 1 - Procédé de codage d'un document structuré, caractérisé en ce qu'il comporte : - une étape (300) d'obtention d'au moins un motif dit primaire représentant au moins des informations structurelles de données dudit document, - une étape (200 à 230) d'obtention d'une partie du document différente de la totalité du document, - une étape (361 à 374, 460, 480) de création d'au moins un motif dérivé formé par modification d'un motif primaire, représentant des données de ladite partie du document et - une étape (541, 560) de codage de données du document pour fournir un code, ledit code associant un motif à au moins une donnée codée. 2 û Procédé selon la revendication 1, caractérisé en ce que, au cours de l'étape de codage (541, 560), on effectue une étape (343, 375) de détermination d'un motif décrivant le mieux des données à coder, le motif associé aux dites données étant ce motif le plus proche. 3 û Procédé selon la revendication 2, caractérisé en ce que, au cours de ladite étape (343, 375) de détermination d'un motif décrivant le mieux des données à coder, le motif décrivant le mieux des données à coder est le motif pour lequel le codage des différences entre les données à coder et ledit motif utilise la plus faible quantité d'information. 4 û Procédé selon l'une quelconque des revendications 1 à 3, caractérisé en ce qu'il comporte, en outre, une étape (541, 550) de codage d'une définition d'un motif associé à des données codées. 5 û Procédé selon la revendication 4, caractérisé en ce que, au cours de l'étape (541) de codage d'une définition d'un motif, la définition du motif est codée en codant la différence entre les données représentées par ce motif et les données représentées par un autre motif déjà codé. 6 û Procédé selon l'une quelconque des revendications 1 à 5, caractérisé en ce qu'il comporte une étape (342, 350, 360) de déclenchement de l'étape decréation d'au moins un motif dérivé, au cours de laquelle on compare, avec au moins une valeur seuil prédéterminée, pour des données de ladite partie du document, un nombre d'instances de motifs d'une famille de motifs comportant au moins un motif primaire et, en cas d'égalité, on déclenche l'étape de création d'au moins un motif dérivé. 7 û Procédé selon la revendication 6, caractérisé en ce que, au cours de l'étape (342, 350, 360) de déclenchement, on compare ledit nombre d'instances à une valeur seuil limite et si le nombre d'instances est supérieur à ladite valeur seuil limite, on ne déclenche pas d'étape de création de motif dérivé. 8 û Procédé selon l'une quelconque des revendications 1 à 7, caractérisé en ce que, au cours de l'étape (361 à 374) de création d'au moins un motif dérivé, on effectue une étape (361, 371) d'extraction de redondance de différentes instances d'un motif et le motif dérivé représente ladite redondance. 9 û Procédé selon la revendication 8, caractérisé en ce que, au cours de l'étape (361) d'extraction de redondance, ladite redondance comporte chaque sous-motif invariant des dites instances. 10 û Procédé selon l'une quelconque des revendications 8 ou 9, caractérisé en ce que, au cours de l'étape (371) d'extraction de redondance, ladite redondance comporte chaque contenu invariant desdites instances. 11 û Procédé selon l'une quelconque des revendications 8 à 10, caractérisé en ce que, au cours de l'étape (361) d'extraction de redondance, ladite redondance comporte chaque sous-motif possédant un taux de présence dans les instances supérieur à une valeur limite prédéterminée. 12 û Procédé selon l'une quelconque des revendications 8 à 11, caractérisé en ce que, au cours de l'étape (371) d'extraction de redondance, ladite redondance comporte chaque contenu possédant un taux de présence dans les instances supérieur à une valeur limite prédéterminée. 13 û Procédé selon l'une quelconque des revendications 1 à 12, caractérisé en ce que, au cours de l'étape (541, 560) de codage, le code fourni représente la différence entre les données représentées par un motif et le motif auquel lesdites données sont associées.14 û Procédé selon l'une quelconque des revendications 1 à 13, caractérisé en ce que ledit document est un document en langage XML. 15 û Procédé selon la revendication 14, caractérisé en ce qu'il comporte une étape (280) de création d'un événement composite qui rassemble un élément du document et au moins un de ses noeuds enfants associés au même motif que ledit élément. 16 - Procédé de décodage d'un document structuré, de caractérisé en ce qu'il comporte : - une étape d'obtention d'au moins un motif dit primaire 10 représentant au moins des informations structurelles de données dudit document, - une étape d'obtention de données dudit document à décoder associées audit au moins un motif primaire, - une étape de création d'au moins un motif dérivé formé par 15 modification d'un motif primaire, représentant lesdites données et - une étape de décodage des données à décoder en fonction dudit motif dérivé. 17 û Dispositif de codage d'un document structuré, caractérisé en ce qu'il comporte : 20 - un moyen d'obtention d'au moins un motif dit primaire représentant au moins des informations structurelles de données dudit document, - un moyen d'obtention d'une partie du document différente de la totalité du document, 25 - un moyen de création d'au moins un motif dérivé formé par modification d'un motif primaire, représentant des données de ladite partie du document et - un moyen de codage de données du document pour fournir un code, ledit code associant un motif à au moins une donnée codée. 30 18 - Dispositif de décodage d'un document structuré, de caractérisé en ce qu'il comporte :- un moyen d'obtention d'au moins un motif dit primaire représentant au moins des informations structurelles de données dudit document, - un moyen d'obtention de données dudit document à décoder 5 associées audit au moins un motif primaire, un moyen de création d'au moins un motif dérivé formé par modification d'un motif primaire, représentant lesdites données et - un moyen de décodage des données à décoder en fonction dudit motif dérivé. 10 19 -Programme d'ordinateur chargeable dans un système informatique, ledit programme contenant des instructions permettant la mise en oeuvre du procédé de codage selon l'une quelconque des revendications 1 à 15 et/ou du procédé de décodage selon la revendication 16, lorsque ce programme est chargé et exécuté par un système informatique. 15 20 - Support d'informations lisibles par un ordinateur ou un microprocesseur, amovible ou non, conservant des instructions d'un programme informatique, caractérisé en ce qu'il permet la mise en oeuvre du procédé de codage selon l'une quelconque des revendications 1 à 15 et/ou du procédé de décodage selon la revendication 16.