FR 2821458 A1 20020830 FR 0102764 A 20010228 DESCRIPTION Domaine de l'invention La présente invention concerne un procédé d'analyse syntaxique d'un flux binaire contenant des données qui ont une structure et un contenu conformes à un certain format, pour générer une représentation arborescente dudit flux. Elle concerne aussi un procédé de génération d'un flux binaire conforme à un certain format, à partir d'un document qui est une représentation arborescente dudit flux binaire et qui contient des données, notamment des données importées en utilisant un certain mode d'importation. Elle concerne aussi un schéma définissant un ou plusieurs type (s) de données susceptible (s) d'avoir une ou plusieurs facette (s), et comportant une pluralité d'éléments pour lesquels il décrit un nom, un type de données, une imbrication, un ordre et un nombre d'occurrence (s) prédéfinis ou quelconques, l'occurrence d'un élément étant obligatoire ou optionnelle. L'invention concerne également des programmes d'ordinateur pour la mise en oeuvre de tels procédés, une unité de traitement qui contient des moyens de stockage d'un tel schéma et d'un ou de tels programmes d'ordinateur, ainsi qu'un système de transmission qui comporte au moins une entité source et une entité destination, ladite entité source contenant des moyens de stockage d'un tel schéma et d'un ou de tels programmes. L'invention a des applications dans le domaine de l'édition, déjà modification, de la fusion de contenu. Un exemple d'application de l'invention est l'adaptation d'un contenu à transmettre à un destinataire en fonction du profile de l'utilisateur (écran, capacité de calcul, capacité de stockage, liaison utilisée pour la transmission...). Une telle adaptation permet notamment d'éviter de transmettre inutilement des données qui ne pourront pas être utilisées par le destinataire, et donc d'économiser de la bande passante. Arrière plan technoloqique de l'invention A cet égard, la demande de brevet français no 0101530 déposée le 05. 02. 2001 par la société Koninklijke Philips Electronics N. V. a déjà décrit un procédé de génération d'un fichier ayant certaines caractéristiques, à partir d'un document de base écrit dans un langage de balisage et décrivant un fichier progressif de base, ledit procédé comportant une étape de transformation pour générer un document transformé en appliquant au document de base une transformation prédéfinie qui est fonction desdites caractéristiques, le fichier ayant lesdites caractéristiques étant généré à partir du document transformé. Ce procédé consiste à effectuer les transformations nécessaires sur un document de base dans lequel la structure du fichier progressif est apparente. Il permet d'éviter d'avoir à décoder le fichier progressif de base pour le ré-encoder différemment. Toutefois ce procédé de génération de fichier implique de générer un document de base qui décrit le fichier progressif de base, puis de générer un autre fichier à partir du document transformé. Résumé de l'invention La présente invention a pour but de proposer une méthode automatique et générique pour effectuer de telles opérations. Pour cela, l'invention consiste notamment à proposer un nouveau genre de schéma qui permet de décrire un format de codage de façon générique. Un schéma selon l'invention définit un ou plusieurs type (s) de données susceptible (s) d'avoir une ou plusieurs facette (s). Il comporte une pluralité d'éléments pour lesquels il décrit un nom, un type de données, une imbrication, un ordre et un nombre d'occurrence (s) prédéfinis ou quelconques, l'occurrence d'un élément étant obligatoire ou optionnelle. Et il est caractérisé en ce qui) a au moins l'une des caractéristiques suivantes : - il définit un type de données qui correspond à des segments binaires de longueur indéfinie et qui a au moins une facette relative à un mode d'importation de données, et optionnellement une facette relative à un drapeau de fin de segment binaire, - il définit un ou plusieurs types de données qui correspondent à des mots binaires de longueur (s) prédéfinie (s) et qui ont au moins une facette relative à ladite longueur et, optionnellement une facette relative à des bits de remplissage contenus dans lesdits mots binaires, - il définit une ou plusieurs variable (s) constituée (s) par un chemin d'accès à des données et il comporte un ou plusieurs branchement (s) conditionnel (s) pour décrire différentes structures ou contenus possibles en fonction de la valeur de la ou desdites variables. Un procédé selon l'invention d'analyse syntaxique d'un flux binaire contenant des données qui ont une structure et un contenu conforme à un certain format, pour générer une représentation arborescente dudit flux, est caractérisé en ce que ledit procédé consiste à utiliser un schéma qui, pour décrire ledit format de façon générique : a) définit un ou plusieurs type (s) de données, susceptible (s) de contenir une ou plusieurs facette (s), dont notamment : - lorsque ledit format utilise des mots binaires de longueur (s) prédéfinie (s), un ou plusieurs types de données correspondant aux dits mots binaires de longueur (s) prédéfinie (s), ayant au moins une facette relative à ladite longueur et, lorsque lesdits mots binaires de longueur (s) prédéfinie (s) sont susceptibles de contenir un ou plusieurs bit (s) de remplissage, une facette relative aux dits bits de remplissage, - lorsque ledit format utilise des segments binaires de longueur indéfinie ayant un contenu destiné à être importé dans ladite représentation en utilisant un certain mode d'importation, un type de données correspondant aux dits segments binaires, ayant au moins une facette relative audit mode d'importation et, lorsque lesdits segments binaires sont délimités par un drapeau de fin, une facette relative audit drapeau de fin, b) comporte une pluralité d'éléments pour lesquels il décrit un nom, un type de données, une imbrication, un ordre et un nombre d'occurrence (s) prédéfinis ou quelconques, l'occurrence d'un élément étant obligatoire ou optionnelle, c) lorsque ledit format prévoit que des données situées en amont dans ledit flux binaire informent sur la structure ou le contenu de la suite dudit flux binaire, - définit une ou plusieurs variable (s) constituée (s) par-un chemin d'accès aux dites données situées en amont, dans ladite représentation arborescente, - et comporte un ou plusieurs branchement (s) conditionnel (s) pour décrire les différentes structures ou contenus possibles en fonction de la valeur de la ou desdites variables, ladite représentation arborescente étant une instance dudit schéma. L'invention consiste donc à fournir un outil qui permet de décrire un format de façon générique dans un schéma. Elle consiste ensuite à utiliser un tel schéma pour analyser la syntaxe d'un flux binaire conforme audit format afin de générer un document qui représente ledit flux et qui est une instance dudit schéma. Le schéma spécifie les différents types de données susceptibles d'être contenues dans un flux binaire conforme audit format, ainsi que la façon d'inclure ces données dans le document final. Les types de données spécifiés dans le schéma, et les règles d'inclusion dans le document final dépendent du format considéré. A titre d'exemple, lorsque le format considéré est le format JPEG2000 (norme ISO/IEC FCD15444-1), ledit schéma : - définit plusieurs types de données qui correspondent à mots binaires de longueurs prédéfinies susceptibles de comporter des bits de remplissage, et qui ont une facette relative à ladite longueur et une ou plusieurs facette (s) relative (s) aux dits bits de remplissage, - définit un type de données qui correspond à des segments binaires de longueur indéfinie, délimités par un drapeau de fin et ayant un contenu destiné à être importé dans ladite représentation en utilisant un certain mode d'importation, et qui a une facette relative à un mode d'importation et une facette relative audit drapeau de fin, - définit une ou plusieurs variable (s) constituée (s) par un chemin d'accès, dans ladite représentation arborescente, à des données situées en amont dans ledit flux binaire et qui informent sur la structure ou le contenu de la suite dudit flux binaire, - et comporte un ou plusieurs branchement (s) conditionnel (s) pour décrire les différentes structures ou contenus possibles en fonction de la valeur de la ou desdites variables. Un procédé selon l'invention de génération d'un flux binaire conforme à un certain format, à partir d'un document qui est une représentation arborescente dudit flux binaire et qui contient des données, notamment des données importées en utilisant un certain mode d'importation, est caractérisé en ce qui) consiste à utiliser un schéma qui, pour décrire ledit format le façon générique : a) définit un ou plusieurs type (s) de données susceptible (s) d'avoir une ou plusieurs facette (s), notamment : - un type de données correspondant à des segments binaires de longueur indéfinie ayant au moins une facette relative audit mode d'importation, - et, lorsque ledit format utilise des mots binaires de longueur (s) prédéfinie (s), un ou plusieurs types de données correspondant aux dits mots binaires de longueur (s) prédéfinie (s) ayant au moins une facette relative à ladite longueur, et lorsque lesdits mots binaires contiennent un ou plusieurs bit (s) de remplissage, une facette relative aux dits bits de remplissage, b) comporte une pluralité d'éléments pour lesquels il décrit un nom, un type de données, une imbrication, un ordre et un nombre d'occurrence (s) prédéfinis ou quelconques, l'occurrence d'un élément étant obligatoire ou optionnelle, c) lorsque ledit format prévoit que des données situées en amont dans ledit flux binaire informent sur la structure ou le contenu de la suite dudit flux binaire : - définit une ou plusieurs variable (s) constituée (s) par un chemin d'accès aux dites données situées en amont, dans ladite représentation arborescente, - et comporte un ou plusieurs branchement (s) conditionnel (s) pour décrire les différentes structures ou contenus possibles en fonction de la valeur de la ou desdites variables, ledit procédé consistant à lire en parallèle ledit document et ledit schéma pour déterminer le type des données contenues dans ledit document, à coder lesdites données en fonction du type déterminé, et à constituer un flux binaire à partir des données codées. L'invention consiste donc aussi à utiliser un schéma du type décrit plus haut pour générer un flux binaire à partir d'un document qui le représente et qui est une instance dudit schéma. Le document et le schéma sont lus en parallèle pour déterminer le type des données contenues dans le document, afin de les coder conformément à ce que prévoit ledit format, et à constituer un flux binaire avec les données codées. Brève description des dessins - la figure 1 représente un schéma en blocs résumant le principe de fonctionnement d'un procédé d'analyse syntaxique selon l'invention, - la figure 2 représente un schéma en blocs résumant le principe de fonctionnement d'un procédé de génération d'un flux binaire selon l'invention, - la figure 3 est un exemple d'un système de transmission selon l'invention. Description d'un mode de réalisation préférentiel Sur la figure 1, on a représenté un schéma en blocs exposant le principe de fonctionnement d'un procédé d'analyse syntaxique selon l'invention. Un bloc B1 représente un flux binaire conforme à un format prédéterminé. Un bloc B2 représente un schéma qui décrit ledit format prédéterminé de façon générique. Un bloc B3 représente un analyseur syntaxique permettant de faire une analyse syntaxique du flux B1 pour générer un document B4 qui est une représentation arborescente du flux binaire B1 et une instance du schéma B2. Le schéma B2 décrit la syntaxe du flux binaire. Il spécifie notamment le type des données susceptibles d'être rencontrées dans le fichier binaire, et la façon dont elles doivent être indes dans le document. La représentation arborescente B4 est générée au fur et à mesure de l'analyse du flux binaire Bl. Sur la figure 2, on a représenté un schéma en blocs exposant le principe de fonctionnement d'un procédé de génération d'un flux binaire selon l'invention. Un bloc B'2 représente un schéma qui décrit un format de codage de façon générique. Un bloc B'4 représente un document qui est une instance du schéma B'2. Un bloc B'3 représente un générateur de flux binaire permettant de lire en parallèle le document B'4 et le schéma B'2 pour générer un flux binaire B'1. Avantageusement les schémas B2 et B'2 utilisés pour un même format de codage sont identiques. Le document B'4 est lu avec le schéma B'2 de façon à déterminer le type des données qui sont contenues dans le document B'4. Pour une valeur lue dans le document B'4, le type de données correspondant, trouvé dans le schéma B'2, détermine le mode de codage à utiliser pour coder ladite valeur. D'une façon générale, il n'est pas forcément nécessaire de détailler complètement la structure du format de codage dans le schéma. Le niveau de détail dépend de l'application envisagée. Pour l'application décrite dans la demande de brevet français nO 0101530 déjà citée dans l'introduction de la présente demande (procédé de génération d'tun fichier-par exemple d'un fichier JPEG 2000-ayant des caractéristiques adaptées au profil du destinataire), certains segments de marqueurs JPEG 2000 doivent être détaillés paramètre par paramètre pour permettre de récupérer lesdits paramètres et de les modifier. D'autres segments de marqueurs sont traités comme un bloc, parce qu'il n'est pas nécessaire d'accéder aux paramètres qu'ils contiennent. De façon avantageuse, les documents B4 et B'4 sont des documents XML, et les schémas B2 et B'2 sont écrits dans un nouveau langage dérivé du langage XML-schema. XML est une recommandation du consortium W3C (eXtensible Markup Language 1.0 en date du 06.10. 2000), et XML-schema est un projet de recommandation du même consortium W3C daté du 24.10. 2000. La recommandation XML et le projet de recommandation XML-Schema sont disponibles sur le site Internet http : //www. w3. org/. Toutefois ceci n'est pas restrictif, et les principes de l'invention qui vont être décrits en détails dans la suite de la description peuvent être mis en oeuvre en utilisant des langages d'un autre genre, par exemple des langages du genre DSD (de l'anglais Document Structure Description) proposé par AT & T et par BRICS de l'université d'Aarhus au Danemark et disponible sur le site Internet http ://www. brics. dk/DSD/. D'un point de vue physique, un document XML comporte notamment des entités analysables qui contiennent du texte, c'est-à-dire une suite de caractères appartenant à un ensemble de caractères prédéfini, et qui représentent du balisage ou des données textuelles. D'un point de vue logique, un document XML contient un ou plusieurs éléments dont les limites sont marquées par une balise ouvrante et une balise fermante. Des éléments peuvent s'imbriquer les uns dans les autres. Chaque élément est identifié par un nom qui est indiqué dans sa balise ouvrante et dans sa balise fermente. Un élément peut avoir une valeur. La valeur d'un élément est placée entre sa balise ouvrante et sa balise fermante. Dans l'exemple qui va être décrit ci-dessous, afin de simplifier l'implémentation, on a choisit de placer les données directement dans les éléments du document XML (c'est-à-dire que les données contenues dans le document XML constituent des valeurs d'éléments XML). XML-schema est un langage de schéma qui permet de spécifier le contenu et la structure de documents XML : en particulier un schéma XML permet de décrire des éléments, et pour chaque élément un nom, un type de données, une imbrication, un ordre d'apparition et un nombre d'occurrence (s). L'ordre d'apparition et le nombre d'occurrences peuvent être prédéfinis ou quelconques. L'occurrence d'un élément peut être obligatoire ou optionnelle. Un schéma définit une classe de documents XML. Une instance d'un schéma XML est un document XML qui est valide par rapport audit schéma Dans la suite de la description, et afin de donner un exemple concret de mise en oeuvre de l'invention, on va considérer des flux binaires au format JPEG 2000. Ceci n'est pas non plus restrictif, et il est clair que l'invention est applicable à d'autres formats. Pour certains formats, il peut être nécessaire d'ajouter d'autres types de données à ceux qui sont décrits ici. On donne dans l'annexe A un exemple de schéma décrivant le format de codage JPEG 2000. Ce schéma utilise des types simples de données qui sont génériques et qui sont définis dans l'annexe B, et des types simples de données, dérivés de ces types génériques, qui sont définis dans l'annexe C. L'annexe D donne un exemple de document XML qui est une instance du schéma donné à l'annexe A et qui représente un flux binaire JPEG 2000. Dans les annexes A, B et C, et dans la suite de la description, les lettres xsd identifient les outils qui sont définis dans XML-schema. Et les lettres bsd identifient les outils qui sont ajoutés par l'invention. Conformément à l'invention, le schéma B2 (qui est considéré comme étant identique au schéma B'2 dans la suite de la description) définit le type de toutes les données susceptibles d'être contenues dans un flux conforme au format JPEG 2000. Certains types de données sont pré-existants dans le langage XML-schema et peuvent être utilisés directement. D'autres doivent être modifiés. D'autres encore doivent être ajoutés. En particulier, un flux binaire conforme au format JPEG 2000 contient les types de données suivants : 1) des segments binaires de longueurs indéfinies, dont le contenu peut être importé dans un document XML en utilisant un premier ou un deuxième mode d'importation, décrits plus loin. 2) des mots binaires de différentes longueurs, qui contiennent éventuellement des bits de remplissage qui ne sont pas significatifs. 3) des marqueurs dont la valeur est définie en hexadécimales dans la norme JPEG 2000, et qui sont importés en hexadécimales dans le document XML. Cette importation en hexadécimales constitue un troisième mode d'importation. Le premier mode d'importation consiste à convertir les données binaires en caractères appartenant à l'ensemble prédéfini de caractères utilisé par XML. Pour cela, on utilise avantageusement une méthode de codage connue sous le nom de base 64 et décrite au paragraphe 6.8 du document RFC 2045 publié par LIETF. Cette méthode consiste à découper les données binaires à convertir en groupes de 6 bits, et à associer à chaque groupe de 6 bits un caractère de l'ensemble prédéfini de caractères. Ce premier mode d'importation entraîne une expansion des données de 33%. Dans le deuxième mode d'importation, au lieu de convertir les données binaires en caractères pour les insérer directement dans le document XML, on introduit dans le document XML des pointeurs vers une zone d'un fichier binaire qui contient lesdites données binaires. Le document XML devient alors dépendant dudit fichier binaire. Dans le langage XML-schema, un type de données est définit comme un triplet qui comprend : - un ensemble de valeurs, appelé espace de valeurs, - un ensemble de représentations lexicales, appelé espace lexical, - un ensemble de facettes, une facette correspondant à une contrainte imposée à l'espace de valeurs. Pour la mise en oeuvre de l'invention, le codage des données qui sont lues dans le flux binaire doit être univoque et implicite. Certains types de données pré-existants dans XMLschema, qui sont univoques et implicites, sont utilisés directement : c'est le cas par exemple des types de données xsd : unsignedShort qui représente un entier compris entre-32768 et +32767 et qui peut donc être codé implicitement sur deux octets. C'est également le cas de xsd : unsîgnedint et de xsd : unsignedByte . Conformément à l'invention, on utilise aussi le type de données xsd : binary , mais en le modifiant : 1) On lui ajoute une facette relative à un drapeau de fin, intitulée bsd : stopFlagExclusive . Cette facette sera utilisée pour indiquer la fin d'un segment binaire de longueur indéfinie : par exemple les paquets JPEG 2000, qui sont des segments binaires de longueur indéfinie, sont délimités soit par un marqueur SOP (de l'anglais Start Of Paket), soit par un marqueur SOT (de l'anglais Start Of Tile) soit par un marqueur EOC (de l'anglais End Of Codestream) ; donc pour un paquet JPEG 2000 cette facette aura l'une des trois valeurs FF51 (SOP), FF90 (SOT) ou FFD9 (EOC). 2) On ajoute une nouvelle valeur possible à la facette encoding qui existe déjà dans le langage XML-schema avec les valeurs hex pour l'hexadecimal et base 64 pour l'importation après une conversion base 64. La nouvelle valeur ajoutée est dénommée externalData . Elle est utilisée pour indiquer que les données sont importées dans le document XML en utilisant le second mode d'importation évoqué plus haut (introduction dans le document XML d'un pointeur qui pointe vers la zone du flux binaire qui contient les données concernées). Ce type de données modifié est intitulé binaryNoLength et il est définit à l'annexe C de la façon suivante : Ce type de données modifié, qui est un type générique, est ensuite utilisé pour dériver d'autres types de données spécifiques susceptibles d'être rencontrés dans un flux binaire XML. Par exemple, comme indiqué à l'annexe B, le type PacketDataTYpe , qui correspond aux paquets JPEG 2000, est dérivé du type générique binaryNoLength . Dans cet exemple, on voit que les données contenues dans ces paquets sont importées dans le document XML en utilisant le second mode d'importation (pointeur vers la zone du flux binaire qui contient les données). On voit aussi qu'un paquet JPEG 2000 est délimité par un marqueur ayant l'une des trois valeurs suivantes : FF51, FFD9, ou FF90. En se reportant à l'annexe A, on constate que d'autres éléments ont un type dérivé de binaryNoLength , par exemple l'élément intitulé Data dans l'élément de type complexe COC. Cet élément Data a une facette encoding dont la valeur est base 64 , ce qui signifie que les données correspondantes sont importées du flux binaire dans le document XML en utilisant une conversion base 64. L'invention consiste aussi à ajouter un nouveau type de données destiné à être utilisé pour les mots binaires de longueur prédéfinie. Ce nouveau type de données est intitulé bsd : bitsArray et il contient trois facettes : une facette intitulée bitslength relative à la longueur du mot binaire, une facette intitulée prePadding relative au nombre de bits de remplissage placés avant le ou les bits significatifs, et une facette intitulée postPadding relative au nombre de bits de remplissage placés après le ou les bits significatifs. Ce nouveau type de données est défini dans l'annexe C de la façon suivante : Comme indiqué à l'annexe B, ce nouveau type de données, qui est un type de données générique, est ensuite utilisé pour dériver des types de données spécifiques susceptibles d'être rencontrés dans un flux JPEG 2000. Par exemple le type de données intitulé llb qui est dérivé du type de données générique bitsArray correspond à un mot binaire de 11 bits, qui ne contient pas de bits de remplissage : Et le type de données intitulé 5b3p qui est aussi dérivé du type de données générique bitsarray correspond à un mot binaire de 5 bits qui comporte 2 bits significatifs suivis de 3 bits de remplissage. En se reportant à l'annexe A on constate que le type de données llb est par exemple utilisé pour l'élément intitulé mantissa : xsd : element name="mantissa"type="jp2 : llb"/ > et que le type de données 5b3p est par exemple utilisé pour l'élément intitulé exponent : D'un point de vue structurel, l'invention utilise les outils suivants qui existent déjà dans XML-schema : - les types de données simples et complexes xsd : simple Type et xsd : complexType , - les éléments xsd : element , - les modèles de groupe xsd : group , - les connecteurs xsd : sequence , xsd : all , et éventuellement xsd : choice . L'analyseur syntaxique B3 lit le flux binaire BI avec le schéma B2 pour générer une représentation arborescente B4 du flux binaire Bl. Cette représentation arborescente B4 est une instance du schéma B2. Elle est générée récursivement en interprétant les connecteurs rencontrés dans le schéma. En particulier, le connecteur xsd : sequence est interprété de la façon suivante par l'analyseur syntaxique : lorsque l'analyseur syntaxique rencontre un connecteur xsd : sequence , il lit les éléments dans le flux binaire dans le même ordre que dans le schéma. Par exemple, un connecteur xsd : sequence est utilisé dans les éléments du type CodestreamType défini dans l'annexe A. D'après cette définition, un élément Codestream comprend obligatoirement un élément Mainheader , suivi d'un élément Tile , suivi d'un élément EOC . Le connecteur xsd : all est interprété de la façon suivante par l'analyseur syntaxique : lorsque l'analyseur syntaxique rencontre un connecteur xsd : all , ils commence par essayer de lire le premier élément déclaré à l'intérieur du connecteur xsd : all , et steil échoue, il essaye de lire le second etc... Lorsqu'il trouve un élément recherché, il passe à l'élément suivant dans le connecteur xsd : all . oil ne passe au connecteur suivant que lorsque tous les éléments du connecteur xsd : all ont été parcourus. D'une façon générale, l'élément trouvé dans le flux binaire ne correspond pas à l'élément recherché lorsque le schéma définit une valeur fixe pour cet élément ou pour l'un des éléments qui) contient, et que cette valeur ne correspond pas à ce qui est trouvé dans le flux binaire. Par exemple, lorsque l'analyseur syntaxique essaie d'instancier un élément SIZ , l'élément lu dans le flux binaire n'est pas l'élément recherché s'il ne commence pas par FF51 qui est la valeur affectée au marqueur SIZ dans la norme JPEG 2000. Le connecteur xsd : all est par exemple utilisé dans les éléments du type MainHeader Type défini dans l'annexe A. D'après cette définition un élément MainHeader comprend obligatoirement un élément SOC suivi d'un élément SIZ suivi d'un groupe qui peut contenir un, plusieurs ou aucun des éléments suivants, pris dans un ordre quelconque : COD , QCD , COC , QCC , RGN , POC , PPM , TLM , PLM , CRG . Bien qu'aucun exemple n'en soit donné dans l'annexe A, on peut également utiliser le connecteur xsd : choice . Lorsque l'analyseur syntaxique rencontre un connecteur xsd : choice , il commence par essayer de lire dans le flux binaire le premier élément déclaré à l'intérieur du connecteur xsd : choice . Lorsqu'il trouve l'élément recherché, il passe au connecteur suivant dans le schéma. Lorsque l'élément lu n'est pas l'élément recherché, il passe à l'élément suivant à l'intérieur du même connecteur xsd : choice . Par ailleurs, l'invention introduit l'utilisation de variables dans les schémas. La notion de variable est utilisée dans le langage XSLT (XMLExtensible StyleSheet Language Transformation en anglais). XSLT est un langage spécifié par le consortium W3C, qui permet de définir des transformation applicables à des documents XML. Concrètement une variable est une chaîne de caractères liée à une valeur. Elle peut apparaître à un certain emplacement dans un document et être utilisée ailleurs. Conformément à la syntaxe définie dans XSLT, on accède à la valeur d'une variable identifiée par une chaîne de caractères en plaçant le signe $ devant la chaîne de caractères (autrement dit, $ZZZ est la valeur de la variable identifiée par la chaîne de caractères ZZZ). La valeur d'une variable est indiquée dans la définition de la variable. L'invention permet de définir la valeur d'une variable sous forme d'un chemin dans une arborescence XML, en utilisant la syntaxe définit dans le langage Xpath (XML Path Language en anglais). Xpath est aussi un langage spécifié par le consortium W3C. Les spécifications de XSLT et Xpath sont disponibles sur le site Internet http : //www. w3. org. L'utilisation d'une variable permet par exemple de définir un nombre d'éléments par un paramètre, au lieu de le définir par une valeur constante. Lorsque la valeur d'un paramètre est donnée en amont dans le flux binaire, et informe sur la structure ou le contenu de la suite du flux binaire, la valeur de la variable est définie en utilisant la syntaxe Xpath. Par exemple, dans le format JPEG 2000, le nombre de composantes comp-siz contenues dans le segment de marqueurs SIZ est défini dans un paramètre Csiz qui est placé en amont dans le segment de marqueurs SIZ. Dans l'annexe A l'élément Csiz est défini comme une variable. Sa valeur est définie par un chemin dans la représentation arborescente en cours de construction : à cet égard, l'expression SIZ/Csiz indique que Csiz est un élément fils de l'élément SIZ . Ensuite, lors de la définition du type complexe SIZ il est fait appel à cette variable Csiz pour déterminer le nombre d'occurrences de l'élément comp-siz . L'invention consiste aussi à ajouter un nouveau modèle de groupe bsd : conditionalChoice et deux nouveaux connecteurs xsl : if et xsl : choose . Cela permet d'introduire des branchements conditionnels dans les schémas et donc d'exprimer des choix conditionnels susceptibles d'exister dans le format que l'on cherche à décrire. On notera que les connecteurs xsl : if et xsl : choose sont définis dans le langage XSLT. Conformément aux spécifications du langage XSLT, les connecteurs xsl : if et xsl : choose utilisent un attribut test qui permet de définir un choix en fonction du résultat d'un test. Le connecteur xsl : if permet de définir un choix en fonction de la valeur d'une variable booléenne. Le connecteur xsl : choose permet de définir un choix parmi une pluralité d'alternatives. A titre d'exemple, le format JPEG 2000 prévoit que la présence de certains éléments, ou que le type d'une donnée, dépende de la valeur d'un paramètre qui est donné en amont dans le flux binaire. C'est le cas notamment dans l'élément SPcod qui est contenu dans l'élément COD . L'élément SPcod contient un élément PredinctSize , uniquement lorsque la variable PredinctsUsed a la valeur 1. Cette contrainte est exprimée dans le schéma en utilisant un connecteur xsl : if . Dans l'élément QCD on trouve un exemple d'un groupe bsd : cond) tiona ! Choice qui utilise des connecteurs xsl : choose pour indiquer que le type d'un élément à suivre (Spqcdl, Spqcd~2 ou Spqcd~3) dépend de la valeur d'un paramètre quantStyle dont l'emplacement, dans la représentation arborescente en cours d'élaboration, est donnée par le chemin QCD/Sqcd/QuantStyle . bsd : conditionalChoice > xsl : when test="QCD/Sqcd/quantStyle =' !'" > xsd : element name="exponent"type="jp2 : 5b"/ > xsl : when test="QCD/Sqcd/quantStyle ='2"' > xsd : complexType > Lorsqu'il lit le flux binaire, l'analyseur syntaxique génère progressivement un arbre XML. Lorsque) rencontre une variable dans te schéma, par exemple dans un attribut test d'un connecteur if , il évalue cette variable en appliquant le chemin indiqué. On notera que le langage XML permet de définir ses propres extensions. Un premier mode de réalisation de l'invention consiste donc à ajouter les nouveaux outils proposés par l'invention comme extensions du langage XML-schema existant. Un autre mode de réalisation de l'invention consiste à redéfinir entièrement un nouveau langage qui reprend des outils de XMLschema et ajoute les nouveaux outils proposés par l'invention. Sur la figure 3, on a représenté un exemple de système de transmission selon l'invention. Le système de transmission de la figure 3 comporte un serveur SV et une pluralité de clients CT. Le serveur SV et les clients CT sont reliés au réseau Internet WWW. Le serveur SV contient des moyens de mémorisation MEM et des moyens de traitement PROC. Les moyens de mémorisation contiennent notamment un schéma B2, un premier flux binaire Bl, et un programme d'ordinateur PG1 pour la mise en oeuvre d'un procédé d'analyse syntaxique selon l'invention, afin d'obtenir un premier document B4 qui représente le premier flux binaire Bl et qui est une instance du schéma B2. De façon avantageuse, les moyens de mémorisation MEM contiennent aussi un programme d'ordinateur PG2 pour la mise en oeuvre d'un procédé de génération d'un second flux binaire B'l à partir d'un document le représentant B'4, et du schéma B2. A titre d'exemple, le document B'4 est obtenu en appliquant une transformation au document B4, ladite transformation dépendant du profile d'un client qui a préalablement requit le transfert d'un flux binaire. Annexe A : schema e ! -- &num;&num;&num;&num;&num;&num;&num;&num;&num;&num;&num;&num;&num;&num;&num;&num;&num;&num; MainHeader complex type exsd : element name="RGN" type="jp2 : RGNType" minOccurs="O"/ > Marker Segments SOC complex type Instead, the marker segment content is read as a whole using the length information given after the marker-- > Annexe B : Type simples utilisés dans le schéma Simple Types Definition markertype -- - Annexe C : Types génériques utilisés dans le schéma Annexe D : Document instance du schéma FF4F ff51 47 O 515 512 0 0 515 512 0 0 3 O 7 l l 0 7 l l O 7 l l ff52 12 0 0 O 4 1 l 5 4 4 0 0 O 0 0 0 0 ff5c 35 2 2 13 1816 13 1770 13 1770 13 1724 12 1792 12 1792 12 1762 ll 1868 ll 1868 11 1892 9 3 9 3 9 69 9 2002 9 2002 9 1889 ff90 10 O 32722 0 l FF93 ff91 4 O bachComp3. jp2&num;122-363 ff91 4 l bachComp3. jp2&num;370-861 ff91 4 2 bachComp3. jp2&num;868-2362 ff91 4 3 bachComp3. jp2&num;2369-6788 ff91 4 4 bachComp3. jp2&num;6795-17999 ff91 4 5 bachComp3.jp2&num;18006-26441 ff91 4 6 bachComp3. jp2&num;26448-26577 ff91 4 7 bachComp3. jp2&num;26584-26875 ff91 4 8 bachComp3. jp2&num;26882-27675 ff91 4 9 bachComp3. jp2&num;27682-29664 ff91 4 10 bachComp3. jp2&num;29671-31086 ff91 4 ll bachComp3. jp2&num;31093-31389 ff91 4 12 bachComp3.jp2&num;31396-31498 ff91 4 13 bachComp3. jp2&num;31505-31688 ff91 4 14 bachComp3. jp2&num;31695-31956 ff91 4 15 bachComp3. jp2&num;31963-32497 ff91 4 16 bachComp3. jp2&num;32504-32816 ff91 4 17 bachComp3. jp2&num;32823-32823 FFD9 REVENDICATIONS 1. Procédé d'analyse syntaxique d'un flux binaire contenant des données qui ont une structure et un contenu conforme à un certain format, pour générer une représentation arborescente dudit flux, caractérisé en ce que ledit procédé consiste à : A) lire un schéma qui, pour décrire ledit format de façon générique : a) définit un ou plusieurs type (s) de données, susceptible (s) de contenir une ou plusieurs acette (s), dont notamment : - lorsque ledit format utilise des mots binaires de longueur (s) prédéfinie (s), un ou plusieurs types de données correspondant aux dits mots binaires de longueur (s) prédéfinie (s), ayant au moins une facette relative à ladite longueur et, lorsque lesdits mots binaires de longueur (s) prédéfinie (s) sont susceptibles de contenir un ou plusieurs bit (s) de remplissage, une facette relative aux dits bits de remplissage, - lorsque ledit format utilise des segments binaires de longueur indéfinie ayant un contenu destiné à être importé dans ladite représentation en utilisant un certain mode d'importation, un type de données correspondant aux dits segments binaires, ayant au moins une facette relative audit mode d'importation et, lorsque lesdits segments binaires sont délimités par un drapeau de fin, une facette relative audit drapeau de fin, b) comporte une pluralité d'éléments pour lesquels il décrit un nom, un type de données, une imbrication, un ordre et un nombre d'occurrence (s) prédéfinis ou quelconques, l'occurrence d'un élément étant obligatoire ou optionnelle, c) lorsque ledit format prévoit que des données situées en amont dans ledit flux binaire informent sur la structure ou le contenu de la suite dudit flux binaire, - définit une ou plusieurs variable (s) constituée (s) par un chemin d'accès aux dites données situées en amont, dans ladite représentation arborescente, - et comporte un ou plusieurs branchement (s) conditionnel (s) pour décrire les différentes structures ou contenus possibles en fonction de la valeur de la ou desdites variables, B) rechercher dans ledit flux binaire les données qui correspondent aux éléments contenus dans ledit schéma, C) générer une instance dudit schéma qui contient les données trouvées dans ledit flux binaire, et qui constitue ladite représentation arborescente. 2. Programme d'ordinateur comportant des instructions pour la mise en oeuvre d'un procédé d'analyse syntaxique selon la revendication 1. 3. Procédé de génération d'un flux binaire conforme à un certain format, à partir d'un document qui est une représentation arborescente dudit flux binaire et qui contient des données, notamment des données importées en utilisant un certain mode d'importation, caractérisé en ce qu'il consiste à : A) lire ledit document, B) lire en parallèle un schéma qui, pour décrire ledit format le façon générique : a) définit un ou plusieurs type (s) de données susceptible (s) d'avoir une ou plusieurs facette (s), notamment : - un type de données correspondant à des segments binaires de longueur indéfinie ayant au moins une facette relative audit mode d'importation, - et, lorsque ledit format utilise des mots binaires de longueur (s) prédéfinie (s), un ou plusieurs types de données correspondant aux dits mots binaires de longueur (s) prédéfinie (s) ayant au moins une facette relative à ladite longueur, et lorsque lesdits mots binaires contiennent un ou plusieurs bit (s) de remplissage, une facette relative aux dits bits de remplissage, b) comporte une pluralité d'éléments pour lesquels il décrit un nom, un type de données, une imbrication, un ordre et un nombre d'occurrence (s) prédéfinis ou quelconques, l'occurrence d'un élément étant obligatoire ou optionnelle, c) lorsque ledit format prévoit que des données situées en amont dans ledit flux binaire informent sur la structure ou le contenu de la suite dudit flux binaire : - définit une ou plusieurs variable (s) constituée (s) par un chemin d'accès aux dites données situées en amont, dans ladite représentation arborescente, - et comporte un ou plusieurs branchement (s) conditionnel (s) pour décrire les différentes structures ou contenus possibles en fonction de la valeur de la ou desdites variables, pour déterminer le type des données contenues dans ledit document, C) coder lesdites données en fonction du type déterminé à l'étape B, D) à constituer un flux binaire à partir des données codées à l'étape C. 4. Programme d'ordinateur comportant des instructions pour la mise en oeuvre d'un procédé de génération d'un flux binaire selon la revendication 3.