[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

FR2941071A1 - Processor i.e. Efficient XML Interchange processor, configuring method for encoding or decoding XML document in information processing device, involves suppressing sub-context that is not comprised in set of sub-contexts, in context - Google Patents

Processor i.e. Efficient XML Interchange processor, configuring method for encoding or decoding XML document in information processing device, involves suppressing sub-context that is not comprised in set of sub-contexts, in context Download PDF

Info

Publication number
FR2941071A1
FR2941071A1 FR0950163A FR0950163A FR2941071A1 FR 2941071 A1 FR2941071 A1 FR 2941071A1 FR 0950163 A FR0950163 A FR 0950163A FR 0950163 A FR0950163 A FR 0950163A FR 2941071 A1 FR2941071 A1 FR 2941071A1
Authority
FR
France
Prior art keywords
context
sub
coding
processor
decoding
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR0950163A
Other languages
French (fr)
Other versions
FR2941071B1 (en
Inventor
Romain Bellesort
Youenn Fablet
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to FR0950163A priority Critical patent/FR2941071B1/en
Publication of FR2941071A1 publication Critical patent/FR2941071A1/en
Application granted granted Critical
Publication of FR2941071B1 publication Critical patent/FR2941071B1/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents
    • G06F40/146Coding or compression of tree-structured data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Document Processing Apparatus (AREA)

Abstract

The method involves determining a set of sub-contexts defining an encoding and decoding context of a data structure, where the data structure includes a self-container element conforming to Efficient XML Interchange standard. A sub-context not comprised in the determined set of sub-contexts is identified and suppressed in the encoding and decoding context in a memory of a processor to conserve the sub-contexts belonging to the set of sub-contexts. The respective sub-context is suppressed by storing the suppressed sub-context in another memory. Independent claims are also included for the following: (1) a device for configuring a processor for encoding or decoding a data structure (2) an information storage medium comprising instructions to perform a method for configuring a processor for encoding or decoding a data structure (3) a computer program product comprising instructions to perform a method for configuring a processor for encoding or decoding a data structure.

Description

La présente invention concerne un procédé et un système de configuration d'un processeur de codage/décodage de données structurées. Elle s'applique, en particulier, aux documents de type XML (acronyme de "Extensible Markup Language" pour langage de balisage extensible) et aux processeur de type EXI ("Efficient XML Interchange") Le langage XML 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: <balise>) et se terminant par une balise fermante comportant, elle aussi, le nom de l'élément (par exemple: </balise>). Chaque élément peut contenir d'autres éléments de façon hiérarchique, constituant une structure hiérarchique de données, 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 : <balise attribut="valeur">). La syntaxe XML permet aussi de définir des commentaires (par exemple: <!-- Commentaire-->) et des instructions de traitement, qui peuvent préciser à une application informatique les traitements à appliquer au document XML (par exemple : <?montraitement?> ), ainsi que des sections d'échappement qui permettent d'éviter qu'une section de texte soit interprétée comme une balise lorsqu'elle en a la forme (par exemple : <![CDATA[<texte>Echappement</texte>]]> où <texte> est reconnu comme une chaîne de caractère et non pas une balise). Dans la terminologie XML, l'ensemble des termes élément (identifié par une balise ouvrante et une balise fermante), attribut , donnée textuelle , commentaire , instruction de traitement et section d'échappement définissant les données XML sont regroupés sous le nom générique de item . Plusieurs langages différents basés sur le XML peuvent contenir des 5 éléments de même nom. Pour pouvoir mélanger plusieurs langages différents, un ajout a été effectué à la syntaxe XML permettant de définir des espaces de nommage ( Namespace selon la terminologie anglo-saxonne). Deux éléments sont 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 10 (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: l'attribut 15 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 est précisé en faisant précéder son nom par le préfixe associé à l'espace de nommage suivi de : (par exemple: <ml:balise ml:attribut="valeur"> indique que l'élément balise découle de 20 l'espace de nommage ml et qu'il en est de même pour l'attribut attribut). Le format 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. Par ailleurs, un document XML peut être édité 25 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. Toutefois, le principal inconvénient de la syntaxe XML est d'être très prolixe, amenant parfois la taille d'un document XML à être plusieurs fois 30 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. The present invention relates to a method and system for configuring a structured data encoding / decoding processor. It applies, in particular, to documents of the XML type (acronym for Extensible Markup Language) and EXI (Efficient XML Interchange) type processors. XML is a syntax for defining languages. computer. XML makes it possible to create languages adapted to different uses but which can be processed by the same tools. An XML document is composed of elements, each element starting with an opening tag with the name of the element (for example: <tag>) and ending with a closing tag that also contains the name of the element ( for example: </ tag>). Each element can contain other elements hierarchically, constituting a hierarchical structure of data, or textual data. On the other hand, an element can be specified by attributes, each attribute being defined by a name and having a value. The attributes are placed in the opening tag of the element they specify (for example: <attribute tag = "value">). The XML syntax also allows you to define comments (for example: <! - Comment ->) and processing instructions, which can specify to a computer application the processing to apply to the XML document (for example: <? Myprocessing? >), as well as escape sections that prevent a section of text from being interpreted as a tag when it has the form (for example: <! [CDATA [<text> Escape </ text> ]]> where <text> is recognized as a string and not a tag). In XML terminology, the set of element terms (identified by an opening tag and a closing tag), attribute, textual data, comment, processing instruction, and escape section defining the XML data are grouped under the generic name of the item. . Several different XML-based languages may contain 5 elements of the same name. To be able to mix several different languages, an addition has been made to the XML syntax for defining namespace (namespace according to the English terminology). Two elements are identical only if they have the same name and are in the same namespace. A namespace is defined by a URI 10 (acronym for Uniform Resource Identifier), for example http://canon.crf.fr/xml/monlangage. Using a namespace in an XML document requires defining a prefix that is a shortcut to the URI for that namespace. This prefix is defined using a specific attribute (for example: attribute 15 xmlns: ml = "http://canon.crf.fr/xml/monlanguage" associates the prefix ml with the http URI: //canon.crf.fr/xml/monlanguage). Then, the namespace of an element or attribute is specified by prefixing its name with the prefix associated with the namespace followed by: (for example: <ml: ml tag: attribute = "value "> indicates that the tag element is from the ml namespace and so is the attribute attribute. The XML format has many advantages and has become a standard for storing data in a file or exchanging data. XML allows in particular to have many tools to process the generated files. In addition, an XML document can be edited manually with a simple text editor. In addition, as an XML document contains its built-in data structure, this document is very readable even without knowing the specification. However, the main disadvantage of the XML syntax is that it is very verbose, sometimes causing the size of an XML document to be several times larger than the intrinsic size of the data. This large size of the XML documents also induces an important processing time during the generation and especially the reading of XML documents.

Pour remédier à cet inconvénient, des 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 compacte, permettant de reconstruire facilement le document XML. Une méthode simple consiste par exemple à remplacer les items XML par des symboles. D'autres méthodes plus évoluées existent, notamment les formats XML Binaire, parmi lequel on connaît le format EXI ("Efficient XML Interchange") ou Fast Infoset, permettant de conserver nombre d'avantages du format XML malgré le codage. EXI est un format XML Binaire actuellement standardisé par le W3C qui utilise un ensemble de grammaires ainsi que des tables de vocabulaire (ou "dictionnaires de valeurs") pour décrire et coder un document XML. Les grammaires permettent de coder efficacement la structure du document, alors que les tables de vocabulaire, qui recensent le vocabulaire rencontré, permettent de coder efficacement des chaînes de caractères qui se répètent, par l'utilisation d'un identifiant numérique à partir de la deuxième apparition d'une chaîne donnée. Pour la suite du document on définit le contexte de codage comme étant l'ensemble des grammaires et des tables de vocabulaire utilisées pour encoder ou décoder un document. To remedy this drawback, methods for encoding an XML document have been searched. The purpose of these methods is to encode the contents of the XML document into a more compact form, making it easy to reconstruct the XML document. For example, a simple method is to replace XML items with symbols. Other more advanced methods exist, including Binary XML formats, among which we know the EXI format ("Efficient XML Interchange") or Fast Infoset, to retain many advantages of XML despite coding. EXI is a Binary XML format currently standardized by W3C that uses a set of grammars as well as vocabulary tables (or "value dictionaries") to describe and encode an XML document. Grammars make it possible to efficiently code the structure of the document, whereas the vocabulary tables, which list the vocabulary encountered, make it possible to efficiently code repeated strings of characters by using a numerical identifier from the second. appearance of a given chain. For the rest of the document, the coding context is defined as being the set of grammars and vocabulary tables used to encode or decode a document.

Pour pouvoir coder les items compris dans un document XML, la spécification Efficient XML divise chacun des éléments rencontrés dans le document à coder, en parties élémentaires appelées événements, par exemple une balise ouvrante ou un attribut. Une grammaire est composée d'un ensemble de productions, chaque production comprenant une description d'événement XML, une valeur de codage associée et l'indication de la grammaire suivante à utiliser (pour le codage de l'événement suivant). Pour coder un événement XML à l'aide d'une grammaire, la production contenant la description la plus précise de l'événement XML est utilisée. La valeur de codage contenue dans cette production est utilisée pour représenter l'événement, et les informations contenues dans l'événement et non décrites dans la production sont codées. In order to be able to code the items included in an XML document, the Efficient XML specification divides each element encountered in the document to be encoded, into elementary parts called events, for example an opening tag or an attribute. A grammar is composed of a set of productions, each production including an XML event description, an associated coding value, and the indication of the next grammar to use (for coding the next event). To code an XML event using a grammar, the output containing the most accurate description of the XML event is used. The encoding value contained in this output is used to represent the event, and the information contained in the event and not described in the output is encoded.

Une grammaire selon Efficient XML (et donc le contexte de codage) est évolutive. Dans un certain nombre de cas, après l'occurrence d'un événement XML déjà décrit par une production de la grammaire (s'il n'est pas décrit par une production, il ne peut être encodé par la grammaire), la grammaire est modifiée pour inclure une nouvelle production correspondant à cet événement XML. Cette production peut soit contenir une description plus précise de l'événement, diminuant le nombre d'informations à coder pour représenter l'événement, soit avoir une valeur de codage plus compacte. Les valeurs de codage, ou codes numériques , sont exprimées sous forme de priorités ayant, généralement, entre 1 et 3 niveaux. Coder une valeur de codage revient à coder les valeurs de sa priorité. Selon le mode de codage le plus avantageux en termes de compression, chaque niveau est codé sur un nombre de bit minimum pour pouvoir coder la plus grande valeur de ce niveau associée à une production de la grammaire. Par exemple, pour un niveau prenant des valeurs de 0 à 6, on utilise 3 bits de codage. Pour coder un document XML, un ensemble de grammaires est utilisé. Quelques grammaires servent à coder la structure propre au document XML. En outre, pour chaque type d'élément XML présent dans le document (un type d'élément XML étant un ensemble d'éléments ayant le même nom, éventuellement dans un même contexte [lequel tient compte des types d'éléments parents de l'élément considéré]), un même ensemble de grammaires est utilisé pour coder les éléments XML de ce type. Les règles de grammaires utilisées peuvent être des règles génériques, communes à tous les documents XML et construites à partir de la syntaxe XML. Mais elles peuvent aussi être des règles spécifiques à un type de document lorsqu'elles sont construites au préalable. Cela permet d'obtenir un codage (ou décodage) plus efficace en termes de compression. Lors du décodage, le processus inverse est utilisé : la valeur de codage est extraite et permet d'identifier l'événement XML codé, ainsi que les informations complémentaires à décoder à partir des productions. En outre, lors du décodage, les mêmes règles d'évolution des grammaires sont utilisées, permettant d'avoir à tout moment un ensemble de règles de grammaires et de productions identique à celui qui était utilisé lors du codage. Deux types d'alignement sont fournis par le format EXI pour représenter les valeurs de codage : un format en octets alignés (en anglais, "byte-aligned ), pour lequel les données encodées sont alignées au niveau des octets, c'est-à-dire que chaque nouvelle chaîne de caractères débute sur un nouvel octet, par exemple, et un format en bits groupés (en anglais, "bitpacked ), pour lequel les données sont encodées sur le plus petit nombre de bits possibles. Dans ce dernier mode, les chaînes de caractères ne commencent donc pas nécessairement sur un nouvel octet. Le premier mode peut être décodé plus efficacement, tandis que le second produit des fichiers davantage compressés. La norme EXI introduit également un mode dit "EXI Schéma" qui se base sur les schémas XML. Ces derniers décrivent des modèles de données représentatifs de structures, et à ce titre il est possible de construire des grammaires représentant ce modèle, et donc un contexte de codage spécifique pour le processeur EXI. Dans le mode EXI Schéma, on utilise un tel schéma afin de créer des grammaires, et on utilise ensuite ces grammaires pour coder ou décoder un document. Le mode EXI Schéma permet d'obtenir une meilleure compression que lorsque les grammaires sont apprises depuis le document. En effet, considérons l'exemple simplifié suivant de données structurées, dans lequel un élément <element> comprend trois éléments successifs <enfantl>, <enfant2> et <enfant3> dans cet ordre : <element> <enfantl/> <enfant2/> <enfant3/> </element>. A grammar according to Efficient XML (and thus the coding context) is scalable. In a certain number of cases, after the occurrence of an XML event already described by a grammar production (if it is not described by a production, it can not be encoded by the grammar), the grammar is modified to include a new production corresponding to this XML event. This output can either contain a more accurate description of the event, decreasing the amount of information to be encoded to represent the event, or have a more compact encoding value. Coding values, or numerical codes, are expressed as priorities, usually between 1 and 3 levels. Coding an encoding value amounts to coding the values of its priority. According to the most advantageous coding mode in terms of compression, each level is coded on a minimum number of bits in order to be able to code the greatest value of this level associated with a production of the grammar. For example, for a level taking values from 0 to 6, 3 coding bits are used. To encode an XML document, a set of grammars is used. Some grammars are used to code the structure of the XML document. In addition, for each type of XML element present in the document (an XML element type being a set of elements with the same name, possibly in the same context [which takes into account the parent element types of the item considered]), the same set of grammars is used to encode XML elements of this type. The grammar rules used can be generic rules, common to all XML documents and built from the XML syntax. But they can also be rules specific to a type of document when they are built beforehand. This provides a more efficient encoding (or decoding) in terms of compression. During decoding, the reverse process is used: the encoding value is extracted and identifies the coded XML event, as well as the additional information to be decoded from the productions. In addition, during decoding, the same rules of evolution of grammars are used, allowing to have at any time a set of rules of grammars and productions identical to that which was used during the coding. Two types of alignment are provided by the EXI format to represent the encoding values: a format in byte-aligned, for which the encoded data are aligned at the byte level, that is, that is, each new character string starts on a new byte, for example, and a bitpacked format, for which the data is encoded on the smallest possible number of bits. In the latter mode, character strings do not necessarily begin on a new byte. The first mode can be decoded more efficiently, while the second produces more compressed files. The EXI standard also introduces a mode called "EXI Schema" which is based on XML schemas. The latter describe representative data models of structures, and as such it is possible to construct grammars representing this model, and therefore a specific encoding context for the EXI processor. In the EXI Schema mode, such a schema is used to create grammars, and then these grammars are used to code or decode a document. The EXI Schema mode provides better compression than when grammars are learned from the document. Indeed, consider the following simplified example of structured data, in which an <element> element has three successive elements <childl>, <child2>, and <child3> in this order: <element> <childl /> <child2 /> <child3 /> </ element>.

Selon la spécification EXI, si aucun schéma n'est utilisé, les éléments <enfantl>, <enfant2> et <enfant3> figurent dans la même grammaire, celle qui décrit le contenu de l'élément <element>. En revanche, avec un schéma XML, il devient possible de savoir que les éléments <enfantl>, <enfant2> et <enfant3> se produisent toujours dans le même ordre, par l'indication de la propriété "séquence" définie par la norme. Cette précision permet de créer davantage de grammaires pour ces éléments, chaque grammaire contenant une seule production: une grammaire pour le passage de <element> vers <enfantl>, une autre pour le passage de <enfantl> vers <enfant2>, etc. En réduisant le nombre de productions par grammaire, on réduit le nombre de bits nécessaires pour coder les priorités, et dans l'exemple ici, puisqu'une seule production demeure par grammaire, il n'y a même plus lieu de coder la production associée (qui est toujours choisie lorsque la grammaire est appelée). La création des grammaires à partir d'un schéma XML est décrite dans la spécification EXI. Comme il arrive que les documents instanciant un schéma ne respectent pas parfaitement le modèle défini, il est possible de choisir un sous-mode autorisant les déviations par rapport au schéma. Dans ce cas, on insère des productions supplémentaires dans les grammaires afin de pouvoir encoder les parties qui ne respectent pas strictement le schéma. De cette manière, on profite de la connaissance du schéma sans pour autant nécessiter des documents parfaitement conformes. Néanmoins, du fait des productions supplémentaires, la compression est moins importante que dans le cas où l'on n'autorise pas les déviations. La norme EXI propose également une gestion particulière du contexte de codage dans le cas d'événements dits "auto-contenus". La propriété "auto-contenu" permet d'indiquer que le contenu d'un élément XML peut-être décodé indépendamment du reste du document dans lequel cet élément apparaît. Lorsqu'un tel événement est rencontré, le contexte de codage courant est sauvegardé, et le contexte de codage initial obtenu pour le décodage du document considéré est rétabli pour le codage de l'événement auto-contenu. Cela signifie que l'on mène le décodage (ou le codage) comme si le contenu de l'élément auto-contenu figurait au début du document. On décode alors le contenu de l'élément auto-contenu, et lorsque l'on arrive à la fin de cet élément, on rétablit le contexte sauvegardé pour poursuivre le décodage du reste du document. Comme on le voit ci-dessus, la norme EXI permet de configurer un contexte de codage d'un processeur EXI à partir de données externes de configuration, en l'espèce des schémas XML, afin d'améliorer la compression des données structurées et des documents correspondants. According to the EXI specification, if no schema is used, the <childl>, <child2>, and <child3> elements are in the same grammar, the one that describes the contents of the <element> element. On the other hand, with an XML schema, it becomes possible to know that the <childl>, <child2> and <child3> elements always occur in the same order, by the indication of the "sequence" property defined by the norm. This precision makes it possible to create more grammars for these elements, each grammar containing a single production: a grammar for the passage from <element> to <enfantl>, another for the passage from <enfantl> to <enfant2>, etc. By reducing the number of productions per grammar, we reduce the number of bits needed to code the priorities, and in the example here, since only one production remains per grammar, there is no longer any need to code the associated production. (which is always chosen when the grammar is called). The creation of grammars from an XML schema is described in the EXI specification. As it happens that the documents instantiating a schema do not perfectly respect the defined model, it is possible to choose a sub-mode allowing deviations from the schema. In this case, additional productions are inserted in the grammars in order to be able to encode the parts which do not strictly respect the diagram. In this way, we take advantage of the knowledge of the schema without requiring perfectly compliant documents. Nevertheless, due to the additional productions, the compression is less important than in the case where one does not allow the deviations. The EXI standard also offers special management of the coding context in the case of so-called "self-contained" events. The "self-contained" property is used to indicate that the content of an XML element can be decoded independently of the rest of the document in which this element appears. When such an event is encountered, the current encoding context is saved, and the initial encoding context obtained for the decoding of the relevant document is restored for the encoding of the self-contained event. This means that the decoding (or coding) is carried out as if the content of the self-contained element appeared at the beginning of the document. Then we decode the content of the self-contained element, and when we reach the end of this element, we restore the context saved to continue decoding the rest of the document. As seen above, the EXI standard makes it possible to configure an encoding context of an EXI processor from external configuration data, in this case XML schemas, in order to improve the compression of the structured data and the data. corresponding documents.

Toutefois, ces schémas doivent être traités quand on encode ou décode un document afin de construire des grammaires et des tables de vocabulaire. Ce traitement qui comprend, entre autres, la lecture et l'analyse des schémas, ainsi que la création du contexte de codage, est assez coûteux, en particulier pour traiter des fichiers courts. En effet, le traitement des schémas XML, même s'il n'y en a qu'un seul, représente un coût fixe, qui prend donc une part d'autant plus importante dans le traitement que le fichier traité est court. Pour réduire ce temps de traitement, certaines bibliothèques de programmes implémentant la norme EXI (par exemple Efficient XML) proposent de produire une version compilée du schéma XML, version à partir de laquelle la construction du contexte de codage est réalisée plus rapidement. L'intérêt de cette version compilée vient du fait qu'il n'est plus nécessaire d'analyser un schéma XML à chaque fois que l'on en a besoin. Cependant, le besoin de lire des données externes de configuration (schéma XML ou équivalent) puis de créer le contexte de codage demeure. Dans certains cas de traitements, les fichiers à traiter appartiennent à un ensemble limité de types et connu. Dans ce cas, les contextes utilisés pour le traitement de ces fichiers présentent généralement de fortes similitudes. A titre d'exemple, dans un appareil photo, on peut être amené à traiter uniquement deux types différents de fichiers: des fichiers SVG ("Scalable Vector Graphics", format de description d'objets graphiques vectoriels) pour l'interface graphique, et des fichiers XML pour décrire les photos. Les mécanismes de l'art antérieur pour configurer le contexte de codage du processeur EXI présentent tous l'inconvénient de devoir, pour le codage d'un nouveau fichier, lire à nouveau les données externes de configuration (schéma XML compilé ou non) et générer intégralement le contexte de codage initial correspondant. La présente invention vise à résoudre cet inconvénient de l'art antérieur et donc à rendre la configuration du contexte de codage du processeur EXI plus efficace. Dans ce dessein, l'invention vise notamment un procédé de configuration d'un processeur de codage/décodage pour le codage/décodage de nouvelles données structurées, ledit processeur comprenant en mémoire un contexte de codage/décodage relatif au traitement d'anciennes données structurées, le contexte étant composé d'une pluralité de sous-contextes, le procédé comprenant les étapes suivantes : - la détermination d'un ensemble de sous-contextes définissant un contexte de codage/décodage desdites nouvelles données structurées ; - l'identification et la suppression, dans le contexte de codage/décodage en mémoire du processeur, d'au moins un sous-contexte non compris dans l'ensemble déterminé de sorte à conserver les sous-contextes appartenant audit ensemble. On considère ici les contextes de codage comme des ensembles de sous-contextes. L'invention permet de gérer efficacement le passage d'un contexte de codage d'un premier document (ou fragment de document) à celui d'un second document (ou fragment de document). En effet, lors du changement de contexte de codage, on conserve les sous-contextes communs aux deux contextes de codage se succédant. On tire profit des similitudes entre les contextes de codage successifs. De la sorte, on réduit les opérations de traitement et de lecture de données externes de configuration nécessaires au chargement des sous-contextes pour procéder au codage/décodage ultérieur. However, these schemas must be handled when encoding or decoding a document to build grammars and vocabulary tables. This processing which includes, among other things, the reading and analysis of schemas, as well as the creation of the coding context, is quite expensive, in particular for processing short files. In fact, the processing of XML schemas, even if there is only one, represents a fixed cost, which therefore takes on an even greater share in the processing that the processed file is short. To reduce this processing time, some program libraries implementing the EXI standard (for example Efficient XML) propose to produce a compiled version of the XML schema, from which the construction of the coding context is carried out more quickly. The advantage of this compiled version comes from the fact that it is no longer necessary to analyze an XML schema whenever it is needed. However, the need to read external configuration data (XML schema or equivalent) and then to create the encoding context remains. In some processing cases, the files to be processed belong to a limited set of types and known. In this case, the contexts used to process these files generally have strong similarities. For example, in a camera, it may be necessary to treat only two different types of files: SVG files ("Scalable Vector Graphics" format for vector graphic objects) for the graphical interface, and XML files to describe the photos. The mechanisms of the prior art for configuring the encoding context of the EXI processor all have the disadvantage that, for the coding of a new file, it is necessary to read again the external configuration data (compiled or uncomplicated XML schema) and to generate integrally the corresponding initial coding context. The present invention aims to solve this drawback of the prior art and thus to make the configuration of the coding context of the EXI processor more efficient. For this purpose, the invention aims in particular at a method for configuring an encoding / decoding processor for encoding / decoding new structured data, said processor comprising in memory a coding / decoding context relating to the processing of old structured data. , the context being composed of a plurality of subcontexts, the method comprising the following steps: determining a set of subcontexts defining a coding / decoding context of said new structured data; the identification and deletion, in the context of coding / decoding in the memory of the processor, of at least one subcontext not included in the set determined so as to preserve the sub-contexts belonging to said set. Here we consider the coding contexts as sets of subcontexts. The invention makes it possible to effectively manage the transition from an encoding context of a first document (or document fragment) to that of a second document (or fragment of document). Indeed, during the change of coding context, we keep the sub-contexts common to the two successive coding contexts. The similarities between the successive coding contexts are used. In this way, it reduces the processing and read operations of external configuration data needed to load the subcontexts for subsequent coding / decoding.

A l'opposé des solutions connues de l'art antérieur où les contextes étaient, à chaque fois, intégralement rechargés, l'invention accélère la configuration du processeur de codage/décodage. Les gains apportés par l'invention sont d'autant plus importants que les fichiers à traiter sont fréquents (par exemple parce qu'ils sont courts) et qu'ils présentent plusieurs sous- contextes similaires (par exemple parce qu'ils mettent en oeuvre des types d'élément identiques). L'invention s'applique particulièrement bien à la reconfiguration du processeur EXI pour le codage/décodage d'un nouveau document mais également pour la gestion des éléments auto-contenus au sens de la norme EXI. Dans ce cas, on utilise des informations spécifiques pour améliorer la compression d'un élément auto-contenu. En plus du contexte initial de codage (qui est rétabli lorsque l'on arrive sur un élément auto-contenu), on peut prendre en compte un profil de configuration (un schéma XML par exemple) dédié à ce type d'élément spécifique, afin de charger un sous-contexte spécifique comprenant des grammaires décrivant l'élément et/ou un vocabulaire contenant des valeurs apparaissant fréquemment dans son contenu. De cette manière, on améliore la compression de cet élément auto-contenu, sans pour autant pénaliser la compression du reste du document, puisque les valeurs spécifiques, par exemple, ne sont prises en compte qu'à l'intérieur de l'élément auto-contenu. In contrast to the known solutions of the prior art where the contexts were, each time, fully reloaded, the invention accelerates the configuration of the coding / decoding processor. The gains brought by the invention are all the more important that the files to be processed are frequent (for example because they are short) and that they present several similar sub-contexts (for example because they implement identical element types). The invention applies particularly well to the reconfiguration of the EXI processor for the coding / decoding of a new document but also for the management of self-contained elements in the sense of the EXI standard. In this case, specific information is used to improve the compression of a self-contained element. In addition to the initial context of coding (which is restored when one arrives at a self-contained element), one can take into account a configuration profile (an XML schema for example) dedicated to this type of specific element, so to load a specific sub-context including grammars describing the element and / or a vocabulary containing values appearing frequently in its content. In this way, the compression of this self-contained element is improved, without penalizing the compression of the remainder of the document, since the specific values, for example, are taken into account only inside the auto element. -content.

Dans un mode de réalisation, ledit contexte de codage/décodage comprend un sous-contexte dynamique comprenant des informations de codage/décodage apprises par le processeur pendant le traitement (codage/décodage) desdites anciennes données, et au moins un sous-contexte statique comprenant des informations de codage/décodage créées par le processeur à partir de données de configuration externes. Le cas où l'on a un seul sous-contexte statique représente la situation la plus simple. Dans ce cas, le sous-contexte dynamique est généralement supprimé et on conserve le sous-contexte statique pour le traitement d'un nouveau document. Les processeurs EXI de l'état de l'art nécessitent, eux, le rechargement intégral de ce sous-contexte statique, notamment du fait qu'ils ne font aucune différence entre les deux sous-contextes statique et dynamique évoqués ici. Ainsi, en particulier, ladite suppression comprend celle du sous-contexte dynamique. In one embodiment, said coding / decoding context comprises a dynamic sub-context including coding / decoding information learned by the processor during the processing (coding / decoding) of said old data, and at least one static sub-context including encoding / decoding information created by the processor from external configuration data. The case where we have a single static sub-context represents the simplest situation. In this case, the dynamic sub-context is usually deleted and the static sub-context is retained for processing a new document. The EXI processors of the state of the art require, them, the full reloading of this static sub-context, in particular because they make no difference between the two static and dynamic sub-contexts mentioned here. Thus, in particular, said deletion includes that of the dynamic sub-context.

Dans un mode de réalisation, ladite suppression dans le contexte comprend l'enregistrement en mémoire dudit au moins un sous-contexte supprimé. Cette configuration permet, dans le cas où l'on doit réutiliser ultérieurement des sous-contextes statiques supprimés antérieurement, d'éviter de relire les profils de configuration à partir desquels ils ont été construits la première fois. Une simple copie depuis la mémoire de stockage des sous- contextes supprimés suffit. On réalise ainsi un gain de temps, bien qu'il soit nécessaire de disposer de davantage de mémoire. Dans ce dessein, on prévoit que la mémoire stockant le sous-contexte supprimé a une taille limitée, et on supprime le sous-contexte en mémoire le moins utilisé lorsque la taille mémoire encore disponible est inférieure à la taille du sous-contexte supprimé à enregistrer. D'autres politiques sont possibles comme celle qui consiste à conserver un ensemble de M sous-contextes au maximum (M étant par exemple défini en fonction de contraintes de mémoire), et à éliminer, si l'on atteint cette limite, le sous-contexte le moins fréquemment utilisé, ou bien celui dont la dernière utilisation remonte le plus loin dans le temps. De façon proche, dans le cas où le fait de ne pas supprimer un sous-contexte de codage n'a pas d'impact sur le flux encodé ou décodé (autrement dit, si la suppression du sous-contexte est possible mais pas nécessaire), au lieu de supprimer ce sous-contexte, on peut simplement le marquer comme facultatif et le supprimer de la mémoire uniquement si l'on atteint une certaine limite de mémoire. Dans un mode de réalisation, le procédé comprend le chargement d'un sous-contexte non présent dans ledit contexte en mémoire du processeur et appartenant audit ensemble déterminé. Cette opération permet de configurer le contexte du processeur en fonction du document ou des données à traiter. On itère notamment ce chargement pour l'ensemble des sous-contextes non présents dans le contexte initialement en mémoire et appartenant à l'ensemble déterminé. In one embodiment, said deletion in the context includes storing in memory said at least one deleted sub-context. This configuration makes it possible, in the case where one must later reuse static sub-contexts previously deleted, to avoid re-reading the configuration profiles from which they were first constructed. A simple copy from the storage memory of deleted sub-contexts is sufficient. This saves time, although it is necessary to have more memory. For this purpose, it is expected that the memory storing the deleted sub-context has a limited size, and the sub-context in the least used memory is deleted when the memory size still available is less than the size of the deleted sub-context to be recorded. . Other policies are possible, such as keeping a set of M subcontexts at a maximum (M being defined for example according to memory constraints), and eliminating, if this limit is reached, the sub-contexts. context the least frequently used, or the one whose last use goes back further in time. In a close way, in the case where the fact of not deleting a coding sub-context has no impact on the encoded or decoded stream (in other words, if the deletion of the sub-context is possible but not necessary) instead of deleting this sub-context, you can simply mark it as optional and delete it from memory only if you reach a certain memory limit. In one embodiment, the method includes loading a sub-context not present in said context in memory of the processor and belonging to said determined set. This operation makes it possible to configure the context of the processor according to the document or the data to be processed. In particular, this loading is iterated for all the sub-contexts that are not present in the context initially in memory and belonging to the determined set.

En particulier, ledit chargement comprend la copie dudit sous-contexte depuis une mémoire stockant des sous-contextes inactifs vers ledit contexte en mémoire du processeur. Cette disposition est à rapprocher de la sauvegarde des sous-contextes en mémoire et présente donc le même intérêt: éviter un nouveau traitement des données externes de configuration type schéma XML. Dans un mode de réalisation, les sous-contextes sont disjoints deux à deux, notamment au sens où les sous-contextes ne concernent que des éléments structurés distincts. Dans ce cas, la gestion du contexte de codage, donc des grammaires et autres partitions de dictionnaires, est simplifiée. On obtient ainsi un gain notable d'efficacité et de rapidité lors du changement de contexte de codage/décodage. In particular, said loading comprises copying said sub-context from a memory storing inactive sub-contexts to said context in memory of the processor. This arrangement is to be compared with the backup of the subcontexts in memory and therefore has the same interest: to avoid a new processing of external configuration XML schema type data. In one embodiment, the subcontexts are disjoint two by two, especially in the sense that the subcontexts relate only to distinct structured elements. In this case, the management of the coding context, and thus grammars and other dictionary partitions, is simplified. This gives a significant gain in efficiency and speed during the change of coding / decoding context.

Selon une caractéristique de l'invention, le procédé comprend l'ordonnancement des sous-contextes conservés et chargés. Cet ordonnancement permet de garantir que les informations de codage (priorités et identifiants) sont les mêmes pour un même contexte bien que ce dernier ait été constitué à partir de contextes antérieurs distincts. On prévoit alors que le procédé comprend une étape de (re)calcul de valeurs de codage (priorités pour les productions, identifiants pour les valeurs de dictionnaires) pour les sous-contextes ordonnés. Dans un mode de réalisation de l'invention, les sous-contextes sont issus d'un ensemble de sous-contextes comprenant un sous-contexte général décrivant des éléments communs à plusieurs ensembles de données structurées (en pratique à plusieurs documents) et des sous-contextes spécialisés décrivant des éléments spécifiques à chacun desdits ensembles de données. Cette configuration est particulièrement adaptée pour traiter efficacement une famille de documents présentant des variations significatives dans leurs contenus. En variante, les sous-contextes sont issus d'un ensemble de sous-contextes hiérarchiques. En variante encore, lesdits contextes sont répartis en deux parties disjointes de sous-contextes, l'une décrivant des informations de structure, et l'autre partie décrivant des informations de contenus. Cette configuration permet de rendre efficace la compression successive de documents ayant par exemple des contenus variables mais des structures fortement similaires (ou vice et versa). Dans un mode de réalisation, lors du chargement, on indique, pour chaque information d'un sous-contexte chargé dans ledit contexte en mémoire du processeur, le sous-contexte auquel elle est attachée. De la sorte, l'étape d'identification des informations à supprimer en vue de la suppression d'un sous-contexte peut être menée efficacement. En particulier, le contexte est formé de grammaires associant des productions à des valeurs de codage, et de dictionnaires (ou tables de vocabulaire) dont les entrées associent des chaînes de caractères à des identifiants de codage, et ladite indication de sous-contexte est renseignée au niveau des productions et des entrées des dictionnaires. Cette indication portée sur les entrées des grammaires et dictionnaires permet de distinguer explicitement celles-ci en fonction des sous-contextes, alors que plusieurs sous-contextes peuvent influer sur une même grammaire ou sur un même dictionnaire. L'identification des informations à supprimer peut être menée plus efficacement qu'en signalant par exemple les dépendances uniquement au niveau des grammaires et dictionnaires. Selon une caractéristique particulière, le contexte est formé de grammaires et de dictionnaires présentant des partitions, et on associe, à chaque grammaire et partition, un compteur du nombre de sous-contextes qui lui sont liés. En pratique, on incrémente et décrémente les compteurs adéquats lors, respectivement, du chargement et de la suppression d'un sous-contexte qui était lié à la grammaire/partition correspondante. Les partitions sont à entendre, ici, au sens de la norme EXI, c'est-à-dire des parties de dictionnaires qui sont dédiées au codage des valeurs ou chaînes de caractères associées à un élément structuré spécifique. Elles permettent d'utiliser des identifiants de codage plus courts. Dans cette configuration, l'état du compteur permet de savoir rapidement si l'on peut traiter (notamment lors de l'étape de suppression) la grammaire ou la partition dans son ensemble ou bien si l'on doit effectuer les opérations de suppression/ajout au niveau des productions de la grammaire et des entrées de la partition. Différentes utilisations de l'invention peuvent être envisagées. According to one characteristic of the invention, the method comprises the scheduling of the conserved and loaded subcontexts. This scheduling makes it possible to guarantee that the coding information (priorities and identifiers) are the same for the same context even though the latter has been constituted from different prior contexts. It is then expected that the method comprises a step of (re) calculation of coding values (priorities for productions, identifiers for the dictionary values) for the ordered subcontexts. In one embodiment of the invention, the subcontexts come from a set of sub-contexts comprising a general sub-context describing elements common to several structured data sets (in practice to several documents) and sub-contexts. specialized contexts describing elements specific to each of said sets of data. This configuration is particularly adapted to effectively handle a family of documents with significant variations in their contents. Alternatively, the subcontexts come from a set of hierarchical subcontexts. As a further variant, said contexts are divided into two disjoint parts of subcontexts, one describing structure information, and the other part describing content information. This configuration makes it possible to make successive compression of documents having, for example, variable contents but structures that are very similar (or vice versa) efficient. In one embodiment, during loading, for each piece of information of a sub-context loaded in said context in memory of the processor, is indicated the sub-context to which it is attached. In this way, the step of identifying the information to be deleted for the purpose of deleting a sub-context can be conducted efficiently. In particular, the context consists of grammars associating productions with coding values, and dictionaries (or vocabulary tables) whose entries associate strings of characters with coding identifiers, and said indication of sub-context is indicated. at the level of the productions and the entries of the dictionaries. This indication on the entries of grammars and dictionaries makes it possible to distinguish them explicitly according to the sub-contexts, whereas several sub-contexts can influence the same grammar or the same dictionary. The identification of information to be deleted can be carried out more efficiently than, for example, reporting dependencies only at the level of grammars and dictionaries. According to a particular characteristic, the context is formed of grammars and dictionaries presenting partitions, and we associate, with each grammar and partition, a counter of the number of subcontexts linked to it. In practice, the appropriate counters are incremented and decremented, respectively, for the loading and deletion of a sub-context that was related to the corresponding grammar / partition. The partitions are to be understood here, in the sense of the EXI standard, that is to say parts of dictionaries which are dedicated to the coding of the values or strings of characters associated with a specific structured element. They allow to use shorter coding identifiers. In this configuration, the state of the counter makes it possible to quickly know if it is possible to treat (in particular during the step of deletion) the grammar or the partition as a whole or if one must carry out the operations of suppression / added at the level of the productions of the grammar and the entries of the partition. Different uses of the invention can be envisaged.

Selon l'une d'elle, les anciennes et nouvelles données structurées sont chacune un document structuré différent. Ainsi, on passe du traitement (codage ou décodage) d'un premier document au traitement d'un deuxième document. La suppression suivie du chargement permet la configuration initiale du processeur. Selon une autre, les anciennes et nouvelles données structurées appartiennent à un même document. Ici, les étapes d'identification, suppression et chargement sont mises en oeuvre lors du codage/décodage d'un même document et mettent à jour le contexte de codage/décodage pour le traitement d'une nouvelle donnée structurée à l'intérieur du document. L'art antérieur connu n'envisage pas de modifier ainsi le contexte en cours de traitement du document. According to one of them, the old and new structured data are each a different structured document. Thus, one goes from the processing (encoding or decoding) of a first document to the processing of a second document. Deleting followed by loading allows the initial configuration of the processor. According to another, old and new structured data belong to the same document. Here, the identification, deletion and loading steps are implemented during the coding / decoding of the same document and update the coding / decoding context for the processing of a new structured data inside the document. . The known prior art does not intend to modify the context in the process of processing the document.

En particulier, les nouvelles données structurées comprennent un élément auto-contenu au sens de la norme EXI. Dans un mode de réalisation, ladite détermination comprend la détermination d'un type représentatif desdites nouvelles données structurées, et ledit ensemble des sous-contextes est déterminé à partir dudit type. In particular, the new structured data includes a self-contained element in the sense of the EXI standard. In one embodiment, said determination comprises determining a representative type of said new structured data, and said set of subcontexts is determined from said type.

L'utilisation d'une unique information (le type) entre les données à traiter et les sous-contextes qui leurs sont liés procure une efficacité importante dans les opérations de détermination, car ces opérations sont simples. En particulier, ledit type est déterminé à partir desdites nouvelles données. The use of a single piece of information (the type) between the data to be processed and the sub-contexts related to them provides a great efficiency in the determination operations, because these operations are simple. In particular, said type is determined from said new data.

En variante, ledit type est déterminé à partir d'une règle de correspondance liant le nom d'un fichier comprenant les nouvelles données structurées à un type. Dans un mode de réalisation, ledit chargement d'un sous-contexte est réalisé à partir d'un fichier de configuration de type Schéma XML. En effet, un tel schéma est adapté à décrire des données structurées et donc à fournir les informations nécessaires à les coder/décoder (c'est-à-dire les informations des grammaires et dictionnaires). Corrélativement, l'invention vise également un dispositif de configuration d'un processeur de codage/décodage pour le codage de nouvelles données structurées, ledit processeur comprenant en mémoire un contexte de codage/décodage relatif au traitement d'anciennes données structurées, le contexte étant composé d'une pluralité de sous-contextes, le dispositif comprenant : - un moyen de détermination d'un ensemble de sous-contextes définissant un contexte de codage/décodage desdites nouvelles données structurées ; - un moyen d'identification et de suppression, dans le contexte de codage/décodage en mémoire du processeur, d'au moins un sous-contexte non compris dans l'ensemble déterminé de sorte à conserver les sous-contextes appartenant audit ensemble. In a variant, said type is determined from a correspondence rule linking the name of a file comprising the new structured data to a type. In one embodiment, said loading of a sub-context is performed from an XML Schema configuration file. Indeed, such a scheme is adapted to describe structured data and thus to provide the information necessary to code / decode (that is to say the information of grammars and dictionaries). Correlatively, the invention also provides a device for configuring a coding / decoding processor for coding new structured data, said processor comprising in memory a coding / decoding context relating to the processing of old structured data, the context being composed of a plurality of subcontexts, the device comprising: means for determining a set of subcontexts defining a coding / decoding context of said new structured data; means for identifying and deleting, in the context of coding / decoding in the processor's memory, at least one sub-context not included in the set determined so as to retain the sub-contexts belonging to said set.

De façon optionnelle, le dispositif peut comprendre des moyens se rapportant aux caractéristiques du procédé de configuration exposé précédemment. Un moyen de stockage d'informations, éventuellement totalement ou partiellement amovible, lisible par un système informatique, comprend des instructions pour un programme informatique adapté à mettre en oeuvre le procédé de configuration conforme à l'invention lorsque ce programme est chargé et exécuté par le système informatique. Un programme d'ordinateur lisible par un microprocesseur, comprend des portions de code logiciel adaptées à mettre en oeuvre le procédé de configuration conforme à l'invention, lorsqu'il est chargé et exécuté par le microprocesseur. Les moyens de stockage d'information et programme d'ordinateur présentent des caractéristiques et avantages analogues aux procédés qu'ils mettent en oeuvre. Optionally, the device may comprise means relating to the characteristics of the configuration method described above. An information storage medium, possibly totally or partially removable, readable by a computer system, comprises instructions for a computer program adapted to implement the configuration method according to the invention when this program is loaded and executed by the computer system. A microprocessor-readable computer program comprises portions of software code adapted to implement the configuration method according to the invention, when loaded and executed by the microprocessor. The information storage means and computer program have characteristics and advantages similar to the processes they implement.

D'autres particularités et avantages de l'invention apparaîtront encore dans la description ci-après, illustrée par les dessins ci-joints, dans lesquels : - la figure 1 représente schématiquement un processeur EXI pour la mise en oeuvre de l'invention ; - les figures 2a à 2e illustrent la formation de contexte de codage pour la mise en oeuvre de l'invention ; - la figure 3 représente, sous forme de logigramme, des étapes du procédé selon l'invention ; - la figure 4 représente, sous forme de logigramme, des étapes pour la détermination de sous-contextes mise en oeuvre dans le procédé de la figure 2 ; - la figure 5 représente, sous forme de logigramme, des étapes pour la suppression de sous-contextes dans le procédé de la figure 2 ; - la figure 6 représente, sous forme de logigramme, des étapes pour l'ajout de sous-contextes dans le procédé de la figure 2 ; et - la figure 7 montre une configuration matérielle particulière d'un dispositif de traitement d'information apte à une mise en oeuvre des procédés selon l'invention. On illustre maintenant l'invention par un exemple de décodage de fichiers SVG par un processeur EXI. Other features and advantages of the invention will become apparent in the description below, illustrated by the accompanying drawings, in which: - Figure 1 schematically shows an EXI processor for the implementation of the invention; FIGS. 2a to 2e illustrate the formation of coding context for the implementation of the invention; FIG. 3 represents, in the form of a logic diagram, steps of the method according to the invention; FIG. 4 represents, in the form of a logic diagram, steps for the determination of subcontexts implemented in the method of FIG. 2; FIG. 5 represents, in the form of a logic diagram, steps for the deletion of subcontexts in the method of FIG. 2; FIG. 6 represents, in the form of a logic diagram, steps for the addition of subcontexts in the method of FIG. 2; and FIG. 7 shows a particular hardware configuration of an information processing device suitable for implementing the methods according to the invention. The invention is now illustrated by an example of decoding SVG files by an EXI processor.

Les fichiers SVG sont préalablement encodés à l'aide de plusieurs modèles, typiquement des Schémas XML, décrivant les données contenues dans ces fichiers, afin d'améliorer leur taux de compression. Ces modèles permettent de paramétrer la configuration initiale du processeur EXI de façon similaire au mode Schéma EXI de l'art antérieur. SVG files are previously encoded using several models, typically XML Schemas, describing the data contained in these files, in order to improve their compression ratio. These models make it possible to parameterize the initial configuration of the EXI processor in a similar way to the EXI Schematic mode of the prior art.

Ici, on distingue deux types de fichiers SVG : un premier type dit "Image", qui décrit des images fixes, et un deuxième type dit "Animation", qui décrit des animations. Comme représenté sur la figure 1, un processeur EXI 1 utilisé pour le codage ou le décodage de documents structurés tels que le XML, comprend une mémoire vive 10 mémorisant un contexte de codage 12 pour le codage/décodage d'un document, ici un fichier SVG. Ce contexte 12 correspond à l'ensemble des informations qui permettent de savoir comment encoder ou décoder un événement XML. Il comprend typiquement deux types d'objets : les grammaires GRAM telles que prévues par la norme EXI, qui décrivent la structure des données XML, et les tables de vocabulaire VOCA, également prévues par la norme EXI sous le terme de "string tables", qui contiennent des chaînes de caractères. Here, there are two types of SVG files: a first type called "Image", which describes still images, and a second type called "Animation", which describes animations. As represented in FIG. 1, an EXI processor 1 used for encoding or decoding structured documents such as XML, comprises a random access memory 10 storing a coding context 12 for encoding / decoding a document, here a file SVG. This context 12 corresponds to the set of information that makes it possible to know how to encode or decode an XML event. It typically includes two types of objects: GRAM grammars as provided by the EXI standard, which describe the XML data structure, and VOCA vocabulary tables, also provided by the EXI standard under the term "string tables", which contain strings.

Cinq tables de vocabulaire sont distinguées dans la spécification EXI : - trois concernent des informations sur les noms qualifiés (un nom "qualifié" comprend un nom local [par exemple balise ], une URI [par exemple xmlns:ml="http://canon.crf.fr/xml/monlangage ], et éventuellement un préfixe [par exemple ml ]) et les espaces de nommage (une pour les URI, une pour les préfixes, une pour les noms locaux), et - deux concernent des informations sur les valeurs textuelles, qui apparaissent pour un attribut ou pour un événement de contenu textuel (une table locale et une table globale). Ces grammaires et tables de vocabulaire sont largement documentées dans la norme EXI et ne sont pas décrites plus en détail ici. Sur la figure 1, le contexte de codage 12 est composé de plusieurs sous-contextes 14 et 16, chacun définissant une partie du contexte 12. Five vocabulary tables are distinguished in the EXI specification: - three relate to information on qualified names (a "qualified" name includes a local name [eg tag], a URI [eg xmlns: ml = "http: // canon.crf.fr/xml/monlangage], and possibly a prefix [eg ml]) and namespaces (one for URIs, one for prefixes, one for local names), and - two relate to information on textual values, which appear for an attribute or for a textual content event (a local table and a global table) These grammars and vocabulary tables are extensively documented in the EXI standard and are not described in more detail here. In FIG. 1, the coding context 12 is composed of several sub-contexts 14 and 16, each defining part of the context 12.

Si l'on traite un document XML, on a toujours au moins deux sous-contextes : au moins un sous-contexte statique 14, qui correspond aux données présentes dans le contexte de codage au début du traitement des données, et un sous-contexte dynamique 16, qui correspond aux données apprises durant le traitement des données du document XML par le processeur EXI. Le sous- contexte statique peut être réduit à sa plus simple expression: des grammaires par défaut au sens EXI, lorsque aucune donnée initiale de configuration n'est utilisée. Pour l'invention, on considérera généralement que le contexte initial contient des informations autres que les grammaires par défaut. Comme on le verra par la suite, plusieurs sous-contextes statiques 141, 14; peuvent être utilisés. Le but de la division du contexte 12 en sous-contextes 14, 16 est de pouvoir effectuer des opérations sur ces sous-contextes. Un sous-contexte de codage 14, 16 comprend des informations relatives à des grammaires GRAM et à des tables de vocabulaire VOCA. On définit donc un sous-contexte 14, 16 comme un ensemble de références vers des éléments du contexte de codage, c'est-à-dire des références vers des grammaires GRAM, et des entrées des tables de vocabulaire VOCA, typiquement des partitions. On distingue deux types de tables de vocabulaire VOCA : celles qui sont simplement constituées de valeurs, par exemple la liste des valeurs globales qui recense des valeurs pouvant apparaître n'importe où dans un document, et celles qui sont constituées de partitions, par exemple la liste des valeurs locales attachées à un type d'élément XML précis (par exemple toutes les valeurs que prend un élément "enfant"). Comme définie par la spécification EXI, une partition des tables VOCA est une sous-table, cette sous-table contenant un certain nombre d'entrées. Dans le cas des valeurs locales, l'information locale (le nom de l'attribut ou de l'élément dans lequel on rencontre la valeur textuelle) donne un critère de distinction des valeurs rencontrées et donc différentes partitions. En séparant les valeurs suivant ce critère, on constitue les partitions, on minimise le nombre de valeurs possibles dans un contexte donné (le contexte étant ici le fait d'être à l'intérieur d'un attribut ou d'un élément donné, i.e. une partition), et le code numérique utilisé pour l'identifiant correspondant à la valeur à coder est alors plus court. La compression en devient plus efficace. La table VOCA des valeurs locales contient donc, pour chaque attribut ou élément dans lequel on rencontre une valeur textuelle, une partition, cette partition contenant des entrées, chaque entrée consistant en un identifiant et une valeur textuelle. Pour la mise en oeuvre de l'invention, on indique, au niveau de chaque production et de chaque entrée d'une partition, la liste des sous- contextes auxquels elle (production ou entrée) est liée. Cette indication peut être un simple champ additionnel référençant un numéro de sous-contexte. Comme on le verra par la suite, cette indication permet une gestion efficace lorsque une grammaire ou une partition est liée à plusieurs sous-contextes 14, 16. En effet, dans ce cas les références vers les grammaires et partitions ne permettent pas de distinguer les productions et entrées associées à tel ou tel sous-contexte 14, 16. If we treat an XML document, we always have at least two sub-contexts: at least one static sub-context 14, which corresponds to the data present in the coding context at the beginning of the data processing, and a sub-context dynamic 16, which corresponds to the data learned during the processing of the data of the XML document by the processor EXI. The static sub-context can be reduced to its simplest expression: default grammars in the EXI sense, when no initial configuration data is used. For the invention, it will generally be assumed that the initial context contains information other than the default grammars. As will be seen later, several static subcontexts 141, 14; can be used. The purpose of the division of context 12 into sub-contexts 14, 16 is to be able to perform operations on these subcontexts. A coding sub-context 14, 16 includes information relating to GRAM grammars and VOCA vocabulary tables. Thus, a sub-context 14, 16 is defined as a set of references to elements of the coding context, that is to say references to GRAM grammars, and entries in the VOCA vocabulary tables, typically partitions. There are two types of VOCA vocabulary tables: those that simply consist of values, for example the list of global values that lists values that can appear anywhere in a document, and those that consist of partitions, for example the list of local values attached to a specific XML element type (for example, all values that a child element takes). As defined by the EXI specification, a VOCA table partition is a sub-table, this sub-table containing a number of entries. In the case of local values, local information (the name of the attribute or element in which the textual value is found) gives a criterion for distinguishing the values encountered and therefore different partitions. By separating the values according to this criterion, the partitions are constituted, the number of possible values in a given context is minimized (the context here being the fact of being within an attribute or a given element, ie a partition), and the numerical code used for the identifier corresponding to the value to be encoded is then shorter. Compression becomes more efficient. The VOCA table of local values therefore contains, for each attribute or element in which a textual value is encountered, a partition, this partition containing entries, each entry consisting of an identifier and a textual value. For the implementation of the invention, at the level of each production and each entry of a partition, the list of subcontexts to which it (production or input) is linked is indicated. This indication may be a simple additional field referencing a sub-context number. As will be seen later, this indication allows efficient management when a grammar or a partition is linked to several sub-contexts 14, 16. Indeed, in this case the references to grammars and partitions do not make it possible to distinguish productions and inputs associated with this or that sub-context 14, 16.

Pour l'invention, un sous-contexte statique 14 est appris par le processeur EXI via des données de configuration externes, par exemple un schéma XML, ou plus généralement un profil 20. Cet apprentissage est par exemple conforme au mode Schéma EXI déjà évoqué. On prévoit donc un ensemble de profils externes 201, 202, 20n associés chacun à sous-contexte statique 14;. Par profil 20, on entend la description externe d'un modèle de données, comprenant des indications de structure et/ou de contenu, qui permet de créer des grammaires et/ou des tables de vocabulaire pour un processeur EXI. Les schémas XML répondent à cette définition. Toutefois, tout modèle décrit dans un langage structuré, ainsi que les descriptions compactes de grammaires dans un format dédié peuvent être envisagés. On assimile parfois, dans la suite du document, les termes "profil" et "sous-contexte" pour désigner les informations de codage spécifiques à la structure et au contenu décrit. Toutefois, le terme "profil" aura vocation principalement à désigner de telles informations lorsqu'elles sont considérées comme une connaissance externe pour configurer le processeur, et le terme "sous-contexte" pour désigner ces informations lorsqu'elles constituent une structure interne au processeur. For the invention, a static sub-context 14 is learned by the EXI processor via external configuration data, for example an XML schema, or more generally a profile 20. This learning is for example in accordance with the EXI Schema mode already mentioned. A set of external profiles 201, 202, 20n each associated with static sub-context 14 is therefore provided. By profile 20 is meant the external description of a data model, including structure and / or content indications, which makes it possible to create grammars and / or vocabulary tables for an EXI processor. XML schemas meet this definition. However, any model described in a structured language, as well as compact descriptions of grammars in a dedicated format can be considered. The terms "profile" and "sub-context" are sometimes used throughout the document to denote the coding information specific to the structure and content described. However, the term "profile" will be primarily intended to designate such information when it is considered an external knowledge to configure the processor, and the term "sub-context" to designate this information when they constitute a structure internal to the processor .

Dans certains cas, quand on considère un ensemble de documents structurés, ces documents présentent des structures et des contenus proches, et l'on peut alors les modéliser efficacement avec un seul profil 20. En revanche, dans d'autres cas, une même famille de documents peut présenter des variations significatives, et il peut alors être intéressant de définir plusieurs profils 20 pour modéliser ces données, avec par exemple un profil général 201 décrivant les informations communes à tous les documents, et des profils spécialisés 202, 20n, décrivant chacun une variante spécifique aux différents documents. De retour à notre exemple des fichiers SVG "Image" et "Animation", on dispose de trois profils 201, 202 et 203. Ces profils au format Schéma XML et/ou sous forme de description compacte de grammaires et contenus au format XML sont générés par des mécanismes classiques de génération, par exemple de fichiers XML, que l'on ne décrit pas plus en détail ici pour cette raison. Les trois profils comprennent : - un profil Général 201, valable pour les deux types de fichiers car regroupant des informations communes ; - un profil Image 202, utilisé en complément du profil Général dans le cas des images fixes ; et - un profil Animation 203 utilisé en complément du profil Général dans le cas des animations. In some cases, when we consider a set of structured documents, these documents present structures and similar contents, and we can then model them effectively with only one profile. In contrast, in other cases, the same family of documents can have significant variations, and it may be interesting to define several profiles 20 to model these data, with for example a general profile 201 describing the information common to all the documents, and specialized profiles 202, 20n, describing each a specific variant to the different documents. Back to our example of the SVG "Image" and "Animation" files, we have three profiles 201, 202 and 203. These profiles in XML Schema format and / or in the form of a compact description of grammars and contents in XML format are generated. by conventional generation mechanisms, for example XML files, which are not described in more detail here for this reason. The three profiles comprise: - a General 201 profile, valid for the two types of files because gathering common information; an image profile 202, used in addition to the general profile in the case of still images; and an animation profile 203 used in addition to the General profile in the case of animations.

Ces trois profils 201, 202 et 203 sont représentés sur la figure 2a. Chaque profil décrit une liste d'éléments XML, les attributs et les enfants possibles pour ces éléments. Par exemple, pour le profil 201, l'élément "SVG" (qui est l'élément racine du document) comprend deux attributs "height" et "width", et un élément enfant "path" dont les composantes attributs sont également listées. Dans ces profils, les valeurs entre parenthèses sont des valeurs fréquentes pour les attributs considérés, par exemple l'attribut "height" prend fréquemment la valeur "100%". Ces valeurs constituent un vocabulaire initial pour le processeur EXI lorsqu'il se configure avec ce profil, comme on le verra par la suite. D'une façon générale, il est préférable de disposer d'un maximum d'informations pour décrire des modèles destinés à paramétrer un processeur EXI (notamment les transitions possibles entre attributs et entre enfants). Dans notre exemple, on se limite cependant à des informations limitées et essentielles afin de rendre les explications plus facilement compréhensibles. Dans notre exemple, on crée un processeur EXI afin de décoder un des fichiers SVG préalablement encodés, par exemple le fichier "image.svg.exi" représentant un fichier de type "Image". Il s'agit du premier fichier à décoder, le contexte de codage 12 est donc vide. Pour le configurer correctement, on détermine tout d'abord quels ont été les profils 20 utilisés pour encoder ce fichier. These three profiles 201, 202 and 203 are represented in FIG. 2a. Each profile describes a list of XML elements, attributes, and possible children for those elements. For example, for profile 201, the "SVG" element (which is the root element of the document) includes two "height" and "width" attributes, and a "path" child element whose attribute components are also listed. In these profiles, the values in parentheses are frequent values for the attributes considered, for example the attribute "height" frequently takes the value "100%". These values constitute an initial vocabulary for the EXI processor when it is configured with this profile, as will be seen later. In general, it is preferable to have as much information as possible to describe models intended to parameterize an EXI processor (notably the possible transitions between attributes and between children). In our example, however, we limit ourselves to limited and essential information in order to make the explanations more easily understood. In our example, we create an EXI processor to decode a previously encoded SVG file, for example the file "image.svg.exi" representing a file of type "Image". This is the first file to decode, coding context 12 is empty. To configure it correctly, it is first determined which profiles were used to encode this file.

L'information permettant cette détermination peut être contenue dans le fichier lui-même, par exemple en utilisant un champ d'en-tête destiné à spécifier des données externes utilisées lors de l'encodage (notamment un schéma XML), ou bien par exemple grâce à une table associant chaque fichier à différents profils. Dans l'exemple, on tire du nom du fichier le type auquel il correspond: "Image"; et on déduit que l'on doit utiliser les profils Général 201 et Image 202. On utilise ces deux profils de façon classique pour initialiser le processeur EXI, c'est-à-dire pour créer un contexte initial de codage 12, composé de grammaires GRAM et de tables de vocabulaire VOCA. La figure 2b présente les grammaires obtenues à partir du profil Général 201. Dans certains cas (par exemple celui de l'élément "svg"), il existe deux grammaires par élément, une grammaire StartTag destinée à modéliser le début de l'élément (notamment les attributs), et une grammaire ElementContent destinée à représenter les enfants de l'élément. Cette distinction est spécifique au format EXI dont elle contribue à l'efficacité. La grammaire StartTag svg comprend ainsi une production pour coder un nouvel élément "path" : production SE path; et des productions pour coder les attributs: productions ATT. On note ici que l'on n'a pas représenté les valeurs des priorités utilisées pour coder ces productions, mais qu'elles peuvent être déterminées de façon classique conformément à la spécification EXI, par exemple en attribuant une valeur de priorité sur un seul niveau pour chaque production. En revanche on indique pour chaque production le sous-contexte SC1 (associé au profil 201) auquel elle est liée. Une grammaire StartTag path permet de façon similaire de coder le contenu d'un élément "path". Cette grammaire comprend les productions SE path et EE (fin d'élément) associées au sous-contexte SC1. The information enabling this determination can be contained in the file itself, for example by using a header field intended to specify external data used during the encoding (in particular an XML schema), or for example thanks to a table associating each file with different profiles. In the example, we take from the name of the file the type to which it corresponds: "Image"; and we deduce that we must use the profiles General 201 and Image 202. We use these two profiles in a conventional way to initialize the processor EXI, that is to say, to create an initial coding context 12, composed of grammars GRAM and VOCA vocabulary tables. Figure 2b presents the grammars obtained from the General 201 profile. In some cases (for example that of the "svg" element), there are two grammars per element, a StartTag grammar intended to model the beginning of the element ( including attributes), and an ElementContent grammar to represent the children of the element. This distinction is specific to the EXI format and contributes to its effectiveness. The grammar StartTag svg thus includes a production to encode a new element "path": production SE path; and productions to code the attributes: ATT productions. It is noted here that the values of the priorities used to code these productions have not been represented, but that they can be conventionally determined in accordance with the EXI specification, for example by assigning a priority value on a single level. for each production. On the other hand, for each production, the sub-context SC1 (associated with the profile 201) to which it is linked is indicated. A StartTag path grammar similarly allows you to encode the content of a "path" element. This grammar includes the productions SE path and EE (end of element) associated with the sub-context SC1.

Chacune des grammaires GRAM renseigne également du contexte auquel elle est liée (par au moins une production), ici uniquement le contexte SC1 (voir en-tête des grammaires sur la figure 2b). Each of the grammars GRAM also informs the context to which it is linked (by at least one production), here only the context SC1 (see header of the grammars in Figure 2b).

Le traitement du profil Image 202 amène l'ajout de nouvelles grammaires au contexte de codage 12, ainsi que l'ajout de nouvelles productions à certaines grammaires existantes ( StartTag svg et ElementContent svg ). En effet, le profil Image 202 apporte des informations complémentaires sur l'élément svg défini dans le profil Général 201, dont il faut tenir compte pour le décodage des fichiers svg. Les grammaires du contexte de codage 12 ainsi obtenues sont représentées en figure 2c, les valeurs de priorités n'étant pas représentées. Au sein des grammaires GRAM, on distingue les productions liées à tel ou tel sous-contexte statique 14;, grâce à l'indication 24 du profil SC; correspondant. On visualise également de façon globale, à l'aide des références aux grammaires, à quels contextes chaque grammaire est liée: par exemple les références 22 permettent de lire rapidement que la grammaire StartTag svg est liée aux contextes SC1 et SC2. On peut cependant aisément s'affranchir de cette référence 22 dans la mesure où les indications au niveau de chaque production permettent de déduire ces dépendances. Concernant l'autre partie du contexte de codage 12, à savoir les tables de vocabulaire, on décrit ici uniquement la table recensant les valeurs rencontrées pour les différents attributs. La figure 2d représente cette table. Pour chaque nom d'attribut, on utilise, selon la terminologie EXI, une partition P distincte d'une table de vocabulaire. Cette partition associe des identifiants et des valeurs. Ici, on aura par exemple une partition pour l'attribut width , cette partition associant les identifiants 0 et 1 aux valeurs 100% et 250 (valeurs fréquentes de l'attribut width selon les profils Général et Image). On indique également à quel sous-contexte SC; (à l'aide du profil 20 correspondant) chacune des entrées correspond: l'entrée "100%" de la partition "width" est notamment liée au profil 201 et donc au sous-contexte associé référencé SC1. Suivant l'ordre dans lequel on ajoute les sous-contextes, les identifiants 0 et 1 ne désigneront pas les mêmes valeurs, c'est pourquoi, dans le cas général, on ordonne les sous-contextes SC; et donc les profils associés 20;. Les profils/sous-contextes sont par exemple ordonnés en fonction de l'indice correspondant: SC1 avant SC2, ou si l'on nomme les profils, en utilisant l'ordre alphabétique. The processing of the Image 202 profile brings the addition of new grammars to the encoding context 12, as well as the addition of new productions to some existing grammars (StartTag svg and ElementContent svg). In fact, the Image 202 profile provides additional information on the svg element defined in the General 201 profile, which must be taken into account when decoding svg files. The grammars of the coding context 12 thus obtained are represented in FIG. 2c, the priority values not being represented. Within GRAM grammars, we distinguish the productions related to one or another static sub-context 14 ;, thanks to the indication 24 of the profile SC; corresponding. We also visualize globally, using the references to the grammars, to which contexts each grammar is linked: for example the references 22 make it possible to quickly read that the grammar StartTag svg is related to the contexts SC1 and SC2. However, this reference 22 can easily be dispensed with insofar as the indications at the level of each production make it possible to deduce these dependencies. Concerning the other part of the coding context 12, namely the vocabulary tables, only the table listing the values encountered for the different attributes is described here. Figure 2d shows this table. For each attribute name, we use, according to the terminology EXI, a partition P distinct from a vocabulary table. This partition associates identifiers and values. Here, we will have for example a partition for the attribute width, this partition associating the identifiers 0 and 1 with the values 100% and 250 (frequent values of the attribute width according to the profiles General and Image). It is also indicated to which sub-context SC; (Using the corresponding profile 20) each of the entries corresponds to: the "100%" entry of the "width" partition is notably related to the profile 201 and therefore to the associated sub-context referenced SC1. Following the order in which the subcontexts are added, the identifiers 0 and 1 will not designate the same values, that is why, in the general case, the subcontexts SC are ordered; and therefore the associated profiles 20 ;. The profiles / subcontexts are for example ordered according to the corresponding index: SC1 before SC2, or if one names the profiles, using the alphabetical order.

L'ordre peut être défini soit dans les profils eux-mêmes, soit via une autre ressource, par exemple un fichier complémentaire décrivant l'ordre des profils et leurs éventuelles dépendances, suivant le type de profils considérés. Dans notre exemple, le profil Général 201 étant commun et indexé "1", on le considère comme prioritaire par rapport au profil Image 202, et l'identifiant 0 de la partition width désigne donc 100% sans ambiguïté. On note ici qu'une variante des références 22 et des indications 24 dans les grammaires et tables de vocabulaire consiste à utiliser une ou plusieurs listes 18 d'entrées décrivant chaque sous-contexte SC;/14;. Ces listes 18 sont stockées en mémoire 10 du processeur EXI. The order can be defined either in the profiles themselves or via another resource, for example a complementary file describing the order of the profiles and their possible dependencies, depending on the type of profiles considered. In our example, the General 201 profile being common and indexed "1", it is considered as priority over the image profile 202, and the identifier 0 of the width partition therefore designates 100% unambiguously. It will be noted here that a variant of the references 22 and indications 24 in the grammars and vocabulary tables consists in using one or more lists 18 of entries describing each sub-context SC; / 14 ;. These lists 18 are stored in memory 10 of the EXI processor.

Pour les grammaires GRAM, on conserve une référence vers chaque grammaire ajoutée pour le sous-contexte SC; considéré ainsi qu'une référence vers chaque production ajoutée pour ce sous-contexte. Pour les tables de vocabulaire, on conserve une référence vers chaque partition ajoutée pour le sous-contexte SC; considéré, ainsi que le nombre de valeurs ajoutées à cette partition pour ce sous-contexte. Dans le cas des grammaires, il arrive qu'une même grammaire soit utilisée par deux sous-contextes, c'est pourquoi il faut garder aussi une information concernant chaque production. De manière identique, il arrive qu'une partition soit utilisée par deux sous-contextes, et il faut donc conserver le nombre de valeurs ajoutées pour chaque sous-contexte. Dans notre exemple, on considère que les sous-contextes sont ordonnés, et qu'il suffit alors de connaître ce nombre de valeurs ajoutées pour chaque sous-contexte SC; afin de déterminer les valeurs associées à un sous-contexte donné. For GRAM grammars, we keep a reference to each grammar added for the sub-context SC; considered as well as a reference to each production added for this sub-context. For vocabulary tables, a reference is kept to each partition added for the SC subcontext; considered, as well as the number of values added to this partition for this sub-context. In the case of grammars, it happens that the same grammar is used by two sub-contexts, that is why we must also keep information about each production. Similarly, a partition may be used by two sub-contexts, so the number of values added for each sub-context must be retained. In our example, we consider that the subcontexts are ordered, and that it is then enough to know this number of added values for each sub-context SC; to determine the values associated with a given sub-context.

Les listes d'entrées associées au sous-contexte Général SC1 et au sous-contexte Image SC2 sont représentées sur la figure 2e. The input lists associated with the general sub-context SC1 and the sub-context Image SC2 are shown in FIG. 2e.

Maintenant que le processeur EXI est configuré avec son contexte de codage 12 initial, on procède au décodage du fichier "image.svg.exi". Ce décodage est conforme aux mécanismes connus, et modifie donc le contexte de codage 12 (qui est évolutif) au fur et à mesure du traitement des éléments XML du fichier. Ainsi, peuvent être ajoutées de nouvelles valeurs dans les tables de vocabulaire, de nouvelles grammaires ou bien de nouvelles productions à l'intérieur des grammaires. Comme on l'a déjà évoqué précédemment, tous ces éléments ajoutés au contexte 12 pendant ce décodage constituent le sous-contexte dynamique 16. Ce sous-contexte est structurellement similaire aux sous-contextes statiques SC;/14; précédemment décrits. L'invention s'applique lorsque, le décodage étant terminé, on demande au processeur EXI de décoder un autre fichier, en l'occurrence le fichier "anim.svg.exi" de type "Animation". Now that the processor EXI is configured with its initial coding context 12, the file "image.svg.exi" is decoded. This decoding is in accordance with known mechanisms, and therefore modifies the coding context 12 (which is scalable) as the XML elements of the file are processed. Thus, new values can be added to vocabulary tables, new grammars or new productions within grammars. As already mentioned above, all these elements added to the context 12 during this decoding constitute the dynamic sub-context 16. This sub-context is structurally similar to the static subcontexts SC; / 14; previously described. The invention applies when, the decoding being completed, the processor EXI is asked to decode another file, in this case the file "anim.svg.exi" type "Animation".

Dans les techniques de l'art antérieur, le processeur fait appel à une fonction de réinitialisation afin de supprimer les objets du contexte 12 créés pour le décodage précédent, notamment les grammaires et les tables de vocabulaire dans le cas d'un processeur EXI. Selon un exemple de l'invention, on cherche d'abord à déterminer le type associé au fichier à traiter, en l'occurrence le type "Animation". On détermine les profils ou sous-contextes nécessaires à ce type de fichier: ici les sous-contextes Général SC1 et Animation SC3. Par rapport au décodage du fichier précédent "image.svg.exi", il existe un profil partagé (Général 201), un profil en moins (Image 202) et un profil en plus (Animation 203). De plus, il existe le sous-contexte dynamique 16, qui contient des informations propres au document décodé et qui ne sont donc pas nécessaires pour le document "anim.svg.exi". En manipulant le contexte de codage 12 au travers de sous- contextes 14, 16, SC, l'invention permet d'enlever les éléments du contexte de codage 12 relatifs au sous-contexte Image SC2 et au sous-contexte dynamique 16, et d'ajouter ceux relatifs au sous-contexte Animation SC3. Ainsi, on ne procède pas à nouveau au chargement du sous-contexte Général SC1 en mémoire à partir du profil correspondant. En pratique, pour supprimer les éléments liés au sous-contexte Image SC2, on parcourt la liste 18 des grammaires et des partitions liées à ce sous-contexte Image. Si la grammaire ou la partition étudiée n'est liée qu'à ce sous-contexte (c'est-à-dire qu'elle n'est pas listée dans une autre liste 18 associée à un autre sous-contexte), alors on peut la supprimer d'un seul coup. En revanche, si elle est liée à un autre sous-contexte, il faut supprimer uniquement les productions liées au sous-contexte Image, de même que si une partition est liée à un autre sous-contexte, il faut supprimer uniquement les valeurs de cette partition liées au sous-contexte. Pour notre exemple et le sous-contexte Image SC2, on supprime la grammaire StartTag rect qui lui est propre, ainsi que seulement les productions ajoutées dans les grammaires StartTag svg et ElementContent svg . En ce qui concerne les tables de vocabulaire VOCA, on supprime simplement les valeurs 100 et 250 des partitions height et width , et non les partitions height et width dans leur totalité car il existe des valeurs liées au sous-contexte Général pour chacune de ces partitions. In the prior art techniques, the processor uses a reset function to delete the context objects 12 created for the previous decode, including grammars and vocabulary tables in the case of an EXI processor. According to an example of the invention, it first seeks to determine the type associated with the file to be processed, in this case the type "Animation". The profiles or sub-contexts necessary for this type of file are determined: here the sub-contexts General SC1 and Animation SC3. Compared to the decoding of the previous file "image.svg.exi", there is a shared profile (General 201), a profile less (Image 202) and a profile more (Animation 203). In addition, there is the dynamic sub-context 16, which contains information specific to the decoded document and therefore not necessary for the document "anim.svg.exi". By manipulating the coding context 12 through subcontexts 14, 16, SC, the invention makes it possible to remove the elements of the coding context 12 relating to the subtext SC2 and the dynamic sub-context 16, and add those related to the SC3 Animation sub-context. Thus, we do not proceed to load the sub-context General SC1 in memory from the corresponding profile. In practice, to delete the elements related to the SC2 Image sub-context, the list 18 of grammars and partitions related to this Image sub-context is scanned. If the grammar or the studied partition is related only to this sub-context (that is to say that it is not listed in another list 18 associated with another sub-context), then one can delete it in one go. On the other hand, if it is linked to another sub-context, it is necessary to delete only the productions related to the sub-context Image, just as if a partition is linked to another sub-context, it is necessary to delete only the values of this sub-context. partition related to the sub-context. For our example and the Image SC2 sub-context, we delete the StartTag rect grammar that is unique to it, as well as only the added productions in the StartTag svg and ElementContent svg grammars. For VOCA vocabulary tables, you simply delete the values 100 and 250 from the height and width partitions, not the height and width partitions in their entirety because there are values related to the General sub-context for each of these partitions. .

Une fois tous les sous-contextes statiques concernés supprimés, ici seulement le sous-contexte Image SC2 supprimé, on dispose, dans le contexte de codage, du sous-contexte Général SC1 (similaire à la figure 2b) ainsi que du sous-contexte dynamique 16. On supprime le sous-contexte dynamique de la même manière que l'on a supprimé le sous-contexte Image. On ajoute alors le sous-contexte SC3 correspondant au profil Animation 203 de manière similaire à l'ajout des sous-contextes Général et Image tel que décrit précédemment. A ce stade, on dispose du contexte de codage 12 pour procéder ensuite au décodage du fichier cible. Ainsi, grâce à l'invention, plutôt que de reconstruire tout le contexte de codage 12, on a donc pu conserver les éléments qui existaient déjà et éviter de traiter une nouvelle fois des données déjà traitées (ici le profil Général 201). L'invention permet ainsi un gain en termes de temps de configuration du processeur. On décrit maintenant de façon générale un exemple d'étapes de l'invention, en référence aux figures 3 à 6. La figure 3 présente les étapes générales. On débute, à l'étape E100, par la réception, par un processeur EXI, d'une requête pour le traitement de données. Ce traitement peut consister à encoder des données XML au format EXI, ou bien à décoder des données encodées dans le format EXI. Les données considérées peuvent être de deux sortes : soit un document, soit un fragment de document (typiquement, un élément XML et son contenu, au sein d'un document, notamment un élément auto-contenu). A l'étape E110, on détermine le type des données à traiter. Once all the static sub-contexts concerned have been removed, here only the subframe Image SC2 deleted, in the coding context, the general sub-context SC1 (similar to FIG. 2b) and the dynamic sub-context are available. 16. We delete the dynamic sub-context in the same way as we removed the Image sub-context. The sub-context SC3 corresponding to the Animation profile 203 is then added in a manner similar to adding the sub-contexts General and Image as described above. At this stage, the coding context 12 is available to then proceed to the decoding of the target file. Thus, thanks to the invention, rather than reconstructing the entire coding context 12, it was therefore possible to retain the elements that already existed and avoid processing once again data already processed (here the General Profile 201). The invention thus allows a gain in terms of configuration time of the processor. An example of steps of the invention will now be described generally with reference to FIGS. 3 to 6. FIG. 3 presents the general steps. In step E100, an EXI processor receives a request for data processing. This processing can consist in encoding XML data in EXI format, or in decoding data encoded in the EXI format. The data considered can be of two kinds: either a document or a document fragment (typically an XML element and its content, within a document, in particular a self-content element). In step E110, the type of the data to be processed is determined.

Dans le cas où les données à traiter sont un document, ce type peut être déterminé à partir du document, par lecture de l'en-tête du document ou en utilisant son nom par exemple. En particulier, dans le cas où le traitement à effectuer est le décodage d'un flux EXI, il se peut que l'on lise le type des données dans le champ d'identifiant de schéma de l'en-tête du flux EXI, ce champ étant destiné à indiquer le schéma utilisé pour compresser les données. Dans le cas où l'on traite un élément XML et son contenu, le type peut être le nom qualifié de l'élément. Enfin, si l'on dispose d'une interface avec le processeur EXI permettant de spécifier un document et son type (ceci peut notamment être le cas lorsqu'on encode un document et que l'on spécifie un schéma à utiliser pour l'encoder), alors le type est trivialement déterminé par transmission de cette information via l'interface. Une fois le type connu, on détermine, à l'étape E115, les profils 20 associés, desquels on déduit les sous-contextes SC/14 à considérer. In the case where the data to be processed is a document, this type can be determined from the document, by reading the header of the document or by using its name for example. In particular, in the case where the processing to be performed is the decoding of an EXI flow, it is possible that the type of the data is read in the schema identifier field of the EXI flow header, this field is intended to indicate the schema used to compress the data. In the case of processing an XML element and its contents, the type can be the qualified name of the element. Finally, if you have an interface with the EXI processor to specify a document and its type (this may be the case when you encode a document and specify a schema to use to encode it ), then the type is trivially determined by transmitting this information via the interface. Once the known type, it is determined, in step E115, the associated profiles, which are deduced sub-context SC / 14 to consider.

On en déduit également, à l'étape E120, par différence avec le contexte de codage 12 courant, les sous-contextes à supprimer et les sous- contextes à ajouter. Cette étape est notamment détaillée ci-après en référence à la figure 4. Les ensembles de sous-contextes à supprimer et à ajouter étant connus, il est alors possible de supprimer, lors de l'étape E130, les sous- contextes qui doivent l'être, puis d'ajouter, lors de l'étape E140, les sous-contextes manquants. Ces étapes de suppression et d'ajout sont décrites plus en détail après en référence, respectivement, à la figure 5 et à la figure 6. Ces opérations de suppression/ajout effectuées, le traitement des données peut avoir lieu lors de l'étape E150, notamment encodage ou décodage classique par le processeur EXI. Dans le cas où l'on traite non pas un document mais un fragment de document, il convient, une fois les données traitées, de supprimer les contextes qui ont été ajoutés, afin de revenir à la configuration du contexte de codage telle qu'elle était avant d'entrer dans le fragment. C'est le cas notamment pour les éléments auto-contenus. A moins que le fragment suivant appelle une nouvelle configuration du processeur EXI, laquelle configuration pouvant être réalisée conformément à l'invention. On peut ainsi poursuivre le traitement de la suite du fragment. It is also deduced, in step E120, by difference with the current coding context 12, the subcontexts to be deleted and the subcontexts to be added. This step is in particular detailed below with reference to FIG. 4. Since the sets of subcontexts to be deleted and added are known, it is then possible to delete, in step E130, the sub-contexts which must to be, then to add, during step E140, the missing sub-contexts. These deletion and addition steps are described in more detail with reference, respectively, to FIG. 5 and FIG. 6. These deletion / addition operations carried out, the data processing can take place during step E150. , in particular conventional encoding or decoding by the EXI processor. In the case of not treating a document but a document fragment, once the data has been processed, it is necessary to delete the contexts that have been added, in order to return to the configuration of the coding context as it was before entering the fragment. This is particularly the case for self-contained elements. Unless the following fragment calls for a new configuration of the EXI processor, which configuration can be performed in accordance with the invention. It is thus possible to continue the treatment of the sequence of the fragment.

Le traitement prend alors fin à l'étape E160. En référence à la figure 4, on décrit maintenant la détermination des sous-contextes à considérer pour suppression ou ajout. On commence, à l'étape E200, par obtenir l'ensemble ER des sous-contextes statiques 14 requis pour le traitement souhaité. Cet ensemble est connu à partir des profils 20 associés au type de données, déterminés à l'étape E115 de la figure 1. On poursuit à l'étape E210 par l'obtention de l'ensemble EC des sous-contextes statiques courants (ceux qui sont déjà dans le contexte de codage 12 courant). Cet ensemble peut se lire directement de la liste 18 conservée en mémoire 10 du processeur EXI. The treatment then ends at step E160. With reference to FIG. 4, the determination of the subcontexts to be considered for deletion or addition is now described. In step E200, we begin by obtaining the set ER of the static subcontexts 14 required for the desired processing. This set is known from the profiles associated with the data type, determined in step E115 of FIG. 1. The step E210 is continued by obtaining the set EC of the current static subcontexts (those which are already in the current 12 coding context). This set can be read directly from the list 18 stored in memory 10 of the EXI processor.

A l'étape E220, on construit alors l'ensemble des sous-contextes à supprimer, constitué des sous-contextes de EC privés des sous-contextes appartenant aussi à ER. De même, à l'étape E230, on construit l'ensemble des sous- contextes à ajouter, constitués des sous-contextes de ER privés des sous- contextes appartenant aussi à EC. A la suite de ces deux étapes E220 et E230, les listes de sous-contextes à supprimer et à ajouter contiennent uniquement des sous-contextes statiques 14. In step E220, we then build the set of sub-contexts to be deleted, consisting of sub-contexts of EC deprived of sub-contexts also belonging to ER. Likewise, in step E230, the set of subcontexts to be added is constructed, consisting of the subcontexts of RE deprived of the subcontexts also belonging to EC. Following these two steps E220 and E230, the lists of subcontexts to be deleted and added contain only static subcontexts 14.

Il reste à déterminer ce qu'il convient de faire du ou des sous-contextes dynamiques 16. Pour cela, on évalue à l'étape E240 si les données à traiter sont un document. Dans l'affirmative (sortie OUI de l'étape E240), les sous-contextes dynamiques 16 ne sont plus nécessaires puisque l'on va décoder un autre document. A l'étape E250, on les ajoute donc à la liste des sous-contextes à supprimer. En revanche, si les données à traiter ne sont pas un document (sortie NON de l'étape E240), on détermine, à l'étape E260, s'il s'agit d'un élément auto-contenu. En effet, dans le cas d'un élément auto-contenu, il faut traiter les données indépendamment des informations de contexte apprises dynamiquement ; de plus, les informations de contexte apprises à l'intérieur de l'élément auto-contenu ne doivent pas être prises en compte une fois la fin de cet élément atteinte. Dans l'affirmative de l'étape E260, on procède donc à l'ajout d'un nouveau sous-contexte dynamique 16 à l'ensemble des sous-contextes à ajouter (étape E270), puis l'on ajoute les sous-contextes dynamiques courants à l'ensemble des sous-contextes à supprimer (étape 250). Bien sûr les sous-contextes à supprimer ne sont pas à supprimer dans l'absolu, mais à supprimer du contexte de codage 12 du processeur. C'est notamment le cas pour les sous-contextes dynamiques, qui dans le cas d'un élément auto-contenu seront ajoutés à la liste des sous-contextes à ajouter une fois la fin de l'élément atteinte. Comme expliqué plus haut, dans le cas d'un élément auto-contenu, les sous-contextes ajoutés sont supprimés lorsque l'on arrive à la fin du contenu de cet élément ; on rétablit aussi alors les sous-contextes qui avaient été supprimés à l'entrée dans cet élément. On restaure, de la sorte, le contexte de codage 12 pour traiter la suite du document. It remains to determine what should be done dynamic sub-context or 16. For this, it is evaluated in step E240 if the data to be treated are a document. If so (YES output of step E240), the dynamic subcontexts 16 are no longer necessary since another document will be decoded. In step E250, they are therefore added to the list of sub-contexts to be deleted. On the other hand, if the data to be processed are not a document (NO output of step E240), it is determined in step E260 whether it is a self-contained element. Indeed, in the case of a self-contained element, the data must be processed independently of the dynamically learned context information; furthermore, the context information learned inside the self-contained element should not be taken into account once the end of this element has been reached. In the affirmative of step E260, a new dynamic sub-context 16 is then added to all the sub-contexts to be added (step E270), then the subcontexts are added. current dynamics to all sub-contexts to be deleted (step 250). Of course, the sub-contexts to be deleted are not to be deleted in absolute terms, but to delete from the coding context 12 of the processor. This is particularly the case for dynamic sub-contexts, which in the case of a self-contained element will be added to the list of sub-contexts to be added once the end of the element has been reached. As explained above, in the case of a self-contained element, the added subcontexts are deleted when the end of the content of this element is reached; Subcontexts that were deleted on entering this element are also restored. In this way, the coding context 12 is restored to process the remainder of the document.

Suite à l'étape E250, ou bien dans la négative de l'étape E260, le traitement prend fin. On décrit maintenant l'étape de suppression E130 en référence à la figure 5. On rappelle que cette suppression ne signifie pas nécessairement qu'on efface entièrement les sous-contextes, mais signifie qu'on les ôte du contexte de codage 12. On peut ainsi les enregistrer dans une autre partie de la mémoire 10 du processeur, ou tout simplement les dé-référencer du contexte 12 courant. La figure 1 illustre ces sous-contextes "désactivés" 26 comprenant les grammaires et le vocabulaire définis par ce sous-contexte. Ainsi, si l'on doit réutiliser ces sous-contextes ultérieurement, on évite de relire les profils 20 à partir desquels ils ont été construits la première fois, et on ne fait que lire en local ces sous-contextes déjà prétraités. On réalise ainsi un gain de temps et on prévoit davantage de mémoire 10 pour le stockage correspondant. Afin de limiter le taille de mémoire supplémentaire, on conserve un ensemble de M sous-contextes au maximum (M étant par exemple défini en fonction de contraintes de mémoire), et si l'on atteint cette limite, on élimine le sous-contexte le moins fréquemment utilisé, ou bien celui dont la dernière utilisation remonte le plus loin dans le temps. Signalons aussi que dans le cas où le fait de ne pas supprimer un sous-contexte de codage n'a pas d'impact sur le flux encodé ou décodé (autrement dit, si la suppression du contexte est possible mais pas nécessaire), au lieu de supprimer ce sous-contexte, on peut simplement le marquer comme facultatif et le supprimer uniquement si l'on atteint une certaine limite de mémoire. Ce peut-être notamment le cas lorsque le sous-contexte de codage "à supprimer" se rapporte à des éléments non concernés par les sous-contextes de codage "actifs" pour le codage/décodage courant (par exemple des grammaires totalement distinctes). Le processus de suppression début à l'étape E300 par l'obtention des sous-contextes à supprimer, déterminés lors de l'étape E120 (résultat du processus de la figure 4). A l'étape E310, on vérifie s'il reste un sous-contexte SC à supprimer non traité. Dans l'affirmative, on obtient, à l'étape E320, la liste 18 des grammaires et des entrées (partitions) de tables de vocabulaire liés au sous- contexte SC (liste qui peut être établies à l'aide des références 22 et 24 lorsque la liste 18 n'est pas directement envisagée). Ces listes 18 étant construites (étapes E451, E452, E471 et E472 ci-dessous) lors de l'ajout de chaque sous-contexte au contexte de codage, aucun calcul n'est nécessaire à l'obtention de ces listes. Following step E250, or in the negative of step E260, the processing ends. The deletion step E130 is now described with reference to FIG. 5. It is recalled that this deletion does not necessarily mean that the subcontexts are completely erased, but means that they are removed from the coding context 12. thus save them in another part of the memory 10 of the processor, or simply de-reference the current context 12. Figure 1 illustrates these "disabled" sub-contexts 26 including the grammars and vocabulary defined by this sub-context. Thus, if we must reuse these subcontexts later, we avoid rereading the profiles 20 from which they were built the first time, and we only read locally these sub-contexts already pretreated. This saves time and provides more memory 10 for the corresponding storage. In order to limit the size of additional memory, a set of M subcontexts is kept to a maximum (M being for example defined according to memory constraints), and if this limit is reached, the sub-context is eliminated. less frequently used, or one whose last use goes back further in time. Note also that in the case where the fact of not deleting a coding sub-context has no impact on the encoded or decoded stream (in other words, if the deletion of the context is possible but not necessary), instead to delete this sub-context, one can simply mark it as optional and delete it only if one reaches a certain limit of memory. This may be particularly the case when the coding sub-context "to be deleted" refers to elements not concerned with the "active" coding sub-contexts for the current coding / decoding (for example totally different grammars). The deletion process starts at step E300 by obtaining the subcontexts to be deleted, determined in step E120 (result of the process of FIG. 4). In step E310, it is checked whether there remains a subcontext SC to delete untreated. If so, the list 18 of grammars and entries (partitions) of vocabulary tables related to the sub-context SC (list which can be established using references 22 and 24) is obtained in step E320. when list 18 is not directly considered). Since these lists 18 are constructed (steps E451, E452, E471 and E472 below) when adding each sub-context to the coding context, no calculation is necessary to obtain these lists.

A l'étape E330, on détermine alors s'il reste une grammaire GRAM ainsi listée non traitée. Dans l'affirmative, on détermine, à l'étape E340, si GRAM est liée uniquement à SC. Si oui, alors on supprime la grammaire GRAM à l'étape E341. Sinon, on supprime uniquement les productions de GRAM liées à SC, lors de l'étape E342. Suite aux étapes E341 et E342, on retourne à l'étape E330 pour évaluer s'il reste une grammaire GRAM listée non traitée parmi les grammaires liées au sous-contexte SC. Dans la négative de l'étape E330, on passe au traitement du vocabulaire, à l'étape E350, où l'on détermine s'il reste une partition P listée non traitée. Si c'est le cas, on vérifie à l'étape E360 si P est liée uniquement à SC. Si oui, on peut supprimer la partition P lors de l'étape E361. Sinon, on supprime uniquement les valeurs de P qui sont liées à SC lors de l'étape E362. In step E330, it is then determined if there remains a GRAM grammar thus listed untreated. If so, it is determined in step E340 whether GRAM is bound only to SC. If so, then the grammar GRAM is deleted in step E341. Otherwise, only SC-related GRAM productions are deleted in step E342. Following steps E341 and E342, we return to step E330 to evaluate whether there remains a grammar GRAM listed untreated among the grammars linked to the sub-context SC. In the negative of step E330, we proceed to the processing of the vocabulary, in step E350, where it is determined whether there remains a partition P listed untreated. If this is the case, it is verified in step E360 if P is linked only to SC. If so, we can delete the partition P in step E361. Otherwise, only the values of P which are related to SC are deleted in step E362.

Suite aux étapes E361 et E362, on retourne à l'étape E350 afin de déterminer s'il reste une partition P listée à traiter. Following steps E361 and E362, step E350 is returned to determine if there remains a partition P to be processed.

Dans la négative, on passe à l'étape E370 où l'on supprime le vocabulaire hors partition, c'est-à-dire le vocabulaire qui appartient à des listes de valeurs (par exemple la liste des valeurs globales). On retourne ensuite à l'étape E310, où l'on détermine s'il reste un sous-contexte à supprimer non traité. Quand tous les sous-contextes à supprimer ont été traités, le traitement prend fin à l'étape E390. On décrit maintenant l'étape d'ajout E140 en référence à la figure 6. A l'étape E400, on obtient l'ensemble des sous-contextes courants (connu du processeur) et de l'ensemble des sous-contextes à ajouter (déterminé à l'étape E120). On poursuit à l'étape E410, en ordonnant les sous-contextes obtenus à l'étape E400 comme expliqué précédemment. A l'étape E420, on évalue s'il reste un sous-contexte SC à ajouter. Dans l'affirmative, on obtient, à l'étape E430, les grammaires GRAM et les tables de vocabulaire VOCA définies dans le sous-contexte SC à ajouter. Pour obtenir ces informations, on envisage plusieurs alternatives. On peut lire le profil 20 décrivant le sous-contexte SC (un schéma XML par exemple), et construire les grammaires et les partitions qui en découlent. If not, proceed to step E370 where the off-partition vocabulary is deleted, that is, the vocabulary that belongs to lists of values (for example the list of global values). We then return to step E310, where it is determined whether there remains a sub-context to be removed untreated. When all sub-contexts to be deleted have been processed, processing ends at step E390. The addition step E140 is now described with reference to FIG. 6. At step E400, the set of current subcontexts (known to the processor) and all the subcontexts to be added ( determined in step E120). We continue at step E410, ordering the subcontexts obtained in step E400 as explained above. In step E420, it is evaluated whether there remains a sub-context SC to be added. If so, at step E430, the GRAM grammars and VOCA vocabulary tables defined in the sub-context SC to be added are obtained. To obtain this information, several alternatives are considered. One can read the profile 20 describing the sub-context SC (an XML schema for example), and build the grammars and the partitions which result from it.

Dans le cas où l'on conserve les sous-contextes "inactifs" en mémoire 26 du processeur, on vérifie si le sous-contexte SC recherché appartient aux sous-contextes conservés. Si ce n'est pas le cas, on lit le profil 20 correspondant pour générer grammaires et partitions correspondantes. Si c'est le cas, on récupère les grammaires et partitions correspondantes. On procède alors à l'ajout du sous-contexte SC au contexte de codage 12. Pour cela, on évalue, à l'étape E440, s'il reste une grammaire GRAM non traitée parmi les grammaires définies pour SC. Si c'est le cas (sortie OUI de l'étape E440), on détermine, à l'étape E450, si une telle grammaire existe déjà dans le contexte de codage du processeur, c'est-à-dire s'il existe une grammaire GRAM' décrivant le même type d'élément que GRAM. Si oui, alors il ne faut pas créer GRAM mais ajouter (étape E451) les productions de GRAM, propres au sous-contexte SC, à la grammaire GRAM', et marquer chaque production ajoutée comme liée à SC. En revanche, si une telle grammaire GRAM' n'existe pas, alors on ajoute (étape E452) GRAM au contexte de codage 12. Dans les deux cas, on marque la grammaire traitée (GRAM' dans le premier cas, GRAM dans le second) comme liée au sous-contexte SC. A l'issue des étapes E451 et E452, on retourne à l'étape E440 pour évaluer s'il reste encore une grammaire à ajouter non traitée. Dans la négative de l'étape E440 (sortie NON), on passe au traitement du vocabulaire et on détermine d'abord, à l'étape E460, s'il reste une 10 partition P à ajouter non traitée. Si oui, on détermine, à l'étape E470, si P est déjà définie dans le contexte de codage. Dans l'affirmative, on ajoute uniquement les valeurs propres au sous-contexte SC pour la partition P (étape E471), et l'on marque ces valeurs comme liées au sous-contexte SC. Dans la négative, on ajoute la 15 partition P avec ses valeurs au contexte de codage (étape E472). Dans les deux cas, on ajoute la partition P à la liste des partitions liées à SC. Suite aux étapes E471 et E472, on retourne à l'étape E460 pour déterminer s'il reste une partition à traiter. 20 Si ce n'est pas le cas, on passe à l'étape E480 où l'on ajoute le vocabulaire hors partition, c'est-à-dire le vocabulaire qui appartient à des listes de valeurs (par exemple le vocabulaire appartenant à la liste des valeurs globales). On retourne alors à l'étape E420, où l'on détermine s'il reste un 25 sous-contexte SC à ajouter, et dans la négative, quand tous les sous-contextes ont été ajoutés, le traitement prend fin à l'étape E490. Suivant le type de profils 20 considéré, on peut, à l'issue des ajouts, recalculer les codes de priorités des productions pour certaines grammaires ainsi que les identifiants associés aux valeurs de vocabulaire ; ainsi, si l'on a 30 par exemple une grammaire contenant cinq productions, chaque production ayant un code de priorité à un seul niveau comprise entre 1 et 5, et que l'on supprime la productions ayant pour valeur de priorité 3, cela signifie que l'on doit mettre à jour les codes de priorités des productions ayant précédemment les codes de priorité 4 et 5 avec les codes 3 et 4. A cet effet, il est avantageux de conserver une liste des grammaires mises à jour par ajout ou suppression de productions lors de la configuration du contexte de codage, ainsi qu'une liste des tables de vocabulaire (une liste des partitions dans le cas des tables qui contiennent des partitions) mises à jour par ajout ou suppression d'entrées lors de la configuration du contexte de codage. Pour les objets qui existaient avant la configuration et qui n'ont pas été modifiés, de même que pour les objets ajoutés, aucun calcul supplémentaire n'est nécessaire. In the case where the "inactive" sub-contexts are stored in the memory 26 of the processor, it is checked whether the searched sub-context SC belongs to the conserved subcontexts. If this is not the case, the corresponding profile is read to generate corresponding grammars and partitions. If this is the case, we get the corresponding grammars and partitions. The sub-context SC is then added to the coding context 12. For this, it is evaluated, in the step E440, whether there remains an untreated GRAM grammar among the grammars defined for SC. If this is the case (YES output of step E440), it is determined in step E450 whether such a grammar already exists in the processor's coding context, that is, whether it exists. a grammar GRAM 'describing the same type of element as GRAM. If so, then you should not create GRAM but add (step E451) the GRAM productions, specific to the SC sub-context, the GRAM 'grammar, and mark each added production as linked to SC. On the other hand, if such a grammar GRAM 'does not exist, then GRAM (step E452) is added to the coding context 12. In both cases, the processed grammar is marked (GRAM' in the first case, GRAM in the second). ) as linked to the sub-context SC. At the end of the steps E451 and E452, we return to the step E440 to evaluate whether there is still a grammar to add untreated. In the negative of step E440 (output NO), the processing of the vocabulary is carried out and it is first determined in step E460 whether there remains a partition P to be added that has not been processed. If so, it is determined in step E470 whether P is already defined in the coding context. If so, we add only the values specific to the sub-context SC for the partition P (step E471), and we mark these values as related to the sub-context SC. If not, the partition P with its values is added to the coding context (step E472). In both cases, the partition P is added to the list of partitions related to SC. Following steps E471 and E472, step E460 is returned to determine if there is still a partition to be processed. If not, go to step E480 where the off-partition vocabulary is added, that is, the vocabulary that belongs to lists of values (for example, the vocabulary belonging to the list of global values). We then go back to step E420, where it is determined whether there remains a sub-context SC to be added, and if not, when all subcontexts have been added, the processing ends at step E490. Depending on the type of profiles considered, it is possible, after the additions, to recalculate the production priority codes for certain grammars as well as the identifiers associated with the vocabulary values; for example, if there is for example a grammar containing five productions, each production having a single-level priority code of between 1 and 5, and deleting the productions having priority value 3, this means that priority codes must be updated for productions that previously have priority codes 4 and 5 with codes 3 and 4. For this purpose, it is advantageous to keep a list of grammars updated by adding or deleting of productions when configuring the encoding context, as well as a list of vocabulary tables (a list of partitions in the case of tables that contain partitions) updated by adding or deleting entries during the configuration of the coding context. For objects that existed before configuration and have not been modified, as well as for added objects, no additional calculation is required.

L'invention ci-dessus décrite simplifie les traitements effectués au niveau d'un processeur pour sa reconfiguration en vue du codage/décodage de nouvelles données structurées. En effet, une partie du contexte de codage peut être conservée, là où les solutions connues de l'art antérieur menaient une reconfiguration complète du processeur. The invention described above simplifies the processing performed at a processor for its reconfiguration for encoding / decoding new structured data. Indeed, a part of the coding context can be preserved, where the known solutions of the prior art led to a complete reconfiguration of the processor.

L'invention peut s'appliquer au traitement de documents successifs, pour gérer efficacement le passage du contexte de codage d'un premier document à celui d'un second document. Le cas le plus simple est entièrement conforme à la spécification EXI et permet cependant d'obtenir des gains significatifs lors du traitement des documents. Ainsi, dans le mode EXI Schéma, où l'on utilise un schéma XML pour compresser davantage les données, lorsque l'on traite le deuxième document, au lieu de réinitialiser le contexte de codage, on commence par déterminer le schéma à utiliser. En particulier, lors du décodage, cela signifie qu'on commence à lire le fichier encodé en conservant le contexte de codage résultant du décodage du document précédent, ce qui va à l'encontre du mécanisme classique selon lequel le traitement d'un nouveau document s'accompagne de la réinitialisation du contexte de codage. Si le schéma à utiliser est le même que pour le document précédent, alors on procède à la réinitialisation du contexte par suppression du sous-contexte dynamique ; si en revanche il est différent, on supprime le contexte. Un cas plus complexe et préféré concerne l'utilisation de plusieurs profils pour un seul document, cas qui peut se révéler intéressant pour des documents SVG par exemple. En effet, le modèle général des données SVG est particulièrement riche, et construire un contexte de codage à partir de ce modèle est coûteux et peu efficace en termes de compression du fait que l'on couvre un spectre extrêmement large de documents. De ce fait, il est plus avantageux de construire des profils à partir des documents que l'on souhaite encoder. Dans ce cas, chaque profil correspond à un sous-contexte de codage, et le passage d'un document à un autre va consister, en fonction des sous-contextes courants (utilisés pour le premier document) et des sous-contextes suivants (utilisés pour le deuxième document) à supprimer les sous-contextes courants qui ne figurent pas dans les suivants et à ajouter aux sous-contextes courants les suivants qui ne figurent pas dans les courants. L'invention peut également s'appliquer à la prise en compte de nouvelles informations externes pour le traitement d'un élément XML au sein d'un même document traité. Notamment, cela est le cas lorsque l'étape E100 est réalisée au cours de l'étape E150, présentées ci-dessus. Ici, contrairement au cas des documents successifs, on met à jour le contexte de codage au cours du traitement d'un document, par exemple suite au traitement d'un élément XML donné. En fonction de cet élément XML, on détermine un type, et on ajoute au contexte de codage le ou les sous-contextes correspondant à ce type. Ainsi, dans le cas où l'on traite des documents SOAP, plusieurs schémas sont généralement nécessaires : le schéma SOAP d'abord, mais aussi d'autres schémas susceptibles d'intervenir dans le corps des documents. Lorsque l'on encode l'un de ces documents, on ne sait pas a priori quels schémas vont être réellement utilisés dans le corps du document, et on encode donc dans l'en-tête une référence désignant l'ensemble des schémas. Comme le traitement de tous ces schémas dans le but de construire le contexte de codage est coûteux et peut requérir une quantité importante de mémoire, on distingue un ou plusieurs sous-contextes par schéma et on ne les ajoute au contexte de codage du processeur que lorsque l'on rencontre des données qui leur correspondent, par exemple à la détection du type d'élément concerné. The invention can be applied to the processing of successive documents, to effectively manage the passage of the coding context of a first document to that of a second document. The simplest case is fully compliant with the EXI specification and yet provides significant gains in document processing. Thus, in the EXI Schema mode, where an XML schema is used to further compress the data, when processing the second document, instead of resetting the encoding context, one begins by determining the schema to use. In particular, during decoding, this means that we begin to read the encoded file keeping the encoding context resulting from the decoding of the previous document, which goes against the conventional mechanism according to which the processing of a new document is accompanied by the reinitialization of the coding context. If the schema to be used is the same as for the previous document, then the context is reset by deleting the dynamic sub-context; if on the other hand it is different, we delete the context. A more complex and preferred case concerns the use of several profiles for a single document, which can be interesting for SVG documents for example. Indeed, the general model of SVG data is particularly rich, and building a coding context from this model is expensive and inefficient in terms of compression because it covers an extremely wide spectrum of documents. As a result, it is more advantageous to build profiles from the documents that one wishes to encode. In this case, each profile corresponds to a coding sub-context, and the transition from one document to another will consist, according to the current sub-contexts (used for the first document) and the following sub-contexts (used for the second document) to delete the current subcontexts that are not in the following and to add to the current subcontexts the following ones that are not in the currents. The invention can also be applied to the taking into account of new external information for the processing of an XML element within the same document processed. In particular, this is the case when step E100 is carried out during step E150, presented above. Here, unlike in the case of successive documents, the coding context is updated during the processing of a document, for example following the processing of a given XML element. According to this XML element, a type is determined, and the subcontexts corresponding to this type are added to the coding context. Thus, in the case where SOAP documents are processed, several schemas are generally needed: the SOAP schema first, but also other schemas that may be involved in the body of the documents. When we encode one of these documents, we do not know a priori which schemas will actually be used in the body of the document, and we therefore encode in the header a reference designating all the schemas. Since the processing of all these schemas for the purpose of constructing the coding context is expensive and may require a large amount of memory, one or more sub-contexts per schema are distinguished and added to the processor coding context only when data corresponding to them are encountered, for example the detection of the type of element concerned.

En référence à la figure 7, il est maintenant décrit à titre d'exemple une configuration matérielle particulière d'un dispositif de traitement apte à une mise en oeuvre du procédé selon l'invention. Un dispositif de traitement mettant en oeuvre l'invention est par exemple un micro-ordinateur 50, une station de travail, un assistant personnel, ou un téléphone mobile connecté à différents périphériques. Selon encore un autre mode de réalisation de l'invention, le dispositif de traitement d'information se présente sous la forme d'un appareil photographique muni d'une interface de communication pour autoriser une connexion à un réseau. Referring to Figure 7, is now described by way of example a particular hardware configuration of a processing device adapted to implement the method according to the invention. A processing device embodying the invention is for example a microcomputer 50, a workstation, a personal assistant, or a mobile phone connected to different peripherals. According to yet another embodiment of the invention, the information processing device is in the form of a camera equipped with a communication interface to allow a connection to a network.

Les périphériques reliés au dispositif de traitement d'information comprennent par exemple une caméra numérique 64, ou un scanner ou tout autre moyen d'acquisition ou de stockage d'images, reliée à une carte d'entrée/sortie (non représentée) et fournissant au dispositif de traitement d'information des données multimédia, éventuellement sous forme de documents XML. Le dispositif 50 comporte un bus de communication 51 auquel sont reliés : - une unité centrale de traitement CPU 52 se présentant par exemple sous la forme d'un microprocesseur ; - une mémoire morte 53 dans laquelle peuvent être contenus les programmes dont l'exécution permet la mise en oeuvre du procédé selon l'invention ; - une mémoire vive 54 qui, après la mise sous tension du dispositif 50, contient le code exécutable des programmes de l'invention et enregistre le contexte de codage 12 et les sous-contextes "désactivés" 26 de la figure 1 ; - un écran 55 permettant de visualiser des données et/ou de servir d'interface graphique avec l'utilisateur qui peut ainsi interagir avec les programmes de l'invention, à l'aide d'un clavier 56 ou de tout autre moyen tel qu'un dispositif de pointage, comme par exemple une souris 57 ou un crayon optique ; - un disque dur 58 ou une mémoire de stockage, telle qu'une mémoire de type compact flash, pouvant comporter les programmes de l'invention ainsi que des données utilisées ou produites lors de la mise en oeuvre de l'invention ; - un lecteur de disquette 59 optionnel, ou un autre lecteur de support de données amovible, adapté à recevoir une disquette 70 et à y lire / écrire des données traitées ou à traiter conformément à l'invention ; et - une interface de communication 60 reliée au réseau de télécommunications 61, l'interface 60 étant apte à transmettre et à recevoir des données. Dans le cas de données audio, le dispositif 50 est équipé de préférence d'une carte d'entrée/sortie (non représentée) qui est reliée à un microphone 62. Le bus de communication 51 autorise une communication et une interopérabilité entre les différents éléments inclus dans le dispositif 50 ou reliés à celui-ci. La représentation du bus 51 n'est pas limitative et, notamment, l'unité centrale 52 est susceptible de communiquer des instructions à tout élément du dispositif 50 directement ou par l'intermédiaire d'un autre élément du dispositif 50. Les disquettes 63 peuvent être remplacées par tout support d'information tel que, par exemple, un disque compact (CD-ROM) réinscriptible ou non, un disque ZIP ou une carte mémoire. D'une manière générale, un moyen de stockage d'information, lisible par un micro-ordinateur ou par un microprocesseur, intégré ou non au dispositif de traitement d'information, éventuellement amovible, est adapté à mémoriser un ou plusieurs programmes dont l'exécution permet la mise en oeuvre du procédé selon l'invention. The peripherals connected to the information processing device comprise, for example, a digital camera 64, or a scanner or any other image acquisition or storage means, connected to an input / output card (not represented) and providing the information processing device of the multimedia data, possibly in the form of XML documents. The device 50 comprises a communication bus 51 to which are connected: a central processing unit CPU 52, for example in the form of a microprocessor; a read-only memory 53 in which can be contained the programs whose execution allows the implementation of the method according to the invention; a random access memory 54 which, after powering on the device 50, contains the executable code of the programs of the invention and records the coding context 12 and the "deactivated" sub-contexts 26 of FIG. 1; a screen 55 making it possible to display data and / or to serve as a graphical interface with the user who can thus interact with the programs of the invention, using a keyboard 56 or any other means such as a pointing device, such as for example a mouse 57 or an optical pen; a hard disk 58 or a storage memory, such as a compact flash type memory, which may comprise the programs of the invention as well as data used or produced during the implementation of the invention; an optional diskette reader 59 or another removable data medium reader adapted to receive a floppy disk 70 and to read / write data processed or to be processed in accordance with the invention; and a communication interface 60 connected to the telecommunications network 61, the interface 60 being able to transmit and receive data. In the case of audio data, the device 50 is preferably equipped with an input / output card (not shown) which is connected to a microphone 62. The communication bus 51 allows communication and interoperability between the different elements. included in the device 50 or connected thereto. The representation of the bus 51 is not limiting and, in particular, the central unit 52 is able to communicate instructions to any element of the device 50 directly or via another element of the device 50. be replaced by any information medium such as, for example, a rewritable compact disc (CD-ROM) or not, a ZIP disk or a memory card. In general, an information storage means, readable by a microcomputer or by a microprocessor, integrated or not integrated with the information processing device, possibly removable, is adapted to memorize one or more programs whose execution allows the implementation of the method according to the invention.

Le code exécutable permettant au dispositif de traitement la mise en oeuvre de l'invention peut être indifféremment stocké en mémoire morte 53, sur le disque dur 58 ou sur un support numérique amovible tel que par exemple une disquette 63 comme décrite précédemment. Selon une variante, le code exécutable des programmes est reçu par l'intermédiaire du réseau de télécommunications 61, via l'interface 60, pour être stocké dans un des moyens de stockage du dispositif 50 (tel que le disque dur 58 par exemple) avant d'être exécuté. The executable code enabling the processing device to implement the invention can be indifferently stored in read-only memory 53, on hard disk 58 or on a removable digital medium such as for example a diskette 63 as described above. According to one variant, the executable code of the programs is received via the telecommunications network 61, via the interface 60, to be stored in one of the storage means of the device 50 (such as the hard disk 58 for example) before to be executed.

L'unité centrale 52 commande et dirige l'exécution des instructions ou portions de code logiciel du ou des programmes de l'invention, les instructions ou portions de code logiciel étant stockées dans l'un des moyens de stockage précités. Lors de la mise sous tension du dispositif 50, le ou les programmes qui sont stockés dans une mémoire non volatile, par exemple le disque dur 58 ou la mémoire morte 53, sont transférés dans la mémoire vive 54 qui contient alors le code exécutable du ou des programmes de l'invention, ainsi que des registres pour mémoriser les variables et paramètres nécessaires à la mise en oeuvre de l'invention. The central unit 52 controls and directs the execution of the instructions or portions of software code of the program or programs of the invention, the instructions or portions of software code being stored in one of the aforementioned storage means. When the device 50 is turned on, the program or programs that are stored in a non-volatile memory, for example the hard disk 58 or the read-only memory 53, are transferred into the random access memory 54 which then contains the executable code of the or programs of the invention, as well as registers for storing the variables and parameters necessary for the implementation of the invention.

On notera également que le dispositif mettant en oeuvre l'invention ou incorporant celle-ci est réalisable aussi sous la forme d'un appareil programmé. Par exemple, un tel dispositif peut alors contenir le code du ou des programmes informatiques sous une forme figée dans un circuit intégré à application spécifique (ASIC). Note also that the device embodying the invention or incorporating it is also feasible in the form of a programmed apparatus. For example, such a device may then contain the code of the computer program or programs in a form fixed in a specific application integrated circuit (ASIC).

Le dispositif décrit ici et, particulièrement, l'unité centrale 52, sont susceptibles de mettre en oeuvre tout ou partie des traitements décrits en lien avec les figures 1 à 6, pour mettre en oeuvre le procédé objet de la présente invention et constituer le système objet de la présente invention. Les exemples qui précèdent ne sont que des modes de réalisation 20 de l'invention qui ne s'y limite pas. En particulier, on a présenté les profils 20 comme structurés autour d'un profil Général 201 commun et de profils spécialisés 202 et 203. En variante, on prévoit une hiérarchie de profils, chaque document correspondant à un profil particulier dans chaque niveau hiérarchique (par 25 exemple Général / Image / Icône pour une hiérarchie à trois niveaux). Selon une autre variante, on prévoit des profils décrivant la structure, et d'autres décrivant le contenu Enfin, on peut prévoir des profils modulables, chaque document pouvant correspondre à différents modules, indépendamment de toute 30 hiérarchie. On peut aussi séparer la description de documents XML (obtenus à partir d'un schéma XML ou d'une autre source) en différentes parties, chaque partie représentant un sous-contexte SC. Ces différentes parties rassemblent des éléments/attributs très généralement utilisés conjointement. Cette séparation permet par exemple de ne charger qu'une partie du schéma/profil pour le codage/décodage d'un document et non l'ensemble du schéma. Dans ce cas, on n'effectue pas la décomposition en profils selon un critère de compression mais selon un critère de minimisation de la consommation mémoire et de temps de traitement nécessaires à l'utilisation d'un mode EXI avec information externe. On peut citer deux exemples de cas où l'on divise la description en différentes parties. Premièrement, celui où l'on doit supporter un modèle (par exemple un schéma, ou un ensemble de schémas), mais où l'on sait que dans une majorité de cas, on se restreindra à une sous-partie du modèle : alors, il est intéressant de créer un profil dédié à cette sous-partie du modèle, ce profil définissant un sous-contexte, et un ou plusieurs autres profils définissant autant de sous-contextes complémentaires pour décrire le reste du modèle. Deuxièmement, dans le cas où l'on doit supporter un modèle et où l'on dispose d'un ensemble de documents instanciant ce modèle, on peut chercher à restreindre le modèle à partir des instances : ainsi, on peut déterminer des parties du modèle plus fréquentes que d'autres, et dans ce cas les définir dans un profil dédié. Dans les deux cas, la division du modèle de départ n'affecte pas le flux EXI, l'ensemble du modèle restant supporté. Soulignons enfin, pour conclure sur cet aspect, que la division du modèle en profils peut-être améliorée grâce aux traitements successifs des documents instanciant le modèle par un algorithme d'apprentissage. The device described here and, particularly, the central unit 52, are able to implement all or part of the processes described in connection with Figures 1 to 6, to implement the method of the present invention and constitute the system object of the present invention. The foregoing examples are only embodiments of the invention which are not limited thereto. In particular, the profiles 20 have been presented as structured around a common General 201 profile and specialized profiles 202 and 203. As a variant, a hierarchy of profiles is provided, each document corresponding to a particular profile in each hierarchical level (for example: 25 example General / Image / Icon for a three-level hierarchy). According to another variant, there are provided profiles describing the structure, and others describing the content Finally, it is possible to provide modular profiles, each document being able to correspond to different modules, independently of any hierarchy. It is also possible to separate the description of XML documents (obtained from an XML schema or from another source) into different parts, each part representing a sub-context SC. These different parts bring together elements / attributes very commonly used together. This separation makes it possible for example to load only part of the schema / profile for the coding / decoding of a document and not the whole schema. In this case, the decomposition into profiles according to a compression criterion is not carried out but according to a criterion of minimization of the memory consumption and processing time necessary for the use of an EXI mode with external information. There are two examples of cases where the description is divided into different parts. First, the one where we have to support a model (for example a schema, or a set of schemas), but where we know that in the majority of cases, we will restrict ourselves to a sub-part of the model: then, it is interesting to create a profile dedicated to this sub-part of the model, this profile defining a sub-context, and one or more other profiles defining as many complementary sub-contexts to describe the rest of the model. Secondly, in the case where we have to support a model and where we have a set of documents instantiating this model, we can try to restrict the model from the instances: thus, we can determine parts of the model. more frequent than others, and in this case define them in a dedicated profile. In both cases, the division of the starting model does not affect the EXI flow, the whole model remaining supported. Finally, to conclude on this aspect, the division of the model into profiles can be improved thanks to the successive processing of the documents instantiating the model by a learning algorithm.

Suivant le type de profils choisi, les contraintes imposées à l'invention sont différentes. En effet, plus les profils sont indépendants les uns des autres, plus il est facile d'ajouter ou de supprimer un sous-contexte ; en revanche, si les profils sont très liés (si par exemple plusieurs profils donnent différentes définitions d'un élément XML), alors les grammaires ou les tables de vocabulaires résultantes auront de fortes chances de contenir des informations liées à différents sous-contextes, et l'ajout ou la suppression d'un sous-contexte demandera donc davantage de calculs. Depending on the type of profiles chosen, the constraints imposed on the invention are different. Indeed, the more the profiles are independent of each other, the easier it is to add or delete a sub-context; on the other hand, if the profiles are very related (if, for example, several profiles give different definitions of an XML element), then the resulting grammars or vocabulary tables are likely to contain information related to different sub-contexts, and adding or removing a sub-context will require more calculations.

Par conséquent, si l'invention ne requiert pas l'utilisation d'un type de profil particulier, il est cependant préférable d'utiliser des profils disjoints (c'est-à-dire concernant des grammaires et des partitions différentes) si l'on souhaite obtenir les meilleurs gains d'efficacité. Therefore, if the invention does not require the use of a particular type of profile, it is however preferable to use disjoint profiles (i.e. concerning different grammars and partitions) if the we want to obtain the best efficiency gains.

On a vu également plus haut qu'il est important de mémoriser les liens entre sous-contexte et production/entrée de partition. Dans ce contexte, un cas particulier intéressant est celui où l'on construit les profils 20 en s'assurant que chaque valeur d'une partition ne peut appartenir qu'à un seul sous-contexte. Concrètement, cela signifie par exemple que l'attribut width avec la valeur 100 (voir figures 2) n'apparaît pas dans deux profils. Dans ce cas, en ordonnant les sous-contextes comme évoqué ci-dessus, il suffit de connaître le nombre d'entrées pour chaque sous-contexte afin de déterminer entièrement les entrées liées à un sous-contexte donné. En effet, si l'on nomme Ni le nombre de valeurs liées au i-ème sous-contexte pour une partition donnée, alors les valeurs pour le premier sous-contexte sont les NO premières, celles pour le deuxième sous-contexte sont les N1 suivantes, etc. Par ailleurs, pour vérifier si une grammaire ou une partition est liée à un ou plusieurs sous-contextes (information qui permet de savoir si l'on peut traiter la grammaire ou la partition dans son ensemble ou bien si l'on doit travailler au niveau des productions et des entrées û étapes E340, E360), il peut être intéressant de conserver, pour chaque grammaire et chaque partition, un compteur du nombre de sous-contextes auxquelles celle-ci est liée. De cette manière, quand on traite un sous-contexte à partir des listes de référence, on peut déterminer aisément s'il faut considérer d'autres sous-contextes (compteur supérieur à 1) ou pas (compteur égal à 1).30 We have also seen above that it is important to memorize the links between sub-context and production / partition entry. In this context, an interesting particular case is that where the profiles are constructed by ensuring that each value of a partition can belong to only one sub-context. In concrete terms, this means that the width attribute with the value 100 (see figure 2) does not appear in two profiles. In this case, by ordering the sub-contexts as mentioned above, it is sufficient to know the number of entries for each sub-context to fully determine the entries related to a given sub-context. Indeed, if one names Ni the number of values related to the i-th sub-context for a given partition, then the values for the first sub-context are the first NO, those for the second sub-context are the N1 following, etc. Moreover, to check if a grammar or a partition is linked to one or more sub-contexts (information which makes it possible to know if one can treat the grammar or the partition as a whole or if one must work at the level E340, E360), it may be interesting to keep, for each grammar and each partition, a counter of the number of subcontexts to which it is linked. In this way, when we treat a sub-context from the reference lists, we can easily determine whether to consider other sub-contexts (counter greater than 1) or not (counter equal to 1).

Claims (21)

REVENDICATIONS1. Procédé de configuration d'un processeur (1) de codage/décodage pour le codage/décodage de nouvelles données structurées, ledit processeur comprenant en mémoire (10) un contexte de codage/décodage (12) relatif au traitement (E105) d'anciennes données structurées, caractérisé en ce que le contexte est composé d'une pluralité de sous-contextes (14, 16, SC), et le procédé comprend les étapes suivantes : - la détermination (E120) d'un ensemble de sous-contextes 10 définissant un contexte de codage/décodage (12) desdites nouvelles données structurées ; - l'identification et la suppression (E130, E220), dans le contexte de codage/décodage (12) en mémoire (10) du processeur (1), d'au moins un sous-contexte (14, SC) non compris dans l'ensemble déterminé de sorte à conserver 15 les sous-contextes appartenant audit ensemble. REVENDICATIONS1. Method for configuring a coding / decoding processor (1) for encoding / decoding new structured data, said processor comprising in memory (10) a coding / decoding context (12) relating to the processing (E105) of old structured data, characterized in that the context is composed of a plurality of sub-contexts (14, 16, SC), and the method comprises the following steps: - determining (E120) a set of sub-contexts 10 defining a coding / decoding context (12) of said new structured data; the identification and deletion (E130, E220), in the context of coding / decoding (12) in memory (10) of the processor (1), of at least one sub-context (14, SC) not included in the set determined so as to retain the sub-contexts belonging to said set. 2. Procédé selon la revendication 1, dans lequel ledit contexte de codage/décodage (12) comprend un sous-contexte dynamique (16) comprenant des informations de codage/décodage apprises par le processeur (1) pendant le traitement (E150) desdites anciennes données, et au moins un sous-contexte 20 statique (14;) comprenant des informations de codage/décodage créées par le processeur (1) à partir de données de configuration externes (20;). The method according to claim 1, wherein said coding / decoding context (12) comprises a dynamic sub-context (16) comprising coding / decoding information learned by the processor (1) during the processing (E150) of said old data, and at least one static sub-context (14;) comprising encoding / decoding information created by the processor (1) from external configuration data (20;). 3. Procédé selon la revendication précédente, dans lequel ladite suppression (E130) comprend celle du sous-contexte dynamique (16). 3. Method according to the preceding claim, wherein said deletion (E130) comprises that of the dynamic sub-context (16). 4. Procédé selon l'une des revendications précédentes, dans 25 lequel ladite suppression (E130) dans le contexte comprend l'enregistrement en mémoire (26) dudit au moins un sous-contexte supprimé. 4. The method according to one of the preceding claims, wherein said deletion (E130) in the context comprises the storage in memory (26) of said at least one deleted sub-context. 5. Procédé selon la revendication précédente, dans lequel la mémoire (26) stockant le sous-contexte supprimé a une taille limitée, et on supprime le sous-contexte en mémoire le moins utilisé lorsque la taille mémoire 30 encore disponible est inférieure à la taille du sous-contexte supprimé à enregistrer. 5. Method according to the preceding claim, wherein the memory (26) storing the deleted sub-context has a limited size, and the least used memory sub-context is deleted when the available memory size is less than the size. the deleted subcontext to save. 6. Procédé selon l'une des revendications précédentes, comprenant le chargement (E140) d'un sous-contexte (14, SC) non présent dans ledit contexte (12) en mémoire (10) du processeur (1) et appartenant audit ensemble déterminé. 6. Method according to one of the preceding claims, comprising the loading (E140) of a sub-context (14, SC) not present in said context (12) in memory (10) of the processor (1) and belonging to said set determined. 7. Procédé selon la revendication 6, dans lequel ledit chargement (E140) comprend la copie dudit sous-contexte depuis une mémoire (26) stockant des sous-contextes inactifs vers ledit contexte (12) en mémoire (10) du processeur. The method of claim 6, wherein said loading (E140) comprises copying said sub-context from a memory (26) storing inactive subcontexts to said processor memory context (12). 8. Procédé selon la revendication 6 ou 7, dans lequel, lors du chargement (E140), on indique (E451, E452, E471, E472), pour chaque information d'un sous-contexte chargé dans ledit contexte (12) en mémoire (10) du processeur, le sous-contexte (14, SC) auquel elle est attachée. The method according to claim 6 or 7, wherein, during the loading (E140), one indicates (E451, E452, E471, E472), for each information of a sub-context loaded in said context (12) in memory (10) of the processor, the sub-context (14, SC) to which it is attached. 9. Procédé selon la revendication précédente, dans lequel le contexte (12) est formé de grammaires (GRAM) associant des productions à des valeurs de codage, et de dictionnaires (VOCA) dont les entrées associent des chaînes de caractères à des identifiants de codage, et ladite indication (22, 24) de sous-contexte (14, SC) est renseignée au niveau des productions et des entrées des dictionnaires. 9. Method according to the preceding claim, wherein the context (12) is formed of grammars (GRAM) associating productions with coding values, and of dictionaries (VOCA) whose entries associate strings of characters with coding identifiers. , and said sub-context indication (22, 24) (14, SC) is filled in at the level of the productions and the entries of the dictionaries. 10. Procédé selon la revendication 8 ou 9, dans lequel le contexte (12) est formé de grammaires (GRAM) et de dictionnaires (VOCA) présentant des partitions (P), et on associe, à chaque grammaire (GRAM) et partition (P), un compteur du nombre de sous-contextes (14, SC) qui lui sont liés. The method according to claim 8 or 9, wherein the context (12) consists of grammars (GRAM) and dictionaries (VOCA) having partitions (P), and each grammar (GRAM) and partition ( P), a counter of the number of subcontexts (14, SC) linked to it. 11. Procédé selon l'une des revendications 6 à 10, dans lequel les anciennes et nouvelles données structurées sont chacune un document structuré différent. 11. The method according to one of claims 6 to 10, wherein the old and new structured data are each a different structured document. 12. Procédé selon l'une des revendications 6 à 11, dans lequel les anciennes et nouvelles données structurées appartiennent à un même document. 12. Method according to one of claims 6 to 11, wherein the old and new structured data belong to the same document. 13. Procédé selon la revendication précédente, dans lequel les nouvelles données structurées comprennent un élément auto-contenu au sens de la norme EXI. 13. The method according to the preceding claim, wherein the new structured data comprise a self-contained element in the sense of the EXI standard. 14. Procédé selon l'une des revendications 6 à 13, dans lequel ledit chargement (E140) d'un sous-contexte (14i, SC;) est réalisé à partir d'un fichier (20;) de configuration de type Schéma XML. 14. Method according to one of claims 6 to 13, wherein said loading (E140) of a sub-context (14i, SC;) is performed from a file (20;) of configuration type XML Schema . 15. Procédé selon l'une des revendications précédentes, dans lequel ladite détermination (E120) comprend la détermination (E110) d'un type représentatif desdites nouvelles données structurées, et ledit ensemble des sous-contextes (14, SC) est déterminé (E120) à partir dudit type. The method according to one of the preceding claims, wherein said determining (E120) comprises determining (E110) a representative type of said new structured data, and said set of subcontexts (14, SC) is determined (E120). ) from said type. 16. Procédé selon la revendication précédente, dans lequel ledit type est déterminé à partir desdites nouvelles données. 16. The method according to the preceding claim, wherein said type is determined from said new data. 17. Procédé selon l'une des revendications précédentes, dans lequel les sous-contextes (14, SC) sont disjoints deux à deux. 17. Method according to one of the preceding claims, wherein the subcontexts (14, SC) are disjoint two by two. 18. Procédé selon l'une des revendications précédentes, comprenant l'ordonnancement des sous-contextes (14, SC) conservés et chargés. 18. Method according to one of the preceding claims, comprising the scheduling of the subcontexts (14, SC) preserved and loaded. 19. Dispositif de configuration d'un processeur (1) de codage/décodage pour le codage de nouvelles données structurées, ledit processeur comprenant en mémoire (10) un contexte de codage/décodage (12) relatif au traitement (E150) d'anciennes données structurées, caractérisé en ce que le contexte est composé d'une pluralité de sous-contextes (14, 16, SC), et le dispositif comprend : - un moyen de détermination (E120) d'un ensemble de sous-contextes définissant un contexte de codage/décodage (12) desdites nouvelles données structurées ; - un moyen d'identification et de suppression (E130, E220), dans le contexte de codage/décodage (12) en mémoire (10) du processeur (1), d'au moins un sous-contexte (14, SC) non compris dans l'ensemble déterminé de sorte à conserver les sous-contextes appartenant audit ensemble. 19. Device for configuring a coding / decoding processor (1) for coding new structured data, said processor comprising in memory (10) a coding / decoding context (12) relating to the processing (E150) of old structured data, characterized in that the context is composed of a plurality of sub-contexts (14, 16, SC), and the device comprises: - a means for determining (E120) a set of sub-contexts defining a coding / decoding context (12) of said new structured data; an identification and deletion means (E130, E220), in the context of coding / decoding (12) in memory (10) of the processor (1), of at least one sub-context (14, SC) not included in the set determined so as to retain the sub-contexts belonging to said set. 20. Moyen de stockage d'informations, éventuellement totalement ou partiellement amovible, lisible par un système informatique, comprenant des instructions pour un programme informatique adapté à mettre en oeuvre le procédé conforme à l'une quelconque des revendications 1 à 18, lorsque le programme est chargé et exécuté par le système informatique. 20. Information storage medium, possibly totally or partially removable, readable by a computer system, comprising instructions for a computer program adapted to implement the method according to any one of claims 1 to 18, when the program is loaded and executed by the computer system. 21. Produit programme d'ordinateur lisible par un microprocesseur, comprenant des portions de code logiciel adaptées à mettre en oeuvre le procédé selon l'une quelconque des revendications 1 à 18, lorsqu'il est chargé et exécuté par le microprocesseur.5 A microprocessor-readable computer program product comprising portions of software code adapted to implement the method of any of claims 1 to 18 when loaded and executed by the microprocessor.
FR0950163A 2009-01-13 2009-01-13 METHOD AND SYSTEM FOR CONFIGURING AN EXI PROCESSOR Expired - Fee Related FR2941071B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
FR0950163A FR2941071B1 (en) 2009-01-13 2009-01-13 METHOD AND SYSTEM FOR CONFIGURING AN EXI PROCESSOR

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR0950163A FR2941071B1 (en) 2009-01-13 2009-01-13 METHOD AND SYSTEM FOR CONFIGURING AN EXI PROCESSOR

Publications (2)

Publication Number Publication Date
FR2941071A1 true FR2941071A1 (en) 2010-07-16
FR2941071B1 FR2941071B1 (en) 2014-11-21

Family

ID=40875156

Family Applications (1)

Application Number Title Priority Date Filing Date
FR0950163A Expired - Fee Related FR2941071B1 (en) 2009-01-13 2009-01-13 METHOD AND SYSTEM FOR CONFIGURING AN EXI PROCESSOR

Country Status (1)

Country Link
FR (1) FR2941071B1 (en)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005098665A1 (en) * 2004-04-08 2005-10-20 Justsystems Corporation Apparatus for processing documents that use a mark up language
US20070055492A1 (en) * 2005-09-02 2007-03-08 Microsoft Corporation Configurable grammar templates
US20080189595A1 (en) * 2007-02-06 2008-08-07 John Edward Petri Chaining configuration sets in a content management system
FR2913275A1 (en) * 2007-03-02 2008-09-05 Canon Kk Hierarchical data coding method, involves extracting events describing obtained structural pattern, creating production with extracted events, and inserting creating production in grammar

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005098665A1 (en) * 2004-04-08 2005-10-20 Justsystems Corporation Apparatus for processing documents that use a mark up language
US20070055492A1 (en) * 2005-09-02 2007-03-08 Microsoft Corporation Configurable grammar templates
US20080189595A1 (en) * 2007-02-06 2008-08-07 John Edward Petri Chaining configuration sets in a content management system
FR2913275A1 (en) * 2007-03-02 2008-09-05 Canon Kk Hierarchical data coding method, involves extracting events describing obtained structural pattern, creating production with extracted events, and inserting creating production in grammar

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
DANIEL PEINTNER ET AL: "Efficient XML Interchange (EXI) Primer", W3C WORKING DRAFT, XX, XX, 19 December 2007 (2007-12-19), pages 1 - 35, XP002488807, Retrieved from the Internet <URL:http://www.w3.org/TR/2007/WD-exi-primer-20071219/> [retrieved on 20080717] *
JOHN SCHNEIDER ET AL: "Efficient XML Interchange (EXI) Format 1.0", W3C WORKING DRAFT, W3C, 19 December 2007 (2007-12-19), pages 1 - 91, XP002489344, Retrieved from the Internet <URL:http://www.w3.org/TR/2007/WD-exi-20071219/> [retrieved on 20080721] *

Also Published As

Publication number Publication date
FR2941071B1 (en) 2014-11-21

Similar Documents

Publication Publication Date Title
FR2939535A1 (en) PROCESSING METHOD AND SYSTEM FOR CONFIGURING AN EXI PROCESSOR
FR2926378A1 (en) METHOD AND PROCESSING DEVICE FOR ENCODING A HIERARCHISED DATA DOCUMENT
FR2936623A1 (en) METHOD FOR ENCODING A STRUCTURED AND DECODING DOCUMENT, CORRESPONDING DEVICES
FR2924244A1 (en) METHOD AND DEVICE FOR ENCODING AND DECODING INFORMATION
FR2933793A1 (en) METHODS OF ENCODING AND DECODING, BY REFERENCING, VALUES IN A STRUCTURED DOCUMENT, AND ASSOCIATED SYSTEMS.
FR2914759A1 (en) METHOD AND DEVICE FOR CODING A HIERARCHISED DOCUMENT
FR2931271A1 (en) METHOD AND DEVICE FOR CODING A STRUCTURED DOCUMENT AND METHOD AND DEVICE FOR DECODING A DOCUMENT SO CODE
FR2945363A1 (en) METHOD AND DEVICE FOR CODING A STRUCTURAL DOCUMENT
FR2929778A1 (en) METHODS AND DEVICES FOR ITERATIVE BINARY CODING AND DECODING FOR XML TYPE DOCUMENTS.
WO2002063776A2 (en) Method for compressing/decompressing a structured document
FR2907567A1 (en) METHOD AND DEVICE FOR GENERATING REFERENCE PATTERNS FROM WRITING LANGUAGE DOCUMENT AND ASSOCIATED ENCODING AND DECODING METHODS AND DEVICES.
FR2927712A1 (en) METHOD AND DEVICE FOR ACCESSING PRODUCTION OF A GRAMMAR FOR PROCESSING A HIERARCHISED DATA DOCUMENT.
FR2943441A1 (en) METHOD FOR ENCODING OR DECODING A STRUCTURED DOCUMENT USING XML SCHEME, DEVICE AND STRUCTURE THEREFOR
FR2820228A1 (en) METHOD FOR ENCODING AND DECODING A PATH IN THE TREE OF A STRUCTURED DOCUMENT
FR2930660A1 (en) METHOD FOR ACCESSING A PART OR MODIFYING A PART OF A BINARY XML DOCUMENT, ASSOCIATED DEVICES
FR2826749A1 (en) Object oriented mark-up language editing method where tags are defined by function and result of function in one language and by argument in schema language
FR2901037A1 (en) Reference structural pattern generating method for computer, involves determining reference structural pattern per group of determined primary structural patterns, where reference pattern represents patterns of group
FR2913274A1 (en) Structured document i.e. XML document, coding method, involves creating drifted pattern formed by modification of another pattern, and coding data of document for providing code, where code associates third pattern to coded data
FR2941071A1 (en) Processor i.e. Efficient XML Interchange processor, configuring method for encoding or decoding XML document in information processing device, involves suppressing sub-context that is not comprised in set of sub-contexts, in context
FR2892883A1 (en) Multimedia scene describing method for e.g. mobile telephone, involves implementing optimization information in radiocommunication terminal, where information permits selection of scene rendering algorithm
FR2954983A1 (en) Structured document e.g. portable document format document, encoding method, involves scanning tree-type data structure to encode elements to binary encoding value that is determined based on index information in data structure
FR2895813A1 (en) Electronic document e.g. mail, group arborescence building assisting method for e.g. electronic agenda, involves building sub-groups according to obtained constraints and characteristics of group documents, and forming arborescence level
FR2913275A1 (en) Hierarchical data coding method, involves extracting events describing obtained structural pattern, creating production with extracted events, and inserting creating production in grammar
FR2941803A1 (en) Processing method for transcoding coded document i.e. coded XML file, involves identifying input corresponding to coded data in decoding dictionary, and directly determining another input from former input based on input identification
EP1713243A1 (en) Method and system of automatic generation of software components for the design of voice services

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 8

ST Notification of lapse

Effective date: 20170929