FR2943441A1 - Procede de codage ou decodage d'un document structure a l'aide d'un schema xml, dispositif et structure de donnees associes - Google Patents

Procede de codage ou decodage d'un document structure a l'aide d'un schema xml, dispositif et structure de donnees associes Download PDF

Info

Publication number
FR2943441A1
FR2943441A1 FR0951719A FR0951719A FR2943441A1 FR 2943441 A1 FR2943441 A1 FR 2943441A1 FR 0951719 A FR0951719 A FR 0951719A FR 0951719 A FR0951719 A FR 0951719A FR 2943441 A1 FR2943441 A1 FR 2943441A1
Authority
FR
France
Prior art keywords
item
group
items
occurrences
possibilities
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.)
Withdrawn
Application number
FR0951719A
Other languages
English (en)
Inventor
Herve Ruellan
Franck Denoual
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 FR0951719A priority Critical patent/FR2943441A1/fr
Priority to EP10290109.7A priority patent/EP2230608B1/fr
Priority to US12/726,443 priority patent/US8972851B2/en
Publication of FR2943441A1 publication Critical patent/FR2943441A1/fr
Withdrawn legal-status Critical Current

Links

Classifications

    • 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/143Markup, e.g. Standard Generalized Markup Language [SGML] or Document Type Definition [DTD]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Document Processing Apparatus (AREA)

Abstract

La présente invention concerne un procédé et un dispositif de codage ou décodage d'un document structuré, par exemple un document XML, à partir d'un fichier descriptif de structure de type Schéma XML. Le procédé comprend une étape de configuration d'un encodeur ou décodeur incluant l'obtention de données (1) décrivant un modèle de structure de documents et leur stockage sous forme d'enregistrements, et une étape de calcul (E140, E420, E430) d'un nombre d'items (33, 36, 37), dits possibles, susceptibles de succéder, selon le modèle de structure (1), à un item dudit modèle, ledit nombre d'items possibles (33, 36, 37) étant stocké dans un enregistrement (21-29, 21'-24') associé audit item. Afin de faciliter les calculs, les enregistrements peuvent comprendre les nombres minimal (31) et maximal (32) d'occurrences de l'item définis par le modèle de structure (1).

Description

La présente invention concerne un procédé et un dispositif de codage ou décodage d'un document structuré, par exemple un document structuré de type XML (acronyme de "eXtensible Markup Language" pour langage de balisage extensible). Le format XML est une syntaxe pour définir des langages informatiques, ce qui permet de créer des langages adaptés à des utilisations différentes pouvant cependant être traités par de 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 ou des données textuelles. Un élément peut également être précisé par des attributs, chaque attribut étant défini par un nom et ayant une valeur. Les attributs sont alors 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: <1-- Commentaire--> ) et des instructions de traitement, qui peuvent préciser à une application informatique quels traitements appliquer au document XML (par exemple : <?montraitement?> ).
Dans la terminologie XML, l'ensemble des termes élément , attribut , donnée textuelle , commentaire , instruction de traitement et section d'échappement sont regroupés sous le nom générique de item . Dans un cadre plus général, l'ensemble de ces termes (formant par exemple l'élément défini entre une balise ouvrante et une balise fermante) peut être regroupé sous le nom générique de noeud . Pour traiter un document XML, celui-ci doit être lu en mémoire. Deux familles de méthodes de lecture d'un document XML existent.
La première famille de méthodes consiste à représenter l'intégralité du document XML en mémoire, sous forme d'arbre. Ces méthodes permettent un accès facile et rapide à tout noeud ou toute partie du document XML, mais nécessitent un espace mémoire important. Un exemple de ces méthodes est l'interface de programmation DOM ( Document Object Model en anglais, ou Modèle Objet de Documents en français). Une deuxième famille de méthodes consiste à représenter chaque noeud du document XML par un ou plusieurs événements. L'intégralité du document XML est alors décrite par la succession de ces événements. Ces méthodes permettent de traiter un document XML au fur et à mesure de sa lecture (mode streaming selon la terminologie anglo-saxonne). Un avantage de ces méthodes réside dans le peu d'espace mémoire qu'elles requièrent pour le traitement d'un document. Néanmoins, elles imposent une navigation dans le document uniquement dans l'ordre de lecture de celui-ci. Des exemples de ces méthodes sont les interfaces de programmation SAX ( Simple API for XML en anglais, ou Interface de programmation simple pour XML en français) et StAX ( Streaming API for XML en anglais, ou Interface de programmation au fur et à mesure pour XML en français).
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. Tout d'abord, le format XML permet en particulier de disposer de nombreux outils pour traiter les fichiers générés. Egalement, un document XML peut être édité manuellement avec un simple éditeur de texte. En outre, comme un document XML contient sa structure intégrée aux données, ce document est très lisible même sans en connaître la spécification. Néanmoins, le principal inconvénient de la syntaxe XML est d'être très prolixe. Ainsi la taille d'un document XML peut être plusieurs fois supérieure à la taille intrinsèque des données. Cette taille importante des documents XML induit aussi un temps de traitement important lors de la génération et surtout de la lecture de documents XML.
Pour pallier ces inconvénients, des mécanismes ont été mis en place dont le but est de coder le contenu du document XML sous une forme plus efficace, permettant de reconstruire facilement le document XML. Cependant, la plupart de ces mécanismes ne conservent pas l'ensemble des avantages du format XML. Il existe néanmoins de nouveaux formats qui permettent de stocker les données contenues dans un document XML. Ces différents formats sont regroupés sous l'appellation XML Binaire . Parmi ces formats, EXI ("Efficient XML lnterchange") est en cours de standardisation par le W3C (acronyme de World Wide Web Consortium , organisation produisant des standards pour le Web) et permet de coder un document XML sous une forme binaire. Ce format utilise des dictionnaires pour coder les différentes parties d'un document XML. Certains de ces dictionnaires sont dits "globaux" en ce qu'ils concernent le codage de l'ensemble du document, comme par exemple le dictionnaire de vocabulaire pour le codage des URI ("Uniform Resource Identifier" = Identifiant Universel de Resource) ou le dictionnaire global de valeurs. D'autres dictionnaires sont dits "locaux": par exemple, à chaque URI est associé un dictionnaire de vocabulaire pour les noms locaux d'éléments ("element local name"). De manière similaire, à chaque nom qualifié d'attribut ("attribute qualified name") est associé un dictionnaire de valeurs. Un dictionnaire local est ainsi utilisé uniquement lorsque l'URI, le nom qualifié d'attribut, etc. associé au dictionnaire concerne la portion de document XML à coder. Ce dictionnaire local utilisé est, à cet instant d'utilisation, le dictionnaire courant de valeurs. Enfin, des dictionnaires de structures locaux sont aussi utilisés pour coder la structure du document XML. Ces dictionnaires permettent de coder le type de chaque item du document XML: attribut, balise ouvrante d'élément, etc.
Ces dictionnaires de structures dépendent de l'élément parent de l'item à coder et peuvent dépendre des items précédant l'item à coder au sein de cet élément parent. Ces dictionnaires de structures sont généralement appelés "grammaires" dans la spécification EXI. Toujours selon cette dernière, les grammaires sont composées 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). Puisqu'on passe d'une grammaire à une autre grâce à cette indication, à un instant donné dans les traitements de codage ou de décodage selon la spécification EXI, on a généralement une seule grammaire courante.
Une grammaire selon EXI 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 bits 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.
Dans la suite de la description, le terme de "dictionnaire" est utilisé pour désigner de manière générique les différents dictionnaires mis en oeuvre lors du codage ou décodage d'un document: dictionnaire de vocabulaire, dictionnaire de valeurs ou dictionnaire de structures. Bien que la suite de la description se concentre sur le format EXI, 30 comme ci-dessus, car l'invention est particulièrement bien adaptée à ce format, l'invention n'est pas limitée à ce format de codage. L'invention peut également s'appliquer à d'autres formats XML binaires, ou être utilisée entre plusieurs formats XML binaires. A titre d'exemple, le format Fast Infoset, format binaire ITU-T et ISO, utilise en particulier des indicateurs binaires pour décrire les différents noeuds contenus dans le document XML, ainsi que des tables d'index (dictionnaires selon la terminologie adoptée ci-dessus) pour les noms d'éléments, les noms d'attributs, les valeurs d'attributs et les valeurs textuelles. Pour pouvoir s'adapter à différents scénarios, les formats de codage, et notamment le format EXI, proposent plusieurs options de codage.
Ainsi par exemple, les dictionnaires locaux de structure peuvent être créés, soit dynamiquement lors du codage du document (ou lors de son décodage), soit au préalable à partir d'un fichier de description structurelle de documents, dit Schéma XML ("XML Schema"). Il en va de même pour les dictionnaires de noms locaux d'éléments qui sont, soit créés dynamiquement lors du codage du document, soit préalablement remplis à partir d'un Schéma XML. Les Schéma XML (XML Schema) font également l'objet d'une spécification du W3C et sont prévus pour décrire la structure d'une famille de documents XML. Cette description est elle-même réalisée en langage XML.
Cette spécification se divise en deux parties, une première qui correspond à la description de la structure d'un document XML et une deuxième qui correspond à la description des types de données pouvant être utilisés pour les contenus d'un document XML. Ainsi, un Schéma XML permet de décrire la structure d'un élément XML en définissant son nom, la liste de ses attributs et leurs types respectifs, et le contenu de cet élément. Ce contenu peut être composé de texte, d'autres éléments/items ou d'un mélange des deux. Les autres éléments sont organisés en groupes, un groupe pouvant contenir d'autres groupes imbriqués et définir des contraintes sur l'ordre d'apparition des éléments qu'il contient. En outre, pour chaque élément, son nombre d'occurrences au sein de son propre groupe peut être défini. Un groupe peut, par exemple, être une séquence ("sequence"), dans laquelle tous les éléments apparaissent dans l'ordre indiqué dans le Schéma XML, un choix ("choice") dans lequel seul l'un des éléments listés apparaît, ou bien un groupe complet ("ain') dans lequel tous les éléments apparaissent une et une seule fois, dans un ordre quelconque.
Selon qu'ils sont créés dynamiquement ou à partir d'un Schéma XML, les dictionnaires locaux sont différents : ils peuvent ne pas comporter les mêmes entrées (productions dans le cas d'une grammaire), ou les contenir dans des ordres différents, et dans le cas des dictionnaires de structure, le nombre de dictionnaires (grammaires) correspondant à un élément XML donné peut être différent. La constitution préalable des dictionnaires locaux de structure au niveau de l'encodeur ou du décodeur permet d'accélérer les traitements subséquents d'encodage ou de décodage de documents sensiblement conformes à la description fournie dans le Schéma XML, puisque certaines entrées ont déjà été créées. La figure 1 représente un extrait d'un schéma XML 1. Ce dernier décrit un élément person représentant une personne. Selon le schéma XML, cet élément comprend plusieurs sous-éléments 2 comme suit: tout d'abord un sous-élément name obligatoire, puis un ou plusieurs sous- éléments address et enfin zéro ou plusieurs sous-éléments phone . En résumé, tout élément "person" conforme au schéma comprend un élément "name" suivi nécessairement d'au moins un élément "address". Cet élément "address" peut être suivit d'autres éléments "address". Ces éléments "address" peuvent être suivi soit par un ou plusieurs éléments "phone", soit par aucun autre élément. La figure 2 représente les quatre dictionnaires de structures (grammaires) 10o à 103, conformes à la spécification EXI, que l'on obtient à partir du schéma XML de la figure 1. Pour chaque dictionnaire 10o à 103 ( person_0 , person_1 ...), la liste des entrées (productions) est précisée comme suit: le type d'événement correspondant à l'entrée (SE pour "Start Bernent", c'est-à-dire le début d'un sous-élément, dont le nom est précisé entre parenthèses, EE pour "End Element", c'est-à-dire pour la fin de l'élément person ), le dictionnaire suivant à utiliser quand l'entrée est utilisée pour le codage (ou le décodage) et l'index (valeur de codage) permettant de coder l'utilisation de l'entrée dans le document codé.
Ainsi, le premier dictionnaire, person_0 , contient une seule entrée, qui correspond au début d'un élément name , le dictionnaire suivant à utiliser étant le dictionnaire person_1 et l'index pour coder le début de l'élément name étant 0 . Conformément à certaines options de la spécification EXI, le codage de cet index, lors d'une occurrence de l'élément "name" dans un document XML à coder, est réalisé sur un nombre de bits minimal. Ainsi, dans ce cas, comme il n'y a qu'un seul index dans le dictionnaire de structures, cet index est codé sur 0 bit (puisque totalement prédictible). En revanche, dans le cas du troisième dictionnaire, person_2 , comme il y a trois index, ces index sont codés sur 2 bits. Un inconvénient de ce mécanisme d'initialisation de l'encodeur ou du décodeur réside dans le besoin d'un large espace mémoire pour stocker l'ensemble des dictionnaires de structure. En effet, comme on l'observe sur la figure 2, les informations (grammaires) résultant de la conversion des données de description (schéma XML) au niveau du décodeur ou de l'encodeur présentent des entrées apparaissant dans plusieurs dictionnaires, parfois avec des index différents, ce qui est notamment le cas pour l'entrée SE (address) qui apparaît dans les dictionnaires person_1 et person_2 , ou pour l'entrée SE (phone) .
Une représentation directe des dictionnaires de structures à partir du schéma XML nécessite, de ce fait, de dupliquer ces informations. On connaît également la demande de brevet US 2007/239393 qui décrit les informations de structure d'un schéma XML, non pas directement sous forme de grammaires, mais à l'aide d'une machine à états finis.
Dans cette machine à états finis, les noeuds contenus dans l'élément décrit par le schéma XML sont décrits par des transitions, tandis que les états de la machine correspondent aux positions entre ces noeuds. Ainsi, chaque noeud contenu dans un élément est décrit par au moins une transition, le nombre de transitions décrivant ce noeud dépendant du nombre de cas dans lequel ce noeud peut apparaître. En outre, pour chaque état, le nombre de transitions partant de cet état correspond au nombre de noeuds pouvant survenir dans cet état. Par rapport à la description précédente de la spécification EXI, chaque état avec les transitions afférentes qui lui sont associées représente un dictionnaire de structure. Cette solution réalise donc une mise en oeuvre directe de la spécification EXI vue ci-dessus.
Lors du codage (ou du décodage), la machine à états finis est utilisée pour coder les informations de structures : à partir d'un état donné, le type du noeud suivant est codé en fonction du nombre de transitions efférentes de cet état. En raison de la correspondance état/transition û dictionnaire de structure, la représentation du contenu d'un élément par une machine à états finis, c'est-à-dire les informations converties au niveau du codeur/décodeur à partir du Schéma XML, correspond à la représentation des dictionnaires de structures du format EXI. La représentation à l'aide d'une machine à états finis présente donc également l'inconvénient de nécessiter un large espace mémoire. De façon générale, la configuration initiale d'encodeur ou décodeur selon les solutions connues de l'état de la technique génère un grand nombre de dictionnaires de structure ou équivalent, dans lesquels beaucoup d'informations sont communes et de nombreuses structures sont redondantes.
Il en résulte une utilisation inefficace de la mémoire. L'invention vise à pallier ce problème en optimisant l'espace mémoire utilisé lors de la configuration de l'encodeur ou décodeur. Dans ce dessein, l'invention vise notamment un procédé de codage ou décodage d'un document structuré d'items, comprenant une étape de configuration d'un encodeur ou décodeur incluant l'obtention de données décrivant un modèle de structure de documents, et le stockage desdites données sous forme d'enregistrements destinés à être utilisés par l'encodeur ou le décodeur pour coder ou décoder des items d'un document structuré, le procédé comprenant les étapes suivantes : - le calcul d'un nombre d'items, dits possibles, susceptibles de succéder, selon le modèle de structure, à un item dudit modèle, - le stockage dudit nombre d'items possibles dans un enregistrement associé audit item. En particulier, le nombre d'items possibles est calculé pour tous les items définis dans le schéma XML. Les données de description peuvent être un fichier Schéma XML, un fragment d'un tel fichier ou toute représentation adaptée d'un tel fichier/fragment, par exemple un ensemble de structures informatiques. En mémorisant directement l'information du nombre d'items possibles au niveau des données utilisées par l'encodeur ou le décodeur, ce dernier peut efficacement et à moindre coût déterminer certaines informations de codage ou de décodage, comme par exemple le format de codage (nombre de bits utilisés). D'autres informations pour le codage ou le décodage sont par ailleurs déterminées, par exemple la valeur à coder qui est déduite de la position de l'enregistrement associé à un item à coder/décoder parmi les enregistrements des items possibles. Ainsi, contrairement aux solutions de l'état de la technique, il n'est pas nécessaire de dupliquer les items décrits dans le schéma XML en autant de grammaires qu'il existe de contextes. La seule information du nombre d'items possibles permet de déporter efficacement le calcul de l'index de codage. On réduit par conséquent l'espace mémoire nécessaire à la mémorisation d'une représentation du schéma XML au niveau du décodeur/encodeur. L'invention s'applique particulièrement à la mémorisation d'informations de structure, correspondant aux grammaires selon la spécification EXI.
Selon une caractéristique de l'invention, l'enregistrement associé à l'item comprend les nombres minimal et maximal d'occurrences dudit item définis par le modèle de structure. Ces informations sont notamment suffisantes pour permettre un calcul aisé des indications nécessaires au codage ou au décodage, pour un grand nombre d'items. En particulier, le nombre d'items possibles pour l'item est calculé à l'aide des nombres minimal d'occurrences des enregistrements d'une pluralité d'autres items. Ce calcul présente l'avantage d'être rapide, et peut être mis en oeuvre pour des schémas XML relativement simples, par exemple pour la description d'un élément XML ne présentant pas de groupe d'autres items imbriqué. Par ailleurs, lesdits enregistrements sont mémorisés dans l'ordre d'apparition des items associés au sein des données de description. Cette disposition permet d'effectuer des opérations simples pour notamment calculer le nombre d'items possibles ou la position de l'enregistrement correspondant à l'item à coder afin de déterminer la valeur correspondante de codage. Dans un mode de réalisation, le nombre d'items possibles de l'enregistrement renseigne le nombre (dit nombre théorique) d'items possibles, selon le modèle de structure, dans le cas où le nombre minimal d'occurrences de l'item de l'enregistrement a été atteint et le nombre maximal d'occurrences de l'item de l'enregistrement n'a pas été atteint. On dispose ainsi de valeurs homogènes pour tous les enregistrements. Des traitements identiques sont alors appliqués pour chacun d'entre eux. A l'aide de ces valeurs enregistrées, il est possible de déterminer aisément le nombre effectif d'items possibles pour les autres cas (nombre minimal non atteint, ou nombre maximal atteint). On entend par "effectif' le cas correspondant à l'état courant lors d'une opération de codage ou de décodage.
En effectuant ces calculs lors de la configuration du dispositif de codage ou décodage, on minimise les calculs lors des codages ou décodages effectifs. Ainsi, on prévoit que le procédé comprend une seconde étape de calcul d'un nombre, dit effectif, d'items possibles pour un item courant précédant un item à coder ou à décoder, le nombre effectif étant calculé à partir dudit nombre théorique d'items possibles de l'enregistrement associé à l'item courant et du nombre courant d'occurrences successives de l'item courant dans le document à coder ou à décoder.
En variante, ledit calcul est réalisé à chaque codage ou décodage dudit item. En particulier, lors de la seconde étape de calcul du nombre effectif d'items possibles, le procédé comprend une étape d'ajustement dudit nombre effectif d'items possibles en fonction de la présence de valeurs textuels ou d'items non décrits par le modèle de structure du document. L'ajustement peut par exemple consister en une simple incrémentation de '1' en cas de présence de données textuelles. Ce mode de réalisation permet également de tenir compte des déviations définies par la spécification EXI.
Selon une caractéristique de l'invention, le procédé comprend une étape de calcul d'une information de codage ou décodage pour coder ou décoder un item, par exemple un index binaire, à l'aide dudit nombre d'items possibles associé à l'item courant précédant l'item à coder ou décoder. Comme évoqué précédemment, le nombre d'items possibles stocké conformément à l'invention permet de calculer directement les informations de codage ou de décodage. En particulier, on détermine le nombre de bits de l'information de codage en fonction dudit nombre effectif d'items possibles. Dans un mode de réalisation, lesdites données obtenues sont stockées sous forme d'un seul enregistrement pour chaque item du modèle de structure. On garantit ainsi une utilisation améliorée de la mémoire de l'encodeur ou du décodeur. Selon une caractéristique de l'invention, le procédé comprend la détermination de l'item possible susceptible de succéder à un item donné, qui est le plus éloigné dudit item donné dans l'ordre d'apparition au sein des données de description, et pour un item suivant ledit item donné, ledit nombre d'items possibles est calculé en fonction du nombre d'items séparant l'item suivant et ledit item le plus éloigné.
Ici, on utilise la propriété de l'item le plus éloigné selon laquelle a minima cet item peut succéder à l'item donné, pour en déduire que les items intermédiaires sont optionnels. Ainsi, pour ces derniers aussi, l'item le plus éloigné constitue un item "obligatoire" qui délimite donc le nombre d'items possibles. Il ne reste plus qu'à comptabiliser ces items optionnels situés avant l'item le plus éloigné. Selon cette disposition de l'invention, les calculs du nombre d'items possibles sont largement simplifiés.
En particulier, ledit item donné est l'item listé en premier à l'intérieur d'un élément du modèle de structure. En effet, on obtient une efficacité accrue si l'on procède à ces calculs simplifiés dès le premier item définissant un élément, car les nombres d'items possibles sont calculés simplement pour tous les items suivants optionnels.
Egalement, on itère la détermination de l'item possible le plus éloigné pour une pluralité d'items consécutifs à l'item donné, et ladite détermination pour un item consiste à conserver l'item le plus éloigné de l'itération précédente lorsque ce dernier est différent de l'item visé par l'itération courante. Le nombre de traitements nécessaires à la détermination du nombre de "possibilités" (items susceptibles de succéder à un item donné) est ainsi réduit. Ces items consécutifs, tant qu'ils sont différents de l'item le plus éloigné, correspondent à des items optionnels. En combinaison généralement, ladite détermination de l'item possible le plus éloigné comprend l'identification du premier item, ultérieur audit item donné dans l'ordre des données de description, associé à un enregistrement dont le nombre minimal d'occurrences est non nul. La détermination est ainsi rapidement menée par simple identification sur les nombres minimaux d'occurrences. En particulier, on itère la détermination de l'item possible le plus éloigné pour une pluralité d'items consécutifs à l'item donné, et ladite détermination consiste à identifier ledit premier item ayant un nombre minimal d'occurrences non nul, lorsque l'item visé par l'itération courante est l'item possible le plus éloigné de l'itération précédente. Cette disposition est notamment combinée à la simple conservation de l'item le plus éloigné lors de l'itération pour des items optionnels, de sorte à limiter les traitements selon l'invention au strict nécessaire.
Dans un mode de réalisation de l'invention, lesdites données de description décrivent au moins un groupe d'items au sein duquel est imbriqué au moins un autre groupe d'items, un groupe d'items décrivant la structure des items constituant un élément, et au moins un desdits enregistrements est associé à chaque groupe d'items et renseigne les nombres minimal et maximal d'occurrences du groupe tels que définis par le modèle de structure. Cette notion de groupe a déjà été définie précédemment et reflète le fait qu'un élément puisse contenir d'autres éléments, eux-mêmes définis par un 10 ensemble d'items. Dans ce cas, on prévoit que l'au moins un enregistrement associé à un groupe renseigne le nombre d'items possibles susceptibles de succéder, dans ledit groupe selon le modèle de structure, à un item précédant le groupe ou à un item dudit groupe lors d'une itération de ce groupe. 15 Ce nombre peut être défini principalement de deux manières : - le nombre d'items possibles susceptibles de succéder, dans ledit groupe et selon le modèle de structure, à un item précédant le groupe ou à un item dudit groupe lors d'une itération de ce groupe ; ou - le nombre d'items possibles susceptibles de survenir comme 20 premier item dudit groupe selon le modèle de structure. De façon similaire, l'au moins un enregistrement associé à un groupe renseigne le nombre d'items possibles susceptibles de succéder, selon le modèle de structure, à un item dudit groupe. Ce nombre peut être défini principalement de deux manières, comme 25 étant le nombre d'items possibles susceptibles de succéder, à l'extérieur du groupe et selon le modèle de structure : - à un item dudit groupe ; ou - après ledit groupe. Encore, l'au moins un enregistrement associé à un groupe renseigne 30 si l'ensemble des items du groupe est optionnel ou non. Egalement, un enregistrement de chaque item d'un premier groupe et l'au moins un enregistrement associé à un groupe imbriqué dans ledit premier groupe comprennent une indication de fin de groupe indiquant si un item extérieur audit premier groupe est un item possible pour succéder audit item ou audit groupe imbriqué, selon le cas. En d'autres termes, on prévoit ici d'indiquer si la fin du premier groupe peut survenir après ledit item ou ledit groupe imbriqué, selon le cas, ce qui facilite les opérations de calcul du nombre effectif de possibilités par la suite. Par ailleurs, un enregistrement de chaque item comprend ledit nombre d'items possibles, susceptibles de succéder, selon le modèle de structure, à cet item à l'intérieur du groupe comprenant l'item, ledit calcul dudit nombre d'items possibles à l'intérieur du groupe comprenant : - le parcours desdites données de description dans l'ordre d'apparition des items correspondant audit groupe comprenant ledit item associé à l'enregistrement, et - tant qu'un item, un groupe ou l'ensemble des items d'un groupe est optionnel lors du parcours, l'incrémentation d'un compteur dudit nombre d'items possibles de '1' ou l'augmentation dudit compteur d'un nombre d'items possibles au sein dudit groupe, selon le cas. L'optionalité d'un item peut notamment se lire directement sur le nombre minimal d'occurrences.
Prises individuellement ou combinées, ces informations complémentaires au niveau des enregistrements permettent au décodeur ou codeur de notamment déterminer plus rapidement le nombre effectif d'items possibles pour un item courant en vue de coder ou décoder un item suivant, quelle que soit la complexité du schéma XML traité.
Ainsi, selon une caractéristique particulière de l'invention, le procédé comprend en outre une étape de calcul d'un nombre effectif d'items possibles pour un item courant précédant un item à coder ou décoder, qui est fonction : - des nombres minimal et maximal d'occurrences, du nombre d'items possibles à l'intérieur du groupe et de ladite indication de fin de groupe, associés à l'item courant, et - des nombres minimal et maximal d'occurrences, desdits nombres d'items possibles susceptibles de succéder à un item à l'intérieur du groupe ou après le groupe, et de ladite indication de fin de groupe, pour les groupes imbriquant l'item courant. La description détaillée ci-après, notamment en référence à la figure 12, présente différentes étapes de traitement à l'aide de ces informations pour déterminer efficacement et indépendamment de la complexité du schéma XML traité, le nombre d'items possibles pour un item courant donné. Corrélativement, l'invention vise également un dispositif de codage ou décodage d'un document structuré d'items, comprenant des moyens de configuration aptes à obtenir des données décrivant un modèle de structure de documents et à stocker lesdites données sous forme d'enregistrements destinés à être utilisés par le dispositif pour coder ou décoder des items d'un document structuré, le dispositif comprenant - des moyens de calcul d'un nombre d'items, dits possibles, 15 susceptibles de succéder, selon le modèle de structure, à un item dudit modèle ; - ledit nombre d'items possibles étant stocké dans un enregistrement associé audit item. Le dispositif présente des avantages similaires à ceux du procédé 20 exposé ci-dessus, notamment l'utilisation réduite de ses ressources mémoire. De façon optionnelle, le dispositif peut comprendre des moyens se rapportant aux caractéristiques du procédé de configuration exposé précédemment. Egalement, l'invention a trait à une structure de données de 25 représentation d'un fichier de description de structure de documents, comprenant une pluralité d'entrées correspondant à une pluralité d'items définis dans ledit fichier, dans laquelle une entrée associée à un item comprend : - les nombres minimal et maximal d'occurrences dudit item définies par le modèle de structure, 30 - un nombre d'items, dits possibles, susceptibles de succéder, selon le modèle de structure, audit item associé à l'entrée.
Les informations contenues dans cette structure présentent, au même titre que le procédé et le dispositif ci-dessus, l'avantage de représenter de façon concise, donc à l'aide d'un faible espace mémoire, un schéma XML. En particulier, lesdites entrées sont ordonnées dans la structure de façon similaire aux items correspondants au sein dudit fichier de description. Afin de faciliter la gestion de tout type de Schéma XML, on prévoit également que l'entrée associée à un item comprend une indication de fin de groupe comme exposée précédemment. On prévoit également des entrées associées à des groupes comme définis ci-dessus, ces entrées comprenant les nombres d'items possibles pour succéder aux items de début ou de fin d'élément correspondant du groupe, l'indication de savoir si l'ensemble des items du groupe est optionnel ou non, l'indication de fin de groupe, et le nombre d'items possibles à l'intérieur du groupe. 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 codage ou décodage 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 codage ou décodage 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. 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 un exemple de fragment de Schéma XML pour illustrer la présente invention ; - la figure 2 représente des dictionnaires de structure construits à partir du fragment de la figure 1, selon les techniques connues de l'art antérieur ; - les figures 3a et 3b illustrent une représentation, sous forme de tableau, du fragment de la figure 1 selon la présente invention ; - la figure 4 représente, sous forme de logigramme, des étapes de constitution du tableau des figures 3a et 3b ; - la figure 5 représente, sous forme de logigramme, des étapes pour le calcul, selon l'invention, de dictionnaires de structure à partir du tableau 10 des figures 3a et 3b ; - la figure 6 représente un autre exemple de fragment de Schéma XML; - la figure 7 représente des dictionnaires de structure construits à partir du fragment de la figure 6, selon les techniques connues de l'art antérieur 15 ; - les figures 8a à 8c illustrent une représentation, sous forme de tableau, du fragment de la figure 6 selon la présente invention ; - la figure 9 représente, sous forme de logigramme, des étapes génériques pour la construction d'un tableau représentant un Schéma XML ; 20 - la figure 10 représente, sous forme de logigramme, des étapes pour le calcul générique du nombre de possibilités d'items successeurs d'un item donné, lors de la mise en oeuvre du procédé de la figure 9 ; - la figure 11 représente, sous forme de logigramme, des étapes pour le calcul, selon l'invention, de dictionnaires de structure à partir du tableau 25 des figures 8a à 8c ; - la figure 12 représente, sous forme de logigramme, des étapes pour le calcul du nombre de possibilités lors du traitement de la figure 11 ; - la figure 13 montre une configuration matérielle particulière d'un dispositif apte à une mise en oeuvre du procédé selon l'invention. 30 Afin d'illustrer la présente invention, on décrit tout d'abord, en référence aux figures 3 à 5, une mise en oeuvre simple pour le cas du Schéma XML de la figure 1. Ce dernier décrit une séquence simple d'éléments et correspond à un cas fréquent de Schéma XML ou de fragment d'un tel schéma. On illustrera ensuite, en référence aux figures 6 à 12, le procédé selon l'invention dans un cas plus général.
Comme montré sur la figure 2, les dictionnaires de structure configurant un encodeur ou décodeur selon les techniques de l'art antérieur sont nombreux et comprennent des informations redondantes. Les figures 3a et 3b illustrent des représentations, sous forme de tables, à stocker en mémoire de l'encodeur ou décodeur, et permettant de configurer ces derniers à partir du Schéma XML 1. Sur la figure 3a, on a représenté un tableau 20 contenant l'ensemble des éléments XML pouvant être présents dans la séquence person définie par le Schéma XML 1 (colonne 30), avec leur nombre minimal (colonne 31) et maximal (colonne 32) d'occurrences également définis dans le fichier Schéma XML 1. Les entrées de ce tableau 20 sont ordonnées de façon similaire aux apparitions des items correspondants dans le fichier Schéma XML. Dans ce tableau, la première entrée 21' indique que le premier élément pouvant être contenu dans l'élément person est un élément name , qui doit apparaître une et une seule fois. La deuxième entrée 22' indique que cet élément name est suivi par un élément address qui peut être répété un nombre indéfini de fois. La troisième entrée 23' indique que l'élément address peut être suivi par un élément phone optionnel et qui peut être répété un nombre indéfini de fois. La quatrième entrée 24' représentée par le code "EE" indique la fin de l'élément person consécutivement à l'élément phone ou l'élément address lorsque aucun élément phone n'est utilisé. Ce tableau 20 est suffisant pour la création des dictionnaires de structures EXI car il contient l'ensemble des informations nécessaires à cette opération, comme on l'illustre ci-après.
Comparativement aux tables de la figure 2 où chaque dictionnaire liste l'ensemble des éléments susceptibles de succéder à l'élément à partir duquel on accède à ce dictionnaire, l'ensemble des éléments est référencé, en un seul exemplaire, à l'intérieur du tableau 20. Ce dernier permet ainsi de diminuer la mémoire utilisée pour la représentation des dictionnaires de structures. Pour la suite de la description, on nomme "possibilité" un des items au sens large susceptible de succéder à un autre item selon la structure définie dans le Schéma XML. Dans l'exemple de la figure 2, le "nombre de possibilités" pour un élément correspond au nombre d'entrées du dictionnaire (grammaire) suivant cet élément. On voit donc que le nombre de possibilités dépend de la grammaire courante, et donc du contexte courant.
En pratique, on utilise le tableau 20 pour obtenir l'ensemble des informations nécessaires pour coder (ou décoder) un événement/item particulier du contenu de l'élément person . Dans un mode de réalisation particulier, on utilise le tableau 20 pour créer uniquement le dictionnaire de structures, temporaire, nécessaire pour coder (ou décoder) un événement/item particulier du contenu de l'élément person . Après le codage (décodage) de cet événement, le dictionnaire de structures temporairement créé est détruit et un dictionnaire suivant est créé pour le codage (ou décodage) d'un événement ultérieur. Ainsi, l'utilisation de ce tableau 20 permet de diminuer, encore plus, la mémoire utilisée, lors du codage (ou décodage), pour la représentation des dictionnaires de structures. En raison notamment de la dépendance de l'encodage des valeurs à coder avec le nombre de possibilités pour l'élément précédemment codé, on prévoit une étape de calcul du nombre de possibilités pour cet élément précédemment codé. Ce calcul peut être réalisé au fil de l'encodage ou préalablement à l'encodage. Dans le premier cas, le calcul est répété pour chaque codage d'un événement. Par exemple, si un document XML contient plusieurs occurrences de l'élément person , on réalise autant de calculs du nombre de possibilités pour les items constituant cet élément.
Dans le deuxième cas, on mémorise lors de la création du tableau 20, pour chaque élément du Schéma XML, le nombre de possibilités correspondant à chaque item du tableau quand le nombre minimal d'occurrences de cet item a été atteint, mais que le nombre maximal d'occurrences pour cet item n'a pas été atteint. Ce nombre de possibilités est mémorisé dans une nouvelle colonne 33 du tableau 20, comme illustré sur la figure 3b. Toutefois, dans un troisième cas, le nombre de possibilité est calculé lors de l'encodage, mais est en outre mémorisé, ce qui évite d'avoir à le calculer à nouveau. Dans notre exemple simplifié, ce calcul est réalisé en parcourant une partie du tableau 20 de la figure 3a à partir de l'item pour lequel ce nombre de possibilités est calculé. Par exemple, après le codage d'un élément address , '1' étant le nombre minimal d'occurrences pour cet élément, il existe trois possibilités : le début d'un autre élément address , le début d'un élément phone , ou la fin de l'élément person (élément EE). Ces trois possibilités correspondent au dictionnaire de structures person_2 de la figure 2. Ainsi, comme montré sur la figure 3b, si au moins un événement SE (address) a déjà été codé, alors il y a trois possibilités pour l'événement suivant, qui sont celles décrites par l'entrée courante 22' et les deux suivantes 23' et 24'. Trois cas peuvent se produire pour un item donné. D'un part, le nombre minimal d'occurrences pour cet item n'a pas encore été atteint. Dans ce cas, la seule possibilité est l'item lui-même. Dans un tel cas, le calcul du nombre de possibilités est immédiat. Ainsi, si aucun événement SE (address) n'a encore été codé, alors la seule possibilité est cet événement SE (address) conformément au pré-requis d'une occurrence minimale de cet élément (voir colonne 31 de cet élément).
Un deuxième cas est celui où le nombre minimal d'occurrences pour cet item a été atteint, mais où le nombre maximal d'occurrences pour cet item n'a pas encore été atteint. Dans ce cas, le nombre de possibilité pour cet item est calculé en fonction du nombre minimal d'occurrences et du nombre maximal d'occurrences pour les items suivants. Ce calcul est décrit ultérieurement en référence à la figure 4. Le dernier cas est rencontré lorsque le nombre maximal d'occurrences pour cet item a été atteint. Dans ce cas, le nombre de possibilités est celui mémorisé pour cet item, diminué de 1, puisque l'item lui-même ne fait plus partie des possibilités. Dans un mode de réalisation préféré pour l'invention, comme indiqué précédemment, c'est le nombre de possibilités correspondant au deuxième cas qui est mémorisé dans la colonne 33 du tableau 20, car cela correspond généralement aux cas les plus courants. Dans une variante, c'est le nombre de possibilités correspondant au troisième cas qui est mémorisé dans la colonne 33 du tableau 20. Dans une autre variante, tous ces nombres sont mémorisés dans la colonne 33 du tableau 20. Il est à noter que dans le cas où le nombre minimal d'occurrences et le nombre maximal d'occurrences pour un item sont égaux, le nombre mémorisé dans la colonne 33 du tableau 20, comme illustré par la suite, n'est pas utilisé par l'algorithme de codage ou décodage décrit ci-après en référence à la figure 5. Dans un souci d'optimisation, il est possible de ne rien mémoriser dans cette colonne 33 pour cet élément. En référence à la figure 4, on décrit différentes étapes du procédé simplifié selon l'invention pour l'obtention du tableau 20 des figures 3a et 3b, par conversion depuis le Schéma XML 1.
A l'étape E100, on obtient tout d'abord la description de la séquence d'éléments constituant l'élément pour lequel le tableau 20 doit être créé. Cette description est obtenue sous la forme d'un fragment de Schéma XML 1, ou sous la forme d'une structure, par exemple informatique, décrivant ce fragment de Schéma XML.
A l'étape E110, le tableau 20 est créé à partir de la description de la séquence d'éléments.
Pour ce faire, pour chaque élément 2 de la séquence 1, une ligne 21' à 23' est ajoutée contenant un événement 30 de début de cet élément, le nombre minimal 31 et le nombre maximal 32 d'occurrences pour cet élément. Ces informations sont lues directement du Schéma XML 1.
En outre, une dernière ligne 24' est ajoutée au tableau correspondant à la fin (notée EE) de l'élément décrit, dans notre exemple la fin de l'élément "person". Les étapes suivantes (E120 à E160) correspondent au calcul du nombre d'événements possibles pour chaque ligne 21' à 23' du tableau, comme 10 évoqué précédemment. A l'étape E120, on obtient la première entrée 21' du tableau, qui est à cet instant l'entrée courante. A l'étape E130, on détermine la dernière possibilité par rapport à cette première entrée courante 21'. Cette dernière possibilité correspond à la 15 dernière entrée du tableau 20 correspondant à un événement pouvant survenir après que le nombre minimal d'occurrence de cette première entrée courante 21' a été atteint, mais que son nombre maximal d'occurrences n'a pas encore été atteint. Dans le cas où ces deux nombres sont égaux, cette dernière possibilité est calculée en prenant comme hypothèse qu'ils sont différents. 20 Cette hypothèse permet d'obtenir un calcul similaire quelles que soient les valeurs respectives du nombre minimal d'occurrence de cette première entrée courante et de son nombre maximal d'occurrences. L'utilisation de cette notion de dernière possibilité permet d'optimiser le calcul du nombre de possibilités pour les différentes entrées du tableau. En 25 effet, il est possible de mettre à jour facilement la dernière possibilité pour une entrée donnée à partir de la dernière possibilité pour l'entrée précédente. Ceci permet d'éviter d'effectuer cette étape E130 pour l'ensemble des entrées du tableau. Cette étape E130 n'est réalisée que pour la première entrée, tandis que pour les entrées suivantes, l'étape E160 décrite ci-après, moins coûteuse 30 en temps de calcul, est réalisée pour mettre à jour la dernière possibilité. A partir de cette dernière possibilité, le calcul du nombre de possibilités est simple à réaliser comme illustré ci-après en lien avec l'étape E140.
Pour déterminer la dernière possibilité correspondant à la première entrée, on parcourt tout d'abord, lors de cette étape E130, les entrées du tableau 20, en partant de cette première entrée courante 21', pour trouver tous les événements qui peuvent être atteints dès que le nombre minimal d'occurrences pour cette première entrée courante 21' a été atteint. De façon pratique, si le nombre d'occurrences possibles pour l'élément correspondant à cette première entrée est fixé, c'est-à-dire si son nombre minimal d'occurrences est non nul et si son nombre maximal d'occurrences est égal à ce nombre minimal d'occurrences, alors la dernière possibilité est cette première entrée 21'. Dans le cas contraire, les entrées suivantes 22'-24' sont parcourues dans l'ordre. Tant que l'entrée parcourue a un nombre minimal d'occurrences égal à zéro, l'algorithme passe à l'entrée suivante. Ainsi, l'algorithme trouve la première entrée, hors la première entrée courante 21' du tableau 20, ayant un nombre minimal d'occurrences strictement positif. S'il n'y en a pas, l'algorithme sélectionne la dernière entrée du tableau, correspondant à la fin de l'élément décrit. Lors de l'étape E140, on calcule ensuite le nombre de possibilités à partir de l'entrée courante, la première entrée 21' lors de la première itération, en comptant le nombre d'entrées entre l'entrée courante et celle correspondant à la dernière possibilité (en incluant ces deux entrées, pour calculer le cas général où le nombre minimal d'occurrences de l'élément a été atteint et le nombre maximal non encore atteint). Ce nombre calculé est mémorisé dans la dernière colonne 33 du tableau 20, pour l'entrée courante.
A l'étape E150, l'algorithme vérifie s'il reste d'autres entrées 22'-23' non traitées. Si c'est le cas, il sélectionne l'entrée suivante qui devient l'entrée courante. Puis l'algorithme continue à l'étape E160. Si ce n'est pas le cas à l'étape E150, l'algorithme se termine à l'étape E170.
A l'étape E160, l'algorithme met tout d'abord à jour la dernière possibilité par rapport à la nouvelle entrée courante. Cette détermination peut être effectuée comme lors de l'étape E130.
Toutefois, selon une mise en oeuvre particulière, cette détermination est optimisée en utilisant la dernière possibilité correspondant à l'entrée précédente. En particulier, si la dernière possibilité lors de l'itération précédente n'est pas la nouvelle entrée courante, cette dernière possibilité reste inchangée. On évite ainsi des calculs inutiles correspondants à ceux de l'étape El 30. En revanche, si la dernière possibilité est égale à l'entrée courante ou l'entrée précédant l'entrée courante, l'algorithme détermine la dernière possibilité comme il est décrit en lien avec l'étape El 30.
En itérant ces opérations, on obtient le tableau 20 de la figure 3b. Cet algorithme peut être adapté pour calculer le nombre de possibilités correspondant à une entrée uniquement quand cela est nécessaire. Dans cette adaptation, les étapes E100 et E110 sont réalisées préalablement à l'encodage ou au décodage, et permettent de générer le tableau 20 de la figure 3a. Ensuite, quand une entrée est sélectionnée lors de l'encodage ou du décodage, les étapes E130 et E140 sont réalisées par rapport à cette entrée pour effectuer le calcul du nombre de possibilités pour cette entrée. On décrit maintenant, en lien avec la figure 5, l'utilisation d'un tel tableau 20 lors de l'encodage ou du décodage du contenu d'un élément "person" d'un document XML. Plus précisément, les étapes présentées ci-après décrivent comment les informations contenues dans un dictionnaire de structure et utilisées pour l'encodage/décodage d'items XML sont reconstruites à partir de ce tableau 20. En l'absence de précision contraire, les étapes décrites ci-après s'appliquent aussi bien à l'encodage qu'au décodage. Dans l'exemple du codage, trois informations sont généralement utilisées pour coder un événement à partir du dictionnaire de structure selon la spécification EXI. La première information est la position de l'entrée correspondant à cet événement dans le dictionnaire de structure. Cette position permet de déterminer la valeur à coder pour représenter cet événement dans le cas du codage. Dans le cas du décodage, cette position est obtenue à partir de la valeur codée et permet de déterminer l'événement codé. La deuxième information est le nombre d'entrées présentes dans ce dictionnaire de structure. Ce nombre d'entrées permet de déterminer la façon dont est codée la valeur utilisée pour représenter cet événement. Plus précisément, cette valeur est codée sur le nombre minimum de bits permettant de représenter l'ensemble des valeurs associées aux entrées du dictionnaire de structure, ce qui correspond au nombre minimum de bits permettant de coder le nombre d'entrées du dictionnaire de structure diminué de 1. Ainsi, par exemple, s'il y a 3 entrées dans le dictionnaire de structure, il faut pouvoir coder les valeurs 0, 1 et 2, et donc 2 bits sont nécessaires. Avec 4 entrées, il faut aussi 2 bits, mais avec 5 entrées, il en faut 3. Il est à noter que dans certains cas, le codage est plus complexe, mais reste une extension de ce mécanisme. La présente invention s'y applique donc également.
La troisième information est le dictionnaire de structure à utiliser pour l'événement suivant. Dans le cadre de l'invention, l'encodage et le décodage d'items XML n'utilisent pas de dictionnaire de structure. Cette troisième information n'est donc pas nécessaire. En effet lors du codage (ou du décodage) de l'ensemble des événements correspondant au contenu d'un élément person , on utilise le même tableau 20. Les informations correspondant aux différents dictionnaires de structure permettant de coder ces événements sont reconstruites directement à partir de ce tableau 20. Ainsi en détail, une première étape E200 d'initialisation est prévue au cours de laquelle l'entrée courante du tableau est définie comme la première entrée 21' du tableau 20 (c'est-à-dire qu'on cherche ici à coder/décoder le premier sous-élément d'une occurrence de l'élément "person"). Un compteur du nombre d'occurrences du dernier événement est également initialisé à 0. A l'étape E210, le nombre effectif de possibilités pour l'événement suivant est calculé. Ce nombre effectif de possibilités correspond à la deuxième information nécessaire au codage ou décodage d'un événement et tient compte de l'état courant.
Pour réaliser ce calcul, le compteur du nombre d'occurrences du dernier événement est comparé au nombre minimal d'occurrences de l'entrée courante. Si ce nombre d'occurrences du dernier événement est strictement inférieur au nombre minimal d'occurrences de l'entrée courante, alors, seul l'événement correspondant à l'entrée courante est acceptable : il y a donc une seule possibilité effective pour l'événement suivant. Sinon, le nombre effectif de possibilités est celui mémorisé dans la dernière colonne 33 du tableau 20.
Il est à noter que dans l'algorithme de la figure 5, le cas où le nombre maximal d'occurrences de l'entrée courante est atteint ne peut se produire à l'étape E210 : l'étape E240 empêche cela comme décrit ci-après. Ainsi, dans notre exemple, quand l'entrée courante du tableau est la deuxième entrée ( SE (address) ), et qu'aucune occurrence d'un événement SE (address) n'est encore survenue, la seule possibilité acceptée pour l'événement suivant est un événement SE (address) . Toujours pour la même entrée courante, si au moins une occurrence de cet événement a déjà été codée ou décodée, alors il y a trois possibilités pour l'événement suivant, comme indiqué dans la dernière colonne 33 du tableau. Ces trois possibilités correspondent à l'entrée courante 22' et les deux suivantes 23'-24'. Il est à noter que si l'événement à coder ou à décoder ne correspond pas à l'un des événements possibles, il s'agit d'une erreur, qui doit être traitée comme défini par la spécification EXI.
Lors de l'étape suivante E220, on réalise le codage ou le décodage de l'événement. Dans le cas du codage, l'événement à coder est recherché dans la liste des possibilités acceptées pour l'événement suivant, c'est-à-dire dans l'entrée courante et/ou le nombre d'entrées suivantes correspondant au nombre de possibilités calculé à l'étape précédente E210. La position de l'entrée correspondant à l'événement à coder par rapport à l'entrée courante permet de déterminer la première information nécessaire à son codage.
Ainsi, en reprenant l'exemple précédent, avec comme entrée courante du tableau 20 la deuxième entrée 22' et en supposant qu'au moins un événement SE (address) a déjà été codé, si l'événement à coder est SE (phone) (début d'élément "phone"), alors l'entrée correspondante est la première 23' après l'entrée courante 22'. La valeur à coder est donc "1" (la valeur "0" étant utilisée pour le codage d'une nouvelle occurrence de l'élément "address"). Et cette valeur est à coder sur deux bits, nécessaire au codage des trois possibilités. Après avoir déterminé la valeur utilisée pour coder l'événement, cet événement est effectivement codé, en codant cette valeur et éventuellement d'autres paramètres de cet événement. L'ensemble du codage est réalisé selon la spécification EXI. Dans le cas du décodage, la "deuxième information" déterminée permet de récupérer, dans un flux EXI codé, le bon nombre de bits pour décoder la valeur représentant l'événement suivant. Cette valeur est donc décodée et utilisée pour obtenir l'entrée correspondante dans le tableau. En fonction de l'événement correspondant à cette entrée du tableau, d'autres paramètres décrivant cet événement peuvent être décodés. L'ensemble du décodage est réalisé selon la spécification EXI.
Ainsi, en reprenant l'exemple précédent, avec comme entrée courante du tableau 20 la deuxième entrée 22' et en supposant qu'au moins un événement SE (address) a déjà été décodé, si la valeur décodée est "2", alors l'événement correspond à la deuxième entrée après l'entrée courante, c'est-à-dire à l'événement EE qui correspond à la fin de l'élément person . Aussi bien pour le codage que pour le décodage, l'algorithme se poursuit à l'étape E230, en vérifiant si d'autres événements décrivant le contenu de l'élément person courant doivent être codés ou décodés. Cette vérification consiste à vérifier si le dernier événement codé ou décodé est un événement fin d'élément "person" EE ou non. Si la réponse au test E230 est négative, c'est-à-dire si tous les événements décrivant le contenu de l'élément person courant ont été traités, alors de codage ou le décodage de cet élément courant se termine à l'étape E250. Si ce n'est pas le cas, l'algorithme se poursuit à l'étape E240. Lors de cette étape, on met à jour les paramètres utilisés par l'algorithme pour l'événement suivant. Pour cela, l'entrée courante devient celle correspondant au dernier événement codé ou décodé, c'est-à-dire la dernière entrée utilisée. D'autre part, le nombre d'occurrences du dernier événement est mis à jour. C'est-à-dire que le compteur du nombre d'occurrences est incrémenté de "1" si l'entrée courante n'a pas changé, et prend la valeur "1" si l'entrée courante a changé. En outre, si le nombre maximal d'occurrences pour cette nouvelle entrée courante est atteint, alors la nouvelle entrée courante est l'entrée suivante et le nombre d'occurrences du dernier événement est remis à zéro. Ce mécanisme permet de gérer simplement le cas où le nombre maximal d'occurrences est atteint, en évitant notamment des tests supplémentaires lors de l'étape E210. Puis l'algorithme se poursuit à l'étape E210 pour le traitement de l'événement suivant. On décrit maintenant, à l'aide des figures 6 à 12, un cas général de la présente invention. La figure 6 présente un Schéma XML 1 dont la structure décrite est plus complexe que pour la figure 1. Ce Schéma XML 1 décrit notamment un élément document comprenant une ou plusieurs séquences de contenus, chaque séquence représentant une partie d'un document XML associé à ce schéma de structure. Une séquence de contenu commence par un élément tille obligatoire. Cet élément est suivi par un choix 40 entre un élément subtitie et un élément abstract , ces deux éléments étant optionnels. Puis la séquence est complétée par un nombre indéterminé d'éléments paragraph suivis par un éventuel (optionnel) élément note . En suivant les règles classiques de création de dictionnaires de structures de la spécification EXI, cinq dictionnaires 100 à 104 sont construits comme illustrés par la figure 7, où l'on observe là encore de nombreuses redondances entre les différentes entrées des dictionnaires. La figure 8a représente un tableau 20 obtenu par la mise en oeuvre de la présente invention. De façon similaire au tableau des figures 3a et 3b, le nombre d'entrées est ici limité à une par type d'élément, réduisant la taille des données à mémoriser par l'encodeur ou le décodeur concerné. On observe que ce tableau 20 contient en outre des entrées correspondant aux débuts et fins de groupes, ici le groupe formé de la séquence générale et un sous-groupe 40 formé par le choix entre les éléments "subtitle" et "abstract". L'algorithme général de construction d'un tel tableau 20 représentant la structure d'un élément est décrit par la figure 9. Cet algorithme est une généralisation de l'algorithme de la figure 4. Le tableau de la figure 8a sera complété, comme illustré ci-après en lien avec la figure 10, par des valeurs permettant de calculer le nombre effectif de possibilités pour un événement suivant lors du codage ou du décodage. La construction du tableau 20 de la figure 8a comprend, lors d'une première étape E300, l'obtention de la description de l'élément, par exemple sous la forme d'un fragment de Schéma XML 1, ou sous une représentation adaptée de ce fragment de Schéma XML, par exemple un ensemble de structures informatiques. A l'étape E310, on crée le tableau 20 à partir de cette description 1 de l'élément "document". On prévoit ici une entrée 21-29 pour chaque item, élément ou attribut, listé à l'intérieur de l'élément "document" dans le Schéma XML 1, ainsi que les débuts et fins de groupes, en veillant à conserver l'ordre d'apparition de ces divers éléments. En outre une entrée EE est prévue pour représenter la fin de l'élément "document". Pour chaque entrée correspondant à un élément, on indique les nombres minimal 31 et maximal 32 d'occurrences comme définis par le 30 Schéma XML 1. A noter qu'en présence d'attributs au sens de la spécification EXI, on indique les mêmes nombres. Toutefois comme les choix pour ces nombres sont réduits, leur représentation peut être adaptée à l'aide par exemple d'un indicateur binaire: un attribut est soit obligatoire et doit apparaître une unique fois, soit optionnel et doit apparaître au plus une fois. En outre, pour chaque début de groupe, ses nombres minimal et maximal d'occurrences (du groupe) sont ajoutés. Le procédé se poursuit à l'étape E320 au cours de laquelle on calcule un nombre de possibilités associé à chaque entrée 21-29 du tableau 20, conformément aux étapes de la figure 10. Comme évoqué précédemment en lien avec les figures 3a et 3b, on calcule ici le nombre de possibilités pour chaque entrée dans le cas le plus courant, celui où le nombre minimal d'occurrences de l'entrée a déjà été atteint (le cas contraire étant facile à calculer à la volée puisqu'il vaut 1), et, le cas échéant, le nombre maximal d'occurrences n'ayant pas été atteint (dans le cas contraire, un calcul à la volée peut également être réalisé en retranchant 1 au nombre calculé ci-dessous).
Il est à noter que même dans le cas où le nombre minimal d'occurrences de l'entrée est égal au nombre maximal d'occurrences de cette entrée, ce calcul est réalisé, en supposant que le nombre minimal d'occurrences de l'entrée a été atteint mais que son nombre maximal d'occurrences n'a pas encore été atteint. En effet, ce résultat "théorique" servira de base de calcul pour le cas où le nombre maximal d'occurrences de l'entrée a été atteint. De la sorte, on dispose, dans le tableau 20, des nombres de possibilités dans la même situation théorique, ce qui permet de réaliser des traitements similaires pour toutes les entrées. La figure 10 illustre le calcul de ce nombre de possibilités d'item suivant pour une entrée correspondant à un élément contenu dans une séquence. Pour les entrées correspondant à des éléments contenus dans un groupe de type choix ou complet, le calcul du nombre de possibilités est décrit après. Pour la suite, on nomme "entrée calculée" l'entrée pour laquelle on souhaite calculer le nombre associé de possibilités suivantes.
On initialise tout d'abord l'entrée courante à rentrée calculée" et un compteur du nombre de possibilités pour l'entrée courante à la valeur "1", correspondant à la possibilité représentée par l'entrée courante elle-même. A la première étape E400, on vérifie si l'entrée suivante dans le tableau 20 de la figure 8a peut être atteinte. Si l'entrée courante est l'entrée calculée, cela consiste uniquement à vérifier s'il existe d'autres entrées après l'entrée calculée. Sinon, cela consiste à vérifier d'une part si l'entrée courante a un nombre d'occurrences minimal égal à zéro, et d'autre part s'il existe d'autres entrées après l'entrée courante. Si ce n'est pas le cas, l'algorithme se termine à l'étape E460. Dans le cas où l'entrée courante est la dernière entrée du groupe contenant l'entrée calculée, l'algorithme se termine aussi à l'étape E460. Si c'est le cas, l'algorithme sélectionne l'entrée suivante qui devient l'entrée courante. A l'étape E410, le procédé vérifie si cette nouvelle entrée courante est le début d'un groupe (un entrée de type "Start..." selon la terminologie utilisée dans le tableau de la figure 8a). Si ce n'est pas le cas, le procédé se poursuit à l'étape E420 durant laquelle le compteur du nombre de possibilités associé à l'entrée calculée est incrémenté de "1", pour prendre en compte cette entrée courante. Puis l'algorithme continue à l'étape E400. Si c'est le cas (sortie OUI à l'étape E410), on poursuit à l'étape E430 par l'ajout, au nombre de possibilités associé à l'entrée calculée, du nombre de possibilités contenues dans le groupe. Le calcul du nombre de possibilités contenues dans un groupe est décrit ci-après et est renseigné dans la colonne 36 du tableau 20 comme illustré sur la figure 8c. On poursuit à l'étape E440 en vérifiant si l'entrée suivant le groupe peut être atteinte. C'est notamment le cas si l'une des conditions suivantes est réalisée : - le nombre minimal 31 d'occurrences du groupe est zéro ; - l'ensemble des constituants du groupe est optionnel, c'est-à-dire le groupe est dit "traversable". Le calcul permettant de vérifier si un groupe est traversable est décrit ci-après et une indication correspondante est insérée dans une colonne 38 du tableau 20 comme illustré sur la figure 8c, pour réaliser rapidement l'étape E440. Si l'une de ces deux conditions est vérifiée, le procédé se poursuit à l'étape E450, durant laquelle la première entrée juste après l'entrée correspondant à la fin du groupe dans le tableau 20 devient l'entrée courante. Le procédé retourne alors à l'étape E410, de sorte à comptabiliser les autres entrées "possibles" qui sont situées après le groupe qui vient d'être traversé. Si aucune de ces conditions n'est réalisée lors de l'étape E440, le procédé se termine à l'étape E460. D'autre part, s'il n'existe aucune autre entrée après l'entrée courante, le procédé se termine à l'étape E460. A l'étape E460, le nombre de possibilités associées à l'entrée calculée a été obtenu au niveau du compteur utilisé lors de ces étapes et est mémorisé dans le tableau, notamment dans la colonne 33 des possibilités. En outre, si l'entrée correspondant à la fin du groupe auquel appartient l'entrée calculée, ici la fin de la séquence, a été atteinte (c'est-à-dire si cette entrée a été l'entrée courante pendant au moins une itération des étapes), l'entrée calculée est marquée comme pouvant atteindre la fin du groupe, dans la colonne 34. Comme précisé plus loin, cette information permet de calculer précisément le nombre de possibilités pour une entrée donnée (voir étape E510 ci-dessous). La figure 8b illustre le tableau 20 obtenu à l'issue de l'étape E460, renseignant notamment les colonnes 33 et 34 évoquées ci-dessus. Il est à noter que, pour les groupes 40 inclus dans un autre groupe, ici la séquence générale, le champ 34 indiquant si la fin du groupe général (la séquence) peut être atteinte à partir de la fin de ce groupe est aussi calculé et renseigné.
En ce qui concerne les entrées contenues dans un choix ou dans un groupe complet, aucun calcul du nombre de possibilité associé à ces entrées n'est réalisé à l'initialisation du codeur ou décodeur, car ce calcul peut être aisément réalisé dans son intégralité lors du codage ou du décodage. Ainsi, dans l'exemple précédent, aucun calcul n'est à réaliser pour les entrées SE (subtitie) et SE (abstract) . En revanche, si ce groupe avait été une séquence, un calcul des nombres de possibilités associées à chacune des entrées de cette séquence aurait été effectué. En ce qui concerne les groupes, par exemple le groupe 40, plusieurs valeurs sont calculées en référence à la figure 8c. Comme déjà mentionné ci-dessus, une première valeur est le nombre de possibilités contenues dans le groupe, ce qui correspond au nombre de possibilités pouvant survenir à l'intérieur de ce groupe à partir du début de ce groupe. Cette valeur correspond au nombre de possibilités pouvant survenir à l'intérieur de ce groupe après une entrée précédant le groupe, ou après une entrée de ce groupe lors d'une nouvelle itération de ce groupe. Cette valeur est mémorisée dans la colonne 36 de la figure 8c. Le calcul de ce nombre de possibilités dépend du type de groupe concerné.
Pour un groupe de type séquence, le nombre de possibilités contenues dans le groupe est calculé en fonction de la première entrée contenue dans ce groupe. Si la première entrée contenue dans ce groupe a un nombre minimal d'occurrences égal à 0, alors ce nombre de possibilités est calculé à l'aide du procédé de la figure 10, en prenant comme entrée calculée la première entrée. Sinon, ce nombre de possibilités est égal à 1. Lors de ce calcul, si l'entrée correspondant à la fin du groupe est atteinte, la séquence est marquée comme traversable, à l'aide d'une autre valeur, de type booléen cette fois, au niveau de la colonne 38 du tableau 20 prévue à cet effet.
De même, lors de ce calcul, chaque entrée considérée à l'étape E410 est marquée avec la valeur courante du nombre de possibilités pour la séquence. Cette valeur correspond à l'indice de l'entrée dans sa séquence et est mémorisée au niveau de la colonne 35. Cette valeur est utilisée lors du calcul effectif du nombre de possibilités associées à une entrée pour éviter de comptabiliser plusieurs fois une même entrée (étape E626 décrite ci-dessous). Dans le cas de calculs effectués conformément au procédé de la figure 10, on observe que les résultats finaux ou intermédiaires sont mémorisés à plusieurs endroits du tableau 20. On veille alors à optimiser la mise en oeuvre de ces calculs pour n'effectuer chaque calcul qu'une seule fois. Pour un groupe de type choix (groupe 40 de la figure 6), le nombre 36 de possibilités contenues dans le groupe est calculé en additionnant le nombre d'éléments contenus directement dans le groupe avec le nombre de possibilités pour chaque sous-groupe contenu directement dans le groupe choix considéré. Ce nombre de possibilités pour chaque sous-groupe contenu directement dans le groupe choix correspond à la valeur mémorisée dans la colonne 36 pour ce sous-groupe. On observe que le calcul du nombre 36 de possibilités contenues dans un groupe de type choix dépend du résultat de ce calcul pour ses sous-groupes. Par conséquence la mise en oeuvre de ces calculs est ordonnée en fonction de cette dépendance. Par ailleurs, le choix est marqué comme traversable (colonne 38) si au moins un de ses éléments ou un de ses sous-groupes a un nombre minimal d'occurrences égal à zéro. Pour un groupe de type complet, le nombre 36 de possibilités contenues dans le groupe est le nombre d'éléments contenus dans le groupe. Il est à noter qu'un groupe de type complet ne peut contenir d'autres sous-groupes.
Par ailleurs, le groupe complet est marqué comme traversable (colonne 38) si tous ses éléments ont un nombre minimal d'occurrences égal à zéro. Une autre valeur prévue pour les groupes est le nombre de possibilités suivant le groupe, mémorisée dans la colonne 37. Ce nombre de possibilités correspond au nombre de possibilités pouvant survenir après le groupe au sein de son groupe parent. Cela correspond au nombre de possibilités pouvant survenir à l'extérieur du groupe après l'utilisation d'une 35 entrée de ce groupe pour le codage ou le décodage, si les entrées du groupe suivant cette entrée sont optionnelles. Ce nombre de possibilités est calculé en fonction du type du groupe parent. Si le groupe parent n'existe pas, il y a une unique possibilité après le groupe qui correspond à l'événement de fin d'élément. Si le groupe parent est une séquence, le nombre de possibilités dépend du nombre minimal d'occurrences de l'entrée suivante. S'il n'y a aucune entrée suivante dans ce groupe parent, alors le nombre de possibilités est O. Si le nombre minimal d'occurrences de l'entrée suivante est 0, alors le nombre de possibilités est celui calculé par le procédé de la figure 10 pour cette entrée. Sinon, le nombre de possibilités correspond à cette entrée suivante, et est donc 1. Si le groupe parent est un choix le nombre de possibilités suivant le groupe au sein du groupe parent est égal à 0.
Le groupe parent ne peut être un groupe complet, car un groupe complet ne peut contenir que des éléments. Cette valeur est mémorisée dans la colonne 37. La figure 8c illustre le tableau 20 ainsi obtenu. Notamment, pour le groupe de type séquence décrivant l'ensemble de l'élément "document', on a déterminé une possibilité dans le groupe (colonne 36), une après le groupe (colonne 37), et que le groupe n'est pas traversable (colonne 38). Pour le groupe choix 40, on a déterminé deux possibilités dans le groupe (colonne 36), une après le groupe (colonne 37), et que le groupe est traversable (colonne 38). Le tableau 20 résultant d'un procédé selon l'invention est alors utilisé pour réaliser un encodage ou décodage d'un élément XML. Les figures 11 et 12 illustrent un mode de réalisation du calcul des dictionnaires de structures à partir de ce tableau 20.
Le dispositif mettant en oeuvre ce traitement présente un état courant contenant, de façon similaire au cas de la figure 5, l'entrée courante ainsi que le nombre d'occurrences du dernier événement codé, et contenant, en outre, le nombre d'occurrences pour tous les groupes contenant directement ou indirectement le dernier événement codé. En observant que les groupes sont imbriqués les uns dans les autres (dans notre exemple, le groupe choix 40 est imbriqué dans le groupe séquence "document"), on peut définir la terminologie parent/enfant selon laquelle le groupe contenant est parent du groupe enfant imbriqué. Ainsi, dans le cas de l'exemple précédent, si le dernier événement codé est SE (abstract) , l'état utilisé contient le nombre d'occurrences pour l'entrée SE (abstract) , pour le groupe choix et pour la séquence principale (groupe parent du groupe choix). De façon générale, on mémorise le nombre d'occurrences pour tous les groupes parents de l'entrée considérée dans le traitement. On commence, à l'étape E500, par une initialisation au cours de laquelle l'entrée courante est définie comme étant la première entrée du tableau 20. Un premier compteur du nombre d'occurrences du dernier événement ainsi qu'un deuxième (ou plusieurs) compteur du nombre d'occurrences pour le groupe (ou les groupes "parent") le contenant sont initialisés à "0", A l'étape E510, on calcule le nombre effectif de possibilités d'événements suivants pour l'entrée courante. Ce calcul tient compte de l'état courant. Cette étape est illustrée par la figure 12. On débute à l'étape E600 où un compteur des possibilités effectives est initialisé à 0. A l'étape E602, on détermine si l'entrée courante correspond à un 25 élément (et non un début/une fin de groupe par exemple). Si l'entrée courante correspond à un élément (sortie OUI de l'étape E602), le procédé vérifie, à l'étape E604, si le nombre minimal d'occurrences pour cet élément est atteint. Si ce n'est pas le cas (sortie NON), le compteur du nombre de 30 possibilités effectives pour l'événement suivant est mis à "1" (étape E606) : il s'agit en effet à nouveau de cette entrée courante. Il est alors mis fin au procédé à l'étape E608.
Si c'est le cas (sortie OUI de l'étape E604), on vérifie si le nombre maximal d'occurrences (32) a été atteint (étape E610). On détecte ici les cas extrêmes où l'élément courant ne peut plus être répété (nombre maximal atteint). Dans l'affirmative (sortie OUI), on décrémente le compteur du nombre de possibilités effectives de "1" à l'étape E612. On tient ainsi compte du fait que cet élément ne peut plus se répéter. Si le groupe contenant l'entrée courante est un groupe complet, l'étape E612 n'est pas réalisée. Dans la négative (sortie NON de l'étape E610) et suite à l'étape E612, on vérifie si le groupe contenant l'entrée courante est une séquence (étape E614). En effet, le nombre effectif de possibilités pour l'événement suivant dépend du groupe contenant cette entrée. Si le groupe est une séquence (sortie OUI de l'étape E614), le compteur du nombre effectif de possibilités est incrémenté du nombre de possibilités associées à l'entrée au niveau de la colonne 33 du tableau 20 (étape E616). Si le groupe n'est pas une séquence (sortie NON de l'étape E614), mais que le groupe est un choix, on ajoute 1 au nombre de possibilités (étape E617), correspondant à la possibilité que l'entrée courante soit répétée. Si le groupe n'est pas une séquence (sortie NON de l'étape E614), mais que le groupe est un groupe complet, on ajoute au nombre de possibilités le nombre d'entrées du groupe n'étant pas encore survenue (étape E617). Il est à noter que pour la gestion des groupes de type complet, l'algorithme décrit par les figures 11 et 12 mémorise l'occurrence de chacune des entrées du groupe à l'aide d'un tableau de valeur booléenne. Ce tableau permet de calculer ici le nombre d'entrées du groupe n'étant pas encore survenue. Suite aux étapes E616 et E617, on vérifie si la fin du groupe peut être atteinte. En effet, dans ce cas, d'autres possibilités peuvent être ajoutées. Si le groupe est une séquence, cette vérification est réalisée à l'aide de la valeur de la colonne 34 associée à l'entrée courante (étape E618). Si le groupe est un choix, cette vérification est toujours positive. Si le groupe est un groupe complet, cette vérification consiste à s'assurer que toutes les entrées du groupe sont déjà survenues. Dans la négative (sortie NON de l'étape E618), le traitement prend fin (étape E608). Dans l'affirmative (sortie OUI de l'étape E618), si le nombre minimal d'occurrences du groupe courant a été atteint par le deuxième compteur courant (test à l'étape E620), le compteur du nombre effectif de possibilités est incrémenté, à l'étape E622, du nombre de possibilités après le groupe (colonne 37). Puis, si le nombre maximal d'occurrences du groupe courant n'a pas été atteint par le deuxième compteur (test à l'étape E624), le compteur du nombre effectif de possibilités est incrémenté, à l'étape E626, du nombre de possibilités dans le groupe (colonne 36). Cependant, dans un tel cas pour un groupe de type séquence, il est possible que certaines entrées du groupe soient comptées deux fois : une première fois dans le nombre de possibilités correspondant directement à l'entrée courante (étape E616) et une deuxième fois dans le nombre de possibilités pour le début du groupe (étape E626). Pour éviter ce double comptage, la valeur correspondant à l'indice de l'entrée est utilisée (colonne 35). La valeur ajoutée au nombre effectif de possibilités par l'étape E626 dans le cas d'un groupe de type séquence dépend de l'indice de l'entrée considérée au sein du groupe. Si cet indice est non renseigné ou nul, alors le nombre de possibilités dans le groupe est ajouté (colonne 36). Si cet indice est non nul, alors cet indice diminué de 1 est ajouté (colonne 35).
Il est à noter que l'entrée considérée peut soit être l'entrée courante (lors de la première itération des étapes E620 à E630), soit être un groupe contenu dans le groupe courant (lors des itérations suivantes des étapes E620 à E630). En outre, si, depuis la fin de ce groupe courant, la fin de son groupe immédiatement parent peut être atteinte (test à l'étape E628, grâce à l'indication 34 mémorisée dans l'entrée, par exemple 26, de fin de groupe), les possibilités associées à ce groupe parent sont elles aussi ajoutées au compteur.
Pour ce faire, le groupe parent devient le groupe courant à l'étape E630, l'entrée considérée est le début de l'ancien groupe courant et on retourne à l'étape E620 où l'on vérifie en outre que la fin du groupe parent courant peut être atteinte (à l'aide de la colonne 34).
Dans la négative à l'étape E628, le traitement prend fin à l'étape E608. Ainsi à titre d'exemple, pour l'entrée SE (paragraph) du groupe de type séquence correspondant aux entrées 21 et 29, si une occurrence de cette entrée a déjà été rencontrée, alors le nombre effectif de possibilités est égal : - au nombre de possibilités associées à l'entrée (étape E616), c'est-à-dire 2, - augmenté du nombre de possibilités après le groupe (étape E622 car la séquence "person" a un nombre minimal d'occurrences égal à 1, donc nécessairement atteint), c'est-à-dire 1, - augmenté du nombre de possibilités dans le contenu du groupe (étape E626 car la séquence "person" a un nombre maximal d'occurrences infini), c'est-à-dire 1. Au total, il y a donc quatre possibilités effectives, ce qui correspond au dictionnaire de structures document 3 (figure 7) qui est le dictionnaire suivant sélectionné après le codage/décodage de l'élément SE (paragraph) . Si l'entrée courante est un début de groupe (sortie NON de l'étape E602), on vérifie si le nombre minimal d'occurrences pour ce groupe a été atteint ou si le groupe est traversable (test à l'étape E632).
Dans l'affirmative, on incrémente le compteur des possibilités effectives du nombre de possibilités après ce groupe (colonne 37), à l'étape E634. Dans la négative et suite à l'étape E634, on vérifie si le nombre maximal d'occurrences pour ce groupe a été atteint (test à l'étape E636).
Dans la négative de l'étape E636, on incrémente le compteur des possibilités effectives du nombre de possibilités pour ce groupe (colonne 36), à l'étape E638.
Dans l'affirmative de l'étape E636 et suite à l'étape E638, on vérifie, à l'étape E640, si le nombre minimal d'occurrences pour ce groupe a été atteint et si la fin du groupe parent peut être atteinte à partir de la fin de ce groupe, notamment à l'aide de l'indication en colonne 34 de l'entrée correspondant à la fin du groupe courant (par exemple l'entrée 26 pour le groupe choix). Dans ce cas (sortie OUI de l'étape E640), on passe à l'étape E630 de sorte à comptabiliser, lors des étapes E622 et E626, les possibilités associées aux groupes "parent'. Le traitement prend fin à l'étape E608 si le test de l'étape E640 est négatif. Ainsi, pour l'entrée Start choice 23, si aucune occurrence de ce groupe n'a déjà été rencontrée, alors le nombre effectif de possibilités est égal : - au nombre 37 de possibilités après le groupe (étape E634 car le groupe est traversable comme indiqué en colonne 38), c'est-à-dire 1, - augmenté du nombre 36 de possibilités du groupe (étape E638), c'est-à-dire 2. Au total, il y a donc 3 possibilités correspondant au dictionnaire de structures document 1 (figure 7). Si une occurrence du groupe choix a déjà été rencontrée, alors le nombre de possibilités est égal au nombre 37 de possibilités après le groupe (étape E634), c'est-à-dire 1. Il est à noter que pour déterminer l'ensemble des entrées correspondant aux possibilités pouvant être effectivement atteintes (et non plus seulement le nombre de ces possibilités), ce même algorithme est utilisé, en considérant les entrées dans leur ordre d'apparition dans le tableau. On peut ainsi identifier la position de l'entrée obtenue à l'étape E520 ci-dessous, parmi l'ensemble des possibilités, de sorte à disposer de la valeur de codage associé. On veillera cependant à conduire ces deux opérations ensemble afin de limiter le nombre d'opérations. De retour à la figure 11, on dispose en sortie de l'étape E510 du nombre effectif de possibilités d'événements suivants pour l'entrée courante. On poursuit à l'étape E520 en codant ou décodant l'événement considéré. Cette étape est similaire à l'étape E220.
Ensuite, à l'étape E530, on vérifie si d'autres événements décrivant le contenu de l'élément courant doivent être codés ou décodés. Cette étape consiste à vérifier si le dernier événement codé ou décodé est un événement "fin d'élément' EE ou non.
Si c'est le cas (sortie NON indiquant qu'il s'agit d'un événement EE), le codage ou le décodage de l'élément courant se termine à l'étape E550. Si ce n'est pas le cas (sortie OUI à l'étape E530), le traitement se poursuit à l'étape E540 en mettant à jour les paramètres courants utilisés, après quoi le traitement retourne à l'étape E510.
Pour la mise à jour des paramètres courants, l'entrée courante devient celle correspondant au dernier événement codé ou décodé, c'est-à-dire la dernière entrée utilisée. De plus, le premier compteur du nombre d'occurrences du dernier événement est mis à jour: il est incrémenté de "1" si l'entrée courante n'a pas changé, et est égal à "1" si l'entrée courante a changé. Pour chaque groupe contenant la nouvelle entrée courante, mais ne contenant pas l'entrée courante précédente, le ou les deuxième compteurs du nombre d'occurrences correspondant à ce(s) groupe(s) est (sont) initialisé(s) à "1". En outre, si le nombre maximal d'occurrences pour cette nouvelle entrée courante est atteint, alors la nouvelle entrée courante est l'entrée suivante dans le tableau 20 et le nombre d'occurrences du dernier événement est remis à zéro. Si la nouvelle entrée courante est la fin d'un groupe, et que son nombre maximal d'occurrences n'est pas atteint, alors le "deuxième" compteur 25 du nombre d'occurrences de ce groupe est incrémenté de "1". Sinon, si le nombre maximal d'occurrences de ce groupe est atteint, l'entrée courante devient l'entrée suivante, le comptage du nombre d'occurrences de ce groupe est supprimé, et la vérification de fin de groupe est de nouveau réalisée. 30 Si, enfin, l'entrée courante est la fin d'un groupe, l'entrée courante devient l'entrée correspondant au début de ce même groupe.
Comme illustré ci-dessus, la présente invention permet de configurer un encodeur ou un décodeur à l'aide d'un tableau 20 contenant un nombre réduit d'informations par rapport aux dictionnaires de structure de l'art antérieur. De plus, ces informations sont suffisantes pour permettre à l'encodeur ou au décodeur de réaliser les opérations d'encodage ou de décodage à faible coût. Notamment, l'invention permet de réaliser une construction partielle et temporaire des dictionnaires de structure, de sorte à réduire les ressources nécessaires aux traitements. Ainsi, l'invention peut être aisément mise en oeuvre dans des équipements électroniques disposant de ressources limitées, par exemple un appareil photo ou un assistant numérique personnel. Comme évoqué lors de la description "générale" en lien avec les figures 6 à 12, le procédé de la figure 4 peut également être utilisé pour créer des tableaux 20 décrivant le contenu de plusieurs éléments, y compris des éléments imbriqués.
De même les traitements de la figure 5 peuvent être utilisés pour coder ou décoder le contenu de plusieurs éléments, en particulier de manière récursive pour coder ou décoder le contenu d'éléments imbriqués. Cet usage correspond à la méthode de codage ou de décodage utilisée par le format EXI pour les éléments imbriqués.
Par ailleurs, comme également évoqué rapidement ci-dessus, la présente invention s'applique aux cas où des éléments comportent des attributs. Dans ce cas, il suffit de considérer que le contenu de l'élément est une séquence d'attributs et de sous-éléments (ces derniers formant donc un sous-groupe). Lors de l'ajout des attributs dans le tableau 20, il convient cependant de les trier au préalable selon l'ordre lexicographique défini par la spécification EXI afin de déterminer sans erreur la bonne valeur de codage associée. De même, les traitements décrits peuvent être adaptés aux cas d'éléments pouvant contenir du texte. Dans ce cas, lors de l'étape E210 ou de l'étape E510, le nombre de possibilités est augmenté de 1. La dernière possibilité, ou l'avant dernière si un événement de fin d'élément, EE peut survenir, dans l'ordre à considérer pour déterminer la valeur de codage associée, correspond à un événement de type contenu textuel.
Si la prise en compte de contenu textuel est combinée à la prise en compte d'attributs, le nombre de possibilités n'est augmenté de 1 que quand un événement de type textuel est autorisé, c'est-à-dire quand l'ensemble des attributs obligatoires a déjà été codé ou décodé.
Par ailleurs, ces traitements sont également adaptés aux cas où des déviations par rapport au Schéma XML sont acceptées (mécanisme défini dans la spécification EXI selon lequel des items ne correspondant pas au Schéma XML peuvent néanmoins être codés en utilisant des entrées génériques et un codage auto-descriptif). Dans un tel cas, le calcul du nombre de possibilités réalisé lors de l'étape E210 ou de l'étape E510 est modifié pour prendre en compte les entrées ajoutées pour permettre de coder ou de décoder ces déviations. Ces entrées ajoutées sont celles définis dans la spécification EXI. On a illustré le cas simple ci-dessus de la figure 4 et de la figure 5 à l'aide d'un groupe de type séquence. Les traitements correspondants sont néanmoins également adaptés lorsque le contenu de l'élément est un choix entre un ensemble d'éléments. Dans ce cas, le calcul des possibilités réalisé par l'algorithme de la figure 4 est modifié. Tout d'abord, une entrée est ajoutée avant le groupe choix, pour représenter le début de ce groupe et l'ensemble des possibilités qu'il contient. Pour cette entrée, le nombre de possibilités mémorisé dans le tableau 20 au niveau du champ 36 est le nombre de choix contenu dans le groupe. Pour les autres entrées correspondant à chacun des choix, le nombre de possibilités mémorisé dans le tableau 20 est 1, par exemple dans le champ 33 (non rempli dans la figure 8c.
D'autre part, l'étape E210 de calcul du nombre de possibilités est légèrement modifiée : - quand aucun événement correspondant à l'un des éléments contenu dans le choix n'a été codé ou décodé, l'entrée courante est celle correspondant au début du groupe choix. Le nombre de possibilités est égal à celui mémorisé dans le tableau 20, ce qui correspondant au nombre d'éléments contenus dans le choix. Ce nombre est augmenté de 1 s'il est possible de terminer directement l'élément faisant l'objet de la description par le tableau 20 (c'est-à-dire que l'événement "fin d'élément" EE est une possibilité) ; - quand au moins un événement correspondant à l'un des éléments contenus dans le choix a déjà été codé ou décodé, le nombre de possibilités est calculé à partir du nombre (champ 33) mémorisé dans le tableau 20. Ce nombre est modifié en fonction de certaines conditions : o si l'événement ne peut plus être répété, car son nombre maximal d'occurrences a été atteint, alors le nombre de possibilités est diminué de 1 ; o si le groupe peut être répété en raison du nombre maximal d'occurrences du choix n'ayant pas été atteint, le nombre de possibilités est alors augmenté d'une valeur correspondant au nombre d'éléments dans le groupe ; o si la fin de l'élément décrit peut être atteinte car le nombre minimal d'occurrences de l'élément correspondant à l'événement a été atteint et le nombre minimal d'occurrences du choix a été atteint, alors une possibilité est ajoutée ; o si un contenu textuel peut apparaître car l'élément décrit possède un contenu mixte, alors une possibilité est également ajoutée. Ainsi, pour calculer le nombre de possibilités dans ce cas, on vérifie si chacune des possibilités décrites est réalisable. Chacune de ces possibilités modifie le nombre de possibilités mémorisé dans le tableau 20. Cependant, la première et la deuxième possibilité sont exclusives : si la deuxième possibilité est réalisable, la première n'est pas prise en compte. On peut noter qu'un contenu de type choix s'adapte facilement à la présence d'attributs : l'ensemble des attributs est traité comme une séquence. Quand les attributs obligatoires ont tous été codés ou décodés, alors le nombre de possibilités doit prendre en compte celles correspondant au contenu du choix. En référence à la figure 13, il est maintenant décrit à titre d'exemple une configuration matérielle particulière d'un dispositif de codage ou décodage d'un document structuré apte à une mise en oeuvre du procédé selon l'invention.
Un dispositif de traitement d'information 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. 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 nécessaires à la mise en oeuvre de l'invention ; - 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 63 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 52 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 codage ou décodage d'un document structuré, é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. Le code exécutable permettant au dispositif de codage ou décodage d'un document structuré 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é.
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.
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).
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 3 à 6 et 8 à 12, pour mettre en oeuvre le procédé objet de la présente invention et constituer le dispositif objet de la présente invention. Les exemples qui précèdent ne sont que des modes de réalisation de l'invention qui ne s'y limite pas. Notamment, bien que la description ci-dessus présente des traitements réalisés sur un fragment de Schéma XML 1 correspondant à un élément, elle s'applique également un schéma XML tout entier. On notera cependant qu'un traitement élément par élément est bien adapté à un codage tel que celui décrit dans la spécification EXI, où les éléments sont traités un par un en fonction de leur organisation.

Claims (22)

  1. REVENDICATIONS1. Procédé de codage ou décodage d'un document structuré d'items, comprenant une étape de configuration d'un encodeur ou décodeur incluant l'obtention de données (1) décrivant un modèle de structure de documents et le stockage desdites données sous forme d'enregistrements (21-29, 21'-24') destinés à être utilisés par l'encodeur ou le décodeur pour coder ou décoder des items d'un document structuré, caractérisé en ce qu'il comprend les étapes suivantes : - le calcul (E140, E420, E430) d'un nombre d'items (33, 36, 37), dits possibles, susceptibles de succéder, selon le modèle de structure (1), à un item dudit modèle ; - le stockage dudit nombre d'items possibles (33, 36, 37) dans un enregistrement (21-29, 21'-24') associé audit item.
  2. 2. Procédé selon la revendication 1, dans lequel l'enregistrement (21-29, 21'-24') associé à l'item comprend les nombres minimal (31) et maximal (32) d'occurrences dudit item définis par le modèle de structure (1).
  3. 3. Procédé selon la revendication précédente, dans lequel le nombre d'items possibles (33, 36, 37) pour l'item est calculé à l'aide des nombres minimal (31) d'occurrences des enregistrements d'une pluralité d'autres items.
  4. 4. Procédé selon l'une des revendications précédentes, dans lequel le nombre d'items possibles (33, 36, 37) de l'enregistrement renseigne le nombre, dit théorique, d'items possibles, selon le modèle de structure (1), dans le cas où le nombre minimal (31) d'occurrences de l'item de l'enregistrement a été atteint et le nombre maximal (32) d'occurrences de l'item de l'enregistrement n'a pas été atteint.
  5. 5. Procédé selon la revendication précédente, comprenant une seconde étape de calcul (E210, E510) d'un nombre, dit effectif, d'items possibles pour un item courant précédant un item à coder ou décoder, le nombre effectif étant calculé à partir dudit nombre théorique d'items possibles (33) de l'enregistrement (21-29, 21'-24') associé à l'item courant et du nombrecourant d'occurrences successives de l'item courant dans le document à coder ou décoder.
  6. 6. Procédé selon la revendication précédente, comprenant, lors de la seconde étape de calcul (E210, E510) du nombre effectif d'items possibles, une étape d'ajustement dudit nombre effectif d'items possibles en fonction de la présence de valeurs textuels ou d'items non décrits par le modèle de structure du document.
  7. 7. Procédé selon l'une des revendications précédentes, comprenant une étape de calcul d'une information de codage ou décodage pour coder ou décoder un item, à l'aide dudit nombre d'items possibles associé à l'item courant précédant l'item à coder ou décoder.
  8. 8. Procédé selon la revendication précédente lorsqu'elle dépend de la revendication 5, dans lequel on détermine le nombre de bits de l'information de codage en fonction dudit nombre effectif d'items possibles.
  9. 9. Procédé selon l'une des revendications précédentes, dans lequel lesdites données obtenues (1) sont stockées sous forme d'un seul enregistrement (21-29, 21'-24') pour chaque item du modèle de structure.
  10. 10. Procédé selon l'une des revendications précédentes, dans lequel lesdits enregistrements (21-29, 21'-24') sont mémorisés dans l'ordre d'apparition des items associés au sein des données de description (1).
  11. 11. Procédé selon la revendication précédente, comprenant la détermination (E130) de l'item possible susceptible de succéder à un item donné, qui est le plus éloigné dudit item donné dans l'ordre d'apparition au sein des données de description (1), et pour un item suivant ledit item donné, ledit nombre d'items possibles (33) est calculé (E140) en fonction du nombre d'items séparant l'item suivant et ledit item le plus éloigné.
  12. 12. Procédé selon l'une des revendications précédentes, dans lequel lesdites données de description (1) décrivent au moins un groupe (40) d'items au sein duquel est imbriqué au moins un autre groupe d'items, un groupe (40) d'items décrivant la structure des items constituant un élément,et au moins un desdits enregistrements (23, 26) est associé à chaque groupe (40) d'items et renseigne les nombres minimal (31) et maximal (32) d'occurrences du groupe tels que définis par le modèle de structure (1).
  13. 13. Procédé selon la revendication précédente, dans lequel l'au moins un enregistrement (23, 26) associé à un groupe (40) renseigne le nombre d'items possibles (36) susceptibles de succéder, dans ledit groupe et selon le modèle de structure (1), à un item précédant le groupe ou à un item dudit groupe lors d'une itération de ce groupe.
  14. 14. Procédé selon la revendication 12 ou 13, dans lequel l'au moins un enregistrement (23, 26) associé à un groupe (40) renseigne le nombre d'items possibles (37) susceptibles de succéder, à l'extérieur du groupe et selon le modèle de structure (1), à un item dudit groupe.
  15. 15. Procédé selon l'une des revendications 12 à 14, dans lequel l'au moins un enregistrement (23, 26) associé à un groupe (40) renseigne si l'ensemble des items du groupe est optionnel ou non (38).
  16. 16. Procédé selon l'une des revendications 12 à 15, dans lequel un enregistrement (22, 27, 28) de chaque item d'un premier groupe et l'au moins un enregistrement (23, 26) associé à un groupe (40) imbriqué dans ledit premier groupe comprennent une indication de fin de groupe (34) indiquant si un item extérieur audit premier groupe est un item possible pour succéder audit item (22, 27, 28) ou audit groupe imbriqué (40), selon le cas.
  17. 17. Procédé selon l'une des revendications 12 à 16, dans lequel un enregistrement (22, 27, 28) de chaque item comprend ledit nombre d'items possibles (33), susceptibles de succéder, selon le modèle de structure, à cet item à l'intérieur du groupe comprenant l'item, ledit calcul (E140, E420, E430) dudit nombre d'items possibles à l'intérieur du groupe comprenant : - le parcours desdites données de description dans l'ordre d'apparition des items correspondant audit groupe comprenant ledit item associé à l'enregistrement, et - tant qu'un item, un groupe ou l'ensemble des items d'un groupe est optionnel lors du parcours, l'incrémentation d'un compteur dudit nombred'items possibles de '1' ou l'augmentation dudit compteur d'un nombre d'items possibles au sein dudit groupe, selon le cas.
  18. 18. Procédé selon l'ensemble des revendications 12 à 17, comprenant en outre une étape de calcul (E510) d'un nombre effectif d'items possibles pour un item courant précédant un item à coder ou décoder, qui est fonction : - des nombres minimal (31) et maximal (32) d'occurrences, du nombre d'items possibles (33) à l'intérieur du groupe et de ladite indication (34) de fin de groupe, associés à l'item courant, et - des nombres minimal (31) et maximal (32) d'occurrences, desdits nombres d'items possibles (36, 37) susceptibles de succéder à un item à l'intérieur du groupe ou après le groupe, et de ladite indication (34) de fin de groupe, pour les groupes (40) imbriquant l'item courant.
  19. 19. Dispositif de codage ou décodage d'un document structuré d'items, comprenant des moyens de configuration aptes à obtenir des données (1) décrivant un modèle de structure de documents et à stocker lesdites données sous forme d'enregistrements (21-29, 21'-24') destinées à être utilisées par le dispositif pour coder ou décoder des items d'un document structuré, caractérisé en ce qu'il comprend : - des moyens de calcul d'un nombre d'items (33, 36, 37), dits possibles, susceptibles de succéder, selon le modèle de structure (1), à un item dudit modèle ; - ledit nombre d'items possibles (33, 36, 37) étant stocké dans un enregistrement (21-29, 21'-24') associé audit item.
  20. 20. Structure de données de représentation d'un fichier de description de structure de documents, comprenant une pluralité d'entrées correspondant à une pluralité d'items définis dans ledit fichier, dans laquelle une entrée associée à un item comprend : - les nombres minimal et maximal d'occurrences dudit item définies par le modèle de structure,- un nombre d'items, dits possibles, susceptibles de succéder, selon le modèle de structure, audit item associé à l'entrée.
  21. 21. 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é de codage ou décodage conforme à l'une quelconque des revendications 1 à 18, lorsque le programme est chargé et exécuté par le système informatique.
  22. 22. Produit programme d'ordinateur lisible par un microprocesseur, comprenant des portions de code logiciel adaptées à mettre en oeuvre le procédé de codage ou décodage selon l'une quelconque des revendications 1 à 18, lorsqu'il est chargé et exécuté par le microprocesseur.
FR0951719A 2009-03-18 2009-03-18 Procede de codage ou decodage d'un document structure a l'aide d'un schema xml, dispositif et structure de donnees associes Withdrawn FR2943441A1 (fr)

Priority Applications (3)

Application Number Priority Date Filing Date Title
FR0951719A FR2943441A1 (fr) 2009-03-18 2009-03-18 Procede de codage ou decodage d'un document structure a l'aide d'un schema xml, dispositif et structure de donnees associes
EP10290109.7A EP2230608B1 (fr) 2009-03-18 2010-03-04 Procédé de codage ou de décodage d'un document structuré à l'aide d'un schéma XML, et dispositif et structure de données associés
US12/726,443 US8972851B2 (en) 2009-03-18 2010-03-18 Method of coding or decoding a structured document by means of an XML schema, and the associated device and data structure

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR0951719A FR2943441A1 (fr) 2009-03-18 2009-03-18 Procede de codage ou decodage d'un document structure a l'aide d'un schema xml, dispositif et structure de donnees associes

Publications (1)

Publication Number Publication Date
FR2943441A1 true FR2943441A1 (fr) 2010-09-24

Family

ID=41198545

Family Applications (1)

Application Number Title Priority Date Filing Date
FR0951719A Withdrawn FR2943441A1 (fr) 2009-03-18 2009-03-18 Procede de codage ou decodage d'un document structure a l'aide d'un schema xml, dispositif et structure de donnees associes

Country Status (3)

Country Link
US (1) US8972851B2 (fr)
EP (1) EP2230608B1 (fr)
FR (1) FR2943441A1 (fr)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2278550B1 (fr) * 2009-06-17 2013-08-14 Canon Kabushiki Kaisha Procédé de codage et décodage d'une séquence de chemin graphique dans un schéma à niveaux
CN102096706B (zh) * 2011-01-05 2013-03-06 北京大学 一种变步长xml编码方法
US20150312298A1 (en) * 2011-03-24 2015-10-29 Kevin J. O'Keefe Method and system for information exchange and processing
US10019418B2 (en) * 2012-07-20 2018-07-10 Fujitsu Limited Efficient XML interchange profile stream decoding
US8698657B2 (en) 2012-09-10 2014-04-15 Canon Kabushiki Kaisha Methods and systems for compressing and decompressing data
JP2017126185A (ja) * 2016-01-13 2017-07-20 富士通株式会社 符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法および復号化装置
US11711526B2 (en) 2018-04-05 2023-07-25 Canon Kabushiki Kaisha Method and apparatus for encapsulating images or sequences of images with proprietary information in a file

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030018466A1 (en) * 2001-02-02 2003-01-23 International Business Machines Corporation XML data encoding and decoding

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7590644B2 (en) * 1999-12-21 2009-09-15 International Business Machine Corporation Method and apparatus of streaming data transformation using code generator and translator
US6606620B1 (en) * 2000-07-24 2003-08-12 International Business Machines Corporation Method and system for classifying semi-structured documents
AUPR063400A0 (en) * 2000-10-06 2000-11-02 Canon Kabushiki Kaisha Xml encoding scheme
FR2820228B1 (fr) * 2001-01-30 2004-03-12 Expway Procede de codage et de decodage d'un chemin dans l'arborescence d'un document structure
AU2002253002B2 (en) * 2001-02-05 2005-03-17 Expway Method and system for compressing structured descriptions of documents
US7080318B2 (en) * 2001-02-28 2006-07-18 Koninklijke Philips Electronics N.V. Schema, syntactic analysis method and method of generating a bit stream based on a schema
US7281206B2 (en) * 2001-11-16 2007-10-09 Timebase Pty Limited Maintenance of a markup language document in a database
US20030196168A1 (en) * 2002-04-10 2003-10-16 Koninklijke Philips Electronics N.V. Method and apparatus for modeling extensible markup language (XML) applications using the unified modeling language (UML)
US7158990B1 (en) * 2002-05-31 2007-01-02 Oracle International Corporation Methods and apparatus for data conversion
US7669120B2 (en) * 2002-06-21 2010-02-23 Microsoft Corporation Method and system for encoding a mark-up language document
US8024353B2 (en) * 2005-02-11 2011-09-20 Fujitsu Limited Method and system for sequentially accessing compiled schema
US7565339B2 (en) 2006-03-31 2009-07-21 Agiledelta, Inc. Knowledge based encoding of data
FR2907567B1 (fr) * 2006-10-23 2008-12-26 Canon Kk Procede et dispositif de generation de motifs de reference a partir d'un document ecrit en langage de balisage et procedes et dispositifs de codage et de decodage associes.
US7886223B2 (en) * 2006-11-17 2011-02-08 International Business Machines Corporation Generating a statistical tree for encoding/decoding an XML document
FR2909198B1 (fr) * 2006-11-24 2010-11-26 Canon Kk Procede et dispositif de filtrage d'elements d'un document structure a partir d'une expression.
FR2913274A1 (fr) * 2007-03-02 2008-09-05 Canon Kk Procede et dispositif de codage de document et procede et dispositif de decodage de document.
FR2914759B1 (fr) * 2007-04-03 2009-06-05 Canon Kk Procede et dispositif de codage d'un document hierarchise
US20080320031A1 (en) * 2007-06-19 2008-12-25 C/O Canon Kabushiki Kaisha Method and device for analyzing an expression to evaluate
US8572161B2 (en) * 2008-03-12 2013-10-29 Oracle International Corporation Simplifying synchronization of copies of same data used by multiple applications
FR2929778B1 (fr) * 2008-04-07 2012-05-04 Canon Kk Procedes et dispositifs de codage et de decodage binaire iteratif pour documents de type xml.
US7925643B2 (en) * 2008-06-08 2011-04-12 International Business Machines Corporation Encoding and decoding of XML document using statistical tree representing XSD defining XML document
FR2933514B1 (fr) * 2008-07-02 2012-10-19 Canon Kk Procedes et dispositifs de codage et de decodage par similarites pour documents de type xml
FR2933793B1 (fr) * 2008-07-11 2013-07-05 Canon Kk Procedes de codage et de decodage, par referencement, de valeurs dans un document structure, et systemes associes.
FR2936623B1 (fr) * 2008-09-30 2011-03-04 Canon Kk Procede de codage d'un document structure et de decodage, dispositifs correspondants

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030018466A1 (en) * 2001-02-02 2003-01-23 International Business Machines Corporation XML data encoding and decoding

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
CHRISTOPHER LEAGUE ET AL: "Type-Based Compression of XML Data", 1 March 2007, DATA COMPRESSION CONFERENCE, 2007. DCC '07, IEEE, PI, PAGE(S) 273 - 282, ISBN: 978-0-7695-2791-8, XP031073807 *
SCHNEIDER J ET AL: "Efficient XML Interchange (EXI) Format 1.0", 16 July 2007, XP002458708 *
TOMAN V: "Syntactical Compression of XML Data", 1 June 2004, ADVANCED INFORMATION SYSTEMS ENGINEERING. INTERNATIONALCONFERENCE, CAISE, XX, XX, PAGE(S) 1 - 12, XP002454586 *
WILFRED NG ET AL: "Comparative Analysis of XML Compression Technologies", WORLD WIDE WEB ; INTERNET AND WEB INFORMATION SYSTEMS, KLUWER ACADEMIC PUBLISHERS, DO, vol. 9, no. 1, 1 March 2006 (2006-03-01), pages 5 - 33, XP019216855, ISSN: 1573-1413 *

Also Published As

Publication number Publication date
EP2230608A1 (fr) 2010-09-22
EP2230608B1 (fr) 2015-02-25
US20100241949A1 (en) 2010-09-23
US8972851B2 (en) 2015-03-03

Similar Documents

Publication Publication Date Title
FR2943441A1 (fr) Procede de codage ou decodage d&#39;un document structure a l&#39;aide d&#39;un schema xml, dispositif et structure de donnees associes
FR2936623A1 (fr) Procede de codage d&#39;un document structure et de decodage, dispositifs correspondants
FR2926378A1 (fr) Procede et dispositif de traitement pour l&#39;encodage d&#39;un document de donnees hierarchisees
FR2939535A1 (fr) Procede et systeme de traitement pour la configuration d&#39;un processseur exi
FR2924244A1 (fr) Procede et dispositif d&#39;encodage et de decodage d&#39;information
FR2933793A1 (fr) Procedes de codage et de decodage, par referencement, de valeurs dans un document structure, et systemes associes.
FR2914759A1 (fr) Procede et dispositif de codage d&#39;un document hierarchise
FR2945363A1 (fr) Procede et dispositif de codage d&#39;un document structure
FR2909198A1 (fr) Procede et disositif de filtrage d&#39;elements d&#39;un document structure a partir d&#39;une expression.
FR2927712A1 (fr) Procede et dispositif d&#39;acces a une production d&#39;une grammaire pour le traitement d&#39;un document de donnees hierarchisees.
FR2930660A1 (fr) Procede d&#39;acces a une partie ou de modification d&#39;une partie d&#39;un document xml binaire, dispositifs associes.
FR2919400A1 (fr) Procede et dispositif d&#39;encodage d&#39;un document structure et procede et dispositif de decodage d&#39;un document ainsi encode.
FR2895813A1 (fr) Procede et dispositif d&#39;aide a la construction d&#39;une arborescence de groupe de documents electroniques
WO2006040473A2 (fr) Dispositif de traitement de donnees a definition formelle
FR2901037A1 (fr) Procede et dispositif de generation de motifs structurels de reference aptes a representer des donnees hierarchisees
FR2931272A1 (fr) Procede d&#39;import export de donnees d&#39;une base de donnees
FR2954983A1 (fr) Procede et dispositif de codage d&#39;un document structure memorise sous forme d&#39;arbre dom
FR2941071A1 (fr) Procede et systeme de configuration d&#39;un processeur exi
FR3104298A1 (fr) Machine à dire le droit et particulièrement dédiée à l’accessibilité numérique d’états du droit par auto-application continue de procédés relatifs aux normes, que ladite machine équipée d’un dispositif d’accessibilité juridique, disposant d’un point d’accès, met en œuvre.
FR2959080A1 (fr) Procede et dispositif de codage de donnees structurees a l&#39;aide d&#39;une expression xpath
FR2906382A1 (fr) Procedes et dispositifs pour optimiser le traitement xml
FR2951038A1 (fr) Procede et dispositif associe de decodage d&#39;un flux binaire correspondant a un document structure code
FR2913275A1 (fr) Procede et dispositif de codage d&#39;un document et procede et dispositif de decodage d&#39;un document.
FR3060800A1 (fr) Procede et dispositif d&#39;indexation automatique d&#39;un document textuel
FR2941803A1 (fr) Procede de transcodage d&#39;un document code, et dispositif associe

Legal Events

Date Code Title Description
ST Notification of lapse

Effective date: 20101130