FR 2906382 A1 20080328 FR 0653930 A 20060925 1 La présente invention concerne l'accès aux documents de type XML (eXtensible Markup Language) et plus particulièrement des procédés et des dispositifs pour optimiser le traitement de documents XML. Le format XML est une norme permettant de représenter des données sous une forme textuelle. Ces données sont organisées de manière hiérarchique sous la forme d'arbres. Les entités de traitement XML, ou parseurs, donnent accès aux données du document XML via cette structure d'arbre. Il existe différents types de parseurs XML. Le modèle DOM (Document Object Mode!) construit l'ensemble de l'arbre en mémoire et permet à un utilisateur de naviguer dans cet arbre composé de noeuds XML. Les inconvénients de ce modèle sont la quantité de mémoire nécessaire à sa mise en oeuvre et l'obligation de recevoir l'ensemble du document avant de commencer à le traiter. Pour résoudre ces problèmes, d'autres modèles de parseurs ont été développés tels que les modèles SAX (Simple API for XML) et PULL selon lesquels un arbre n'est pas construit en mémoire. De tels parseurs permettent de naviguer dans l'arbre XML en allant de noeud XML en noeud XML, en utilisant un algorithme d'exploration en profondeur d'abord. Il ne garde en mémoire que le noeud courant de l'arbre XML. Dans ce contexte, un noeud XML peut notamment correspondre à un élément XML ouvrant, un élément XML fermant ou un élément texte. Dans l'exemple suivant, le fragment XML contient trois noeuds : un élément ouvrant, un noeud texte et un noeud fermant, Textnode Le parseur XML décompose chaque noeud en un ensemble d'items, représentés sous la forme de chaîne de caractères, l'ensemble exact des items dépendant de l'implémentation exacte du parseur. En reprenant l'exemple 2906382 2 précédent, le premier noeud (élément ouvrant) peut être séparé en quatre items : `ns' (ou `ns : example' selon l'implémentation du parseur), `example', `attribute' et `value'. Le deuxième noeud est représenté en un seul item : `TextNode`. Le troisième noeud est représenté par deux items : `ns' (ou 5 `ns:example' selon l'implémentation du parseur) et `example'. Chaque item a une fonction particulière et est rendu accessible par le parseur via une API (Application programming interface) particulière. Dans le cas de SAX par exemple, le parseur appelle des fonctions implémentées par l'application, spécialisées pour chaque type de noeud. En 10 reprenant l'exemple précédent, le parseur SAX appellera dans l'ordre : 1. une fonction du type STARTTAG avec, en paramètre, le nom local de l'élément (ici `example'), son nom qualifié (ici `ns:example'), une liste d'attributs (ici un seul attribut qui a pour nom `attribute' et valeur `value') ; 2. une fonction du type TEXTNODE avec, en paramètre, la 15 valeur du noeud texte (ici ` Textnode ') ; et, 3. une fonction du type ENDTAG avec, en paramètre, le nom local de l'élément (ici `example') et son nom qualifié (ici `ns:example'). L'application peut ensuite se servir de chaque item passé par le parseur en paramètre des fonctions pour traiter les données. 20 Le langage XML est utilisé comme base par certains langages tels que WSDL, XML Schema ou Relax NG qui décrivent des composants. Ces langages définissent différents types de composants. Ces composants sont décrits en tant qu'éléments XML à l'intérieur d'un document XML. L'identifiant d'un composant, appelé QName d'un composant, correspond au nom du 25 composant associé à un identifiant global à l'ensemble des composants du document. Un composant est identifié de manière unique par son QName et son type. Ces identifiants sont notamment utilisés pour relier deux composants. Lors du traitement XML des composants, il est nécessaire de relier les composants entre eux en suivant les liens exprimés sous la forme de 30 références par QName. Ces liens peuvent aussi bien pointer vers des composants déjà définis (référence `backward') ou non encore définis (référence `forward'), comme dans l'exemple suivant, 2906382 3 5 10 15 Dans cet exemple, l'identifiant 'msg' de la ligne `input message='msg" fait référence à la ligne `message name='msg" et l'identifiant 'pt' de la ligne `binding name='bd' type='pt' fait référence à la ligne 'portType name='pt". Ainsi, l'identifiant `msg' pointe vers un composant déjà défini alors que l'identifiant 'pt' pointe vers un composant qui n'est défini qu'ultérieurement 20 dans le document. Des références circulaires peuvent également être utilisées. Par exemple, un premier composant référence un deuxième composant qui référence lui-même un troisième composant lequel référence le premier composant. S'il existe des références circulaires, au moins un composant est 25 de type mixte, c'est-à-dire qu'au moins un composant a des références 'backward' et 'forward'. Il convient cependant de noter, qu'un document initial non ordonnancé peut avoir des composants de type mixte qui, après le réordonnancement du document, sont de type 'forward' ou `backward' et qui ne correspondent donc pas à des références circulaires. 30 Lors d'un traitement progressif d'un document XML, il est nécessaire de gérer ces références, que les composants soient définis ou non. Cette gestion nécessite des ressources importantes de mémoire et de calcul. De nombreux documents se trouvent en mode `backward'. C'est notamment le mode d'écriture standard des documents WSDL. Ce mode permet de résoudre une référence au moment où cette référence est détectée. Le principe du passage d'un document sans ordre à un document en mode `backward' est décrit dans la demande de brevet américain 2906382 4 US 20050193135. Selon la description de cette demande, un serveur recevant une requête pour un document, modifie la structure du document pour le mettre en mode `backward' et le transmet au client. Dans ce contexte, le client ne peut traiter que des documents en mode `backward'. Cette solution ne prend pas en 5 compte les références circulaires. Elle ne prend pas non plus en compte les situations où l'unité de traitement du document aurait eu avantage à recevoir le document comprenant les références ordonnancées selon le mode `forward'. L'invention permet de résoudre au moins un des problèmes exposés précédemment et permet d'optimiser le traitement des documents XML utilisant 10 le mécanisme de référence par QName tels que les documents XML basés sur les langages WSDL, XML Schema et Relax NG. L'invention a ainsi pour objet un procédé pour optimiser le traitement d'un document de type XML comprenant une pluralité de composants, ce procédé comprenant les étapes suivantes, 15 - réception d'une identification du document et d'une identification du mode de traitement du document ; - accès au document selon l'identification du document ; et, - ordonnancement et codage de la pluralité de composants du document selon l'identification du mode de traitement du document. 20 Le procédé selon l'invention permet d'optimiser le traitement des documents XML par un codage adapté. Le document codé, ou une partie du document codé, peut être transmis à un client ou stocké pour une utilisation ultérieure. Il est ainsi possible de stocker plusieurs versions d'un document de telle sorte que le document dans sa version adaptée au type de traitement 25 devant lui être appliqué soit directement disponible. L'invention a également pour objet un procédé de transmission d'un document de type XML comprenant une pluralité de composants, ce procédé comprenant les étapes suivantes, -réception d'une requête pour transmettre le document, la requête 30 comprenant une identification du document et une identification du mode de traitement du document ; - accès au document selon l'identification du document ; 2906382 5 - obtention de la pluralité de composants du document, ordonnancés selon l'identification du mode de traitement du document ; et, - transmission d'au moins un composant ordonnancé de la pluralité de composants du document. 5 Selon ce mode de réalisation, le document ordonnancé selon le format demandé est directement transmis au client. Le traitement du document peut commencer avant même que l'ensemble du document ne soit reçu. Le mode de traitement du document est de préférence du type forward ou backward. Le mode de traitement forward est de préférence utilisé 10 lorsqu'un client ne souhaite accéder qu'à un sous-ensemble du document alors que le mode de traitement backward est de préférence utilisé lorsqu'un client souhaite accéder à l'ensemble du document. Dans un mode de réalisation particulier et lorsque le mode de traitement du document est du type backward, l'étape d'ordonnancement et de 15 codage comprend les étapes suivantes, - sélection d'un composant du document ; - identification des références du composant sélectionné ; -ajout du composant à une liste de dépendance et mise à jour de ladite liste de dépendance ; 20 - analyse de la liste de dépendance pour déterminer si au moins un composant est prêt à être codé ; et, - si au moins un composant de la liste de dépendance est prêt à être codé, codage du composant prêt à être codé et mise à jour de la liste de dépendance. 25 Alternativement, lorsque le mode de traitement du document est du type forward, l'étape d'ordonnancement et de codage peut comprendre les étapes suivantes, - pour chaque composant du document, ^ sélection du composant ; 30 ^ identification des références du composant sélectionné ; ^ ajout du composant sélectionné à une liste de dépendance et mise à jour de la liste de dépendance ; 2906382 6 - pour chaque composant de la liste de dépendance, ^ sélection du composant ; et, ^ codage du composant sélectionné et mise à jour de la liste de dépendance. 5 L'invention a également pour objet un procédé pour optimiser le traitement d'un document de type XML comprenant une pluralité de composants, ce procédé comprenant les étapes suivantes, - identification du document ; - identification du mode de traitement du document ; 10 - transmission d'une requête pour accéder le document, ordonnancé selon le mode déterminé par l'identification du mode de traitement du document ; - accès à au moins un composant du document ordonnancé selon le mode déterminé par l'identification du mode de traitement du document ; et, 15 - traitement du au moins un composant accédé du document, selon l'identification du mode de traitement du document. Selon ce mode de réalisation, le client demande un document de type XML dans le format adapté au traitement de ce document par le client afin d'optimiser le traitement. 20 A nouveau, le mode de traitement du document est de préférence du type forward ou backward. Le mode de traitement forward est de préférence utilisé lorsqu'un client ne souhaite accéder qu'à un sous-ensemble du document alors que le mode de traitement backward est de préférence utilisé lorsqu'un client souhaite accéder à l'ensemble du document. 25 Selon un mode de réalisation particulier et lorsque le mode de traitement du document est du type forward, l'étape de traitement du composant accédé comprend les étapes suivantes, - établissement de la liste des composants recherchés dans le document ; 30 - sélection d'un composant accédé ; 2906382 7 - analyse de la liste des composants recherchés pour déterminer si le composant accédé sélectionné appartient à la liste des composants recherchés ; - si le composant accédé sélectionné appartient à la liste des 5 composants recherchés, analyse du composant accédé sélectionné pour déterminer si le composant accédé sélectionné fait référence à au moins un autre composant ; et, - si le composant accédé sélectionné fait référence à au moins un autre composant, ajout du au moins un autre composant référencé à la liste des 10 composants recherchés. Alternativement, lorsque le mode de traitement du document est du type backward, l'étape de traitement du au moins un composant accédé comprend les étapes suivantes, - sélection d'un composant accédé ; 15 - identification des références du composant accédé sélectionné ; - si le composant accédé sélectionné ne comporte pas de référence, ajout du composant accédé sélectionné à une liste de composants ; - si ledit composant accédé sélectionné comporte au moins une référence, analyse du composant accédé sélectionné ; et, 20 mémorisation des références; ou, résolution des références et ajout du composant accédé sélectionné à la liste de composants. Toujours selon un mode de réalisation particulier, au moins un des composants du document est du type simple ou du type mixte. 25 L'invention a également pour objet un dispositif pour optimiser le traitement d'un document de type XML comprenant une pluralité de composants, ce dispositif comprenant les moyens suivants, - des moyens de réception d'une identification du document et d'une identification du mode de traitement du document ; 30 -des moyens d'accès au document selon l'identification du document ; et, 2906382 8 - des moyens d'ordonnancement et de codage de la pluralité de composants du document selon l'identification du mode de traitement du document. Le dispositif selon l'invention permet d'optimiser le traitement des 5 documents XML par un codage adapté. Le document codé, ou une partie du document codé, peut être transmis au client ou stocké pour une utilisation ultérieure. Il est ainsi possible de stocker plusieurs versions d'un document de telle sorte que le document dans sa version adaptée au type de traitement devant lui être appliqué soit directement disponible. 10 L'invention a également pour objet un dispositif pour transmettre un document de type XML comprenant une pluralité de composants, ce dispositif comprenant les moyens suivants, - des moyens de réception d'une requête pour transmettre le document, la requête comprenant une identification du document et une 15 identification du mode de traitement du document ; - des moyens d'accès au document selon l'identification du document ; - des moyens d'obtention de la pluralité de composants du document, ordonnancés selon l'identification du mode de traitement du 20 document ; et, - des moyens de transmission d'au moins un composant ordonnancé de la pluralité de composants du document. Selon ce mode de réalisation, le document ordonnancé selon le format demandé est directement transmis au client. Le traitement du document 25 peut commencer avant même que l'ensemble du document ne soit reçu. Selon un mode de réalisation particulier, le dispositif de l'invention comprend en outre les moyens suivants, - des moyens pour sélectionner un composant du document ; - des moyens pour identifier des références du composant 30 sélectionné ; - des moyens pour ajouter le composant sélectionné à une liste de dépendance et pour mettre à jour la liste de dépendance ; 2906382 9 - des moyens pour sélectionner un composant de la liste de dépendance ; et, - des moyens pour coder le composant sélectionné de la liste de dépendance et pour mettre à jour la liste de dépendance. 5 L'invention a également pour objet un dispositif pour optimiser le traitement d'un document de type XML comprenant une pluralité de composants, ce dispositif comprenant les moyens suivants, - des moyens d'identification du document ; - des moyens d'identification du mode de traitement du document ; 10 -des moyens de transmission d'une requête pour accéder le document ordonnancé selon le mode déterminé par l'identification du mode de traitement du document ; - des moyens d'accès à au moins un composant du document ordonnancé selon le mode déterminé par l'identification du mode de traitement 15 du document ; et, - des moyens de traitement du au moins un composant accédé du document, selon l'identification du mode de traitement du document. Selon ce mode de réalisation le client demande un document de type XML dans le format adapté au traitement de ce document par le client afin 20 d'optimiser le traitement. Selon un mode de réalisation particulier, le dispositif selon l'invention comprend en outre les moyens suivants, - des moyens pour établir une liste de composants cherchés ; - des moyens pour sélectionner un composant accédé ; 25 - des moyens pour analyser la liste des composants recherchés pour déterminer si le composant accédé sélectionné appartient à la liste des composants recherchés ; - des moyens pour analyser le composant accédé sélectionné pour déterminer si le composant accédé sélectionné fait référence à au moins un 30 autre composant ; et, - des moyens pour ajouter le au moins un autre composant référencé à la liste des composants recherchés. 2906382 10 Toujours selon un mode de réalisation particulier, le dispositif selon l'invention comprend en outre les moyens suivants, - des moyens pour sélectionner un composant accédé ; - des moyens pour identifier des références du composant accédé 5 sélectionné ; - des moyens pour ajouter le composant accédé sélectionné à une liste de composants ; - des moyens pour mémoriser les références ; et, - des moyens pour résoudre les références. 10 L'invention a également pour objet un programme d'ordinateur comprenant des instructions adaptées à la mise en oeuvre de chacune des étapes du procédé décrit précédemment. D'autres avantages, buts et caractéristiques de la présente invention ressortent de la description détaillée qui suit, faite à titre d'exemple non limitatif, 15 au regard des dessins annexés dans lesquels : - la figure 1 montre un exemple d'appareil permettant d'implémenter l'invention ; - la figure 2 représente schématiquement l'algorithme général pour mettre en oeuvre l'invention ; 20 - la figure 3 illustre un exemple d'algorithme d'ordonnancement de document selon un mode `backward' ; - la figure 4 illustre un exemple d'algorithme d'ordonnancement de document selon un mode `forward' ; - la figure 5 illustre un exemple d'algorithme de traitement de 25 document ordonnancé selon un mode `forward' ; et, - la figure 6 illustre un exemple d'algorithme de traitement de document ordonnancé selon un mode `backward'. Selon l'invention, lorsqu'un client souhaite accéder aux composants d'un document XML ou à certains composants d'un document XML, il 30 détermine le mode de traitement du document XML et demande le document dans la version correspondante, version `backward' ou version `forward'. Si le client a besoin du document dans sa totalité, il demande de préférence la 2906382 11 version 'backward' du document. Si le client souhaite ne récupérer qu'un sous ensemble du document, il demande de préférence la version 'forward'. Il arrive souvent qu'un client ne souhaite récupérer qu'un sous ensemble de composants, voire un unique composant, d'un document par exemple lorsqu'il 5 accède à des documents pointés par des fonctions de type xs:import ou wsdl:import, lorsqu'il analyse des messages WS-Discovery donnant une référence vers un service particulier ou lorsqu'un générateur de code souhaite générer le code d'une interface particulière. Lorsque le serveur reçoit une requête pour un document XML dans 10 une version particulière, il accède au document, l'organise selon la version demandée et ajoute, de préférence, un marqueur au document pour indiquer l'ordre global selon lequel le document a été ordonnancé. Il ajoute des marqueurs dans le document si l'ordonnancement n'a pu être effectué en totalité à cause, par exemple, de références circulaires ou de contraintes de 15 mémoire limitant le nombre de composants stockés à un instant donné durant l'ordonnancement. Le client, recevant le document XML ordonnancé selon la version choisie, traite le document en suivant l'ordre et les indications contenus dans le document. 20 La requête pour un document XML ordonnancé selon un mode particulier, reçue par le serveur, peut être émise par le client comme mentionné précédemment ou peut être émise localement, par exemple par une autre application du serveur. La figure 1 illustre un exemple d'appareil 100 adapté à mettre en 25 oeuvre l'invention, tel qu'un micro-ordinateur, une station de travail, un assistant numérique, un téléphone portable ou un serveur multimédia. De préférence, l'appareil 100 comporte un bus de communication 102 auquel sont reliés, • une unité centrale de traitement 103 telle qu'un microprocesseur ; 30 • une mémoire morte 104 ou Read Only Memory (ROM), pouvant comporter un ou plusieurs programmes "Prog", "Prog1" et "Prog2" ; 2906382 12 • une mémoire vive 106 ou Random Access Memrory (RAM), comportant des registres adaptés à mémoriser des variables et des paramètres créés et modifiés au cours de l'exécution des programmes précités ; et • une interface de communication 118 reliée à un réseau de 5 communication distribué 120, par exemple le réseau Internet, l'interface étant apte à transmettre et à recevoir des données. L'appareil 100 peut disposer optionnellement de l'un, de plusieurs ou de tous les dispositifs suivants : • un écran 108 permettant de visualiser des données et/ou de servir 10 d'interface graphique avec l'utilisateur qui pourra interagir avec les programmes selon l'invention, à l'aide d'un clavier 110 ou de tout autre moyen tel qu'un dispositif de pointage, comme par exemple une souris 111 ou un crayon optique, un écran tactile ou une télécommande ; • un disque dur 112 pouvant comporter des programmes et/ou des 15 données, notamment des données traitées ou à traiter selon l'invention ; • un lecteur de disquette 114 adapté à recevoir une disquette 116 et à y lire ou à y écrire des données traitées ou à traiter selon l'invention ; et, • un lecteur de cartes mémoire adapté à y lire ou à y écrire des données, notamment des données traitées ou à traiter selon l'invention. 20 Le bus de communication permet la communication et l'interopérabilité entre les différents éléments inclus dans l'appareil 100 ou reliés à lui. La représentation du bus n'est pas limitative et, notamment, l'unité centrale est susceptible de communiquer des instructions à tout élément de l'appareil 100, directement ou par l'intermédiaire d'un autre élément de 25 l'appareil 100. Le code exécutable du ou des programme(s) permettant à l'appareil 100 de mettre en oeuvre les processus selon l'invention, peut être stocké, par exemple, dans le disque dur 112 ou en mémoire morte 104. Selon une variante, la disquette 116, peut contenir des données ainsi 30 que le code exécutable des programmes précités qui, une fois lu par l'appareil 100, peuvent être stockés dans le disque dur 112. 2906382 13 Alternativement, le code exécutable des programmes peut être reçu par l'intermédiaire du réseau de communication 120, via l'interface 118, pour être stocké de façon identique à celle décrite précédemment. Les disquettes peuvent être remplacées par tout support 5 d'information tel que, par exemple, un disque compact (CD-ROM) ou une carte mémoire. De manière générale, un moyen de stockage d'information, lisible par un ordinateur ou par un microprocesseur, intégré ou non à l'appareil, é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. 10 De manière plus générale, le ou les programmes pourront être chargés dans un des moyens de stockage de l'appareil 100 avant d'être exécutés. L'unité centrale 103 contrôle l'exécution des instructions ou portions de code logiciel du ou des programme(s) selon l'invention, instructions qui sont 15 stockées dans le disque dur 112, dans la mémoire morte 104 ou dans les autres éléments de stockage précités. Lors de la mise sous tension, le ou les programmes stockés dans une mémoire non volatile, par exemple le disque dur 112 ou la mémoire morte 104, sont transférés dans la mémoire vive 106 (RAM), qui contient alors le code exécutable du ou des programme(s) selon l'invention, 20 ainsi que des registres pour mémoriser les variables et les paramètres nécessaires à la mise en oeuvre de l'invention. Il convient de noter que l'appareil comportant le dispositif selon l'invention peut également être un appareil programmé. Les instructions du ou des programme(s) mettant en oeuvre l'invention peuvent, par exemple, être 25 implémentées dans un circuit intégré programmable ou spécifique (Application- Specific Integrated Circuit, ASIC). La figure 2 illustre l'algorithme général pour mettre en oeuvre l'invention. Selon une première étape, le document devant être accédé, ou document cible, est sélectionné et les paramètres de traitement sont initialisés 30 (étape 200). Les paramètres de traitement sont en particulier liés au résultat souhaité du traitement. L'ordre de traitement du document sélectionné est déterminé selon ces paramètres de traitement (étape 210). Comme il l'a été 2906382 14 mentionné précédemment, lorsque la totalité du document est à traiter, il est avantageux de choisir le mode `backward' pour pouvoir résoudre immédiatement les références et non pas les différer le temps de récupérer l'ensemble des composants. A l'inverse, lorsque seul un sous-ensemble d'un 5 document doit être traité, il est utile d'utiliser le mode `foward'. Ce mode permet, lors du traitement du document, de ne traiter que les parties utiles du document. Le client émet alors une requête, par exemple à un serveur, pour obtenir le document sélectionné selon le mode déterminé (étape 220). Le document sélectionné est retrouvé, par exemple par le serveur. Il est modifié pour être 10 ordonnancé selon le mode déterminé (étape 230), codé et transmis (240). Après réception (étape 250), le document est traité (étape 260). De façon alternative, un document peut être ordonnancé selon un mode, un autre mode ou plusieurs modes et stocké pour pouvoir être utilisé ou transmis directement ultérieurement. 15 Le type de connexion entre le client et le serveur n'intervient pas directement dans la mise en oeuvre de l'invention. Elle n'est donc pas analysée en détail. Il peut s'agir, en particulier, de connexion Internet, Ethernet ou sans fils (wireless). Des références circulaires pouvant être présentes dans le document 20 sélectionné, il est préférable d'ajouter des marqueurs dans le document ordonnancé, précisant le mode des composants e.g., `backward', `forward' et `mixed'. Ces indications peuvent être de la forme suivante, 25 30 35 2906382 5 L'ordonnancement des documents XML est de préférence automatique. Pour l'ordonnancement selon le mode `backward', il n'est pas nécessaire de traiter l'ensemble du document avant de commencer la 10 transmission des composants. L'exemple illustré d'implémentation des algorithmes d'ordonnancement se base sur unestructure commune : la liste Ld des dépendances. Cette liste contient, pour chaque composant, sa description XML (selon un format quelconque), la liste Li des composants référencés inconnus, 15 la liste Lc des composants référencés connus et la liste Lr des composants référençant ce composant. Cette liste Ld est ordonnée suivant la règle suivante : pour tout composant de la liste, les composants référencés sont situés plus tôt dans la liste et inversement, les composants référençants sont situés plus tard dans la liste. 20 Un composant est inséré dans la liste Ld en deux étapes. Tout d'abord, les listes des composants référencés inconnus et connus de tous les composants de la liste référençant ce composant sont mises à jour. La position du composant dans la liste est ensuite déterminée. La position du référencé le plus haut, Pe, et la position du référençant le plus bas, Pa, sont calculées. Si Pe 25 est inférieure à Pa, le composant est inséré à la position Pe+l. Si Pe est supérieure à Pa, la liste Lbe des composants de Lc dont la position est comprise entre Pe et Pa et la liste Lbr des composants de Lr dont la position est comprise entre Pe et Pa sont récupérées. On cherche alors à déplacer les composants de Lbe en dessous de Pa et les composants de Lbr 30 en dessous de Pe. Un composant se déplace de la façon suivante : - un composant peut échanger sa position avec son voisin supérieur direct si le voisin supérieur ne référence pas le composant ; - un composant peut échanger sa position avec son voisin inférieur direct si ce composant ne référence pas ce voisin inférieur ; et, 15 2906382 16 - si la position du composant ne peut pas être échangée avec celle de son voisin dans un sens donné, on cherche tout d'abord à déplacer le voisin dans le sens donné et ainsi de suite. Si la réorganisation n'est pas possible, un cycle est détecté. Dans ce 5 cas, l'ensemble des composants restants entre Pe et Pa et le composant à ajouter sont agrégés en un seul composant dans la liste des composants. Les listes Li, Lr et Le de chaque composant agrégé sont combinées et ce nouveau composant est placé dans la liste à la position Pe+1. Il est à noter que, suivant le type du document, certains types de 10 composants ne se référencent jamais ou se référencent uniquement dans un sens précis, ce qui permet de simplifier la gestion décrite ci-dessus. Par exemple, un type simple schéma ne référence jamais un type complexe. Le codage d'un composant diffère selon qu'il s'agit d'un composant agrégé ou d'un composant non agrégé. Pour coder un composant non agrégé, 15 sa description interne est utilisée pour reconstruire sa représentation XML. Pour coder un composant agrégé, il est possible de coder le premier composant en indiquant la marque `mixte', de coder tous les composants sauf le dernier, et de coder le dernier composant en indiquant la marque `fin mixte'. L'algorithme présenté à la figure 3 permet de réordonnancer les 20 composants de documents XML en un mode `backward' tout en détectant les cas de références circulaires et en optimisant le traitement en stockant le moins d'information possible. Cet algorithme d'ordonnancement permet de coder les données à transmettre. Le premier composant du document est tout d'abord sélectionné 25 (étape 300). L'ensemble des références de ce composant est identifié et toutes les informations du composant sont mémorisées sous une forme quelconque, par exemple dans une zone mémoire (étape 305). L'identification des références s'effectue à l'aide d'un processeur dédié au langage qui définit les composants et les références tel que WSDL, XML Schema ou Relax NG, ou 30 avec un processeur général possédant les informations nécessaires. Ce composant sélectionné est ajouté à la liste Ld des dépendances qui est mise à jour selon la méthode mentionnée précédemment (étape 310). 2906382 17 Un test est ensuite réalisé pour déterminer si un composant de la liste Ld peut être codé (étape 315). Un composant peut être codé si sa liste de références inconnues et sa liste de références connues sont vides. Il est aussi possible d'effectuer ce test avant d'ajouter le composant sélectionné dans la 5 liste Ld. Si un composant est prêt à être codé, il est codé et de préférence transmis. Pour cela un test est réalisé pour déterminer si le composant prêt à être codé est de type mixte ou non (étape 320). Si le composant prêt à être codé est du type mixte, l'ensemble des sous-composants du composant prêt à être codé est codé, marqué avec une indication du type mixte (étape 325). Si le 10 composant prêt à être codé n'est pas du type mixte, ce composant est codé simplement à partir des informations mémorisées du composant sélectionné (étape 330). La liste Ld des dépendances est ensuite mise à jour (étape 335) en mettant à jour les listes Lc des composants référençant le composant codé. Le 15 test pour déterminer si un composant de la liste Ld peut être codé (étape 315) est ensuite à nouveau effectué. Si aucun composant n'est prêt à être codé, un test est effectué pour déterminer si le document à coder, et éventuellement à transmettre, comprend au moins un autre composant (étape 340). Si le document à coder comprend 20 au moins un autre composant, ce composant est sélectionné et les étapes précédentes sont répétées (étapes 305 à 340). Si le document à coder ne comprend pas d'autre composant, le procédé d'ordonnancement est terminé (étape 345). Le document a été codé et éventuellement transmis au client ou stocké. 25 L'algorithme d'ordonnancement selon le mode `forward', représenté à la figure 4, reprend le même principe que l'algorithme `backward'. Les étapes 400, 405 et 410 sont similaires aux étapes 300, 305 et 310, respectivement. Le premier composant du document est tout d'abord sélectionné (étape 400). L'ensemble des références de ce composant est identifié et toutes les 30 informations du composant sont mémorisées sous une forme quelconque, par exemple dans une zone mémoire du composant (étape 405). L'identification des références peut se faire à l'aide d'un processeur dédié au langage qui 2906382 18 définit les composants et les références ou avec un processeur général possédant les informations nécessaires. Ce composant sélectionné est ajouté à la liste Ld des dépendances qui est mise à jour selon la méthode mentionnée précédemment (étape 410). 5 Contrairement à l'algorithme selon le mode 'backward', la construction de la liste des dépendances est poursuivie jusqu'à la fin du document. Pour cela, après avoir ajouté le composant sélectionné à la liste Ld des dépendances et mis à jour cette liste, un test est effectué pour déterminer si le document à coder comprend au moins un autre composant (étape 415). Si 10 le document à coder comprend au moins un autre composant, ce composant est sélectionné et les étapes précédentes sont répétées (étapes 405 à 415). Si le document à coder ne comprend pas d'autre composant, le dernier composant de la liste Ld des dépendances est sélectionné (étape 420). Un test est réalisé pour déterminer si le composant sélectionné est 15 de type mixte ou non (étape 425). Si le composant sélectionné n'est pas du type mixte, ce composant est codé simplement à partir des informations mémorisées (étape 430). Si le composant sélectionné est du type mixte, l'ensemble des sous-composants du composant sélectionné est codé avec une indication du type mixte (étape 435). 20 Le composant sélectionné, c'est-à-dire le dernier composant de la liste Ld, est retiré de la liste Ld des dépendances (étape 440) et un test est effectué pour déterminer si la liste Ld des dépendances contient au moins un autre composant (étape 445). Si la liste Ld des dépendances contient un autre composant, les étapes 420 à 445 sont répétées. Si la liste Ld des dépendances 25 ne contient pas d'autre composant, le procédé d'ordonnancement est terminé (étape 450). Le document est prêt à être stocké ou transmis au client. L'algorithme de traitement, ou de décodage, illustré sur la figure 5 utilise l'organisation selon le mode 'forward' du document reçu par le client pour améliorer le traitement, ou le décodage, du document reçu. En particulier, 30 l'algorithme de la figure 5 optimise le traitement, ou le décodage, lorsque seul un sous-ensemble des composants du document doit être utilisé. 2906382 19 Il convient de noter que le document reçu peut avoir été codé préalablement et stocké (localement ou sur un site distant) ou qu'il peut être codé lorsque le client émet sa requête. Après avoir initialisé la liste Lr des composants recherchés selon les 5 besoins de l'application ayant lancé la requête pour le document XML, le traitement du document XML commence par la détection du premier composant reçu (étape 500). Un premier test consiste à déterminer si le composant reçu appartient à la liste des composants recherchés (étape 505). Si le composant reçu n'appartient pas à la liste des composants recherchés, un second test est 10 utilisé pour déterminer si le composant reçu est de type mixte i.e., s'il fait partie d'un ensemble de composants faisant des références circulaires (étape 510). Si le composant reçu appartient à la liste des composants recherchés ou si le composant reçu est de type mixte, le traitement du composant reçu commence (étape 515). Le traitement du composant reçu est 15 effectué en parallèle aux étapes spécifiques mentionnées. Généralement, durant cette étape, les informations des composants, en particulier leur nom et leurs différentes propriétés, sont stockées sous la forme, par exemple, d'objets ou de structures. A titre d'illustration et en reprenant l'exemple cité précédemment comprenant le composant portType `pt', un objet de type 20 interface, conservant le nom du composant sous la forme d'un objet String, et une liste d'objet de type Operation sont créés. Lorsque ce traitement est terminé, l'application récupère ces informations, par exemples ces objets ou ces structures, pour une utilisation particulière telle que la génération de code ou la génération d'interface graphique. Un test est effectué pour déterminer si le 25 composant reçu fait référence à d'autres composants (étape 520). Si le composant reçu fait référence à d'autres composants, ces références sont ajoutées à la liste des composants recherchés (étape 525). Lorsque le traitement du composant reçu est terminé (étape 530), un test est effectué pour déterminer si un nouveau composant a été reçu (étape 540). 30 Si le composant reçu n'appartient pas à la liste des composants recherchés ou si le composant reçu n'est pas de type mixte, l'algorithme passe 2906382 20 au traitement du composant suivant (étape 535). Un test est effectué pour déterminer si un nouveau composant a été reçu (étape 540). Si un nouveau composant est reçu, les étapes précédentes (étapes 505 à 540) sont répétées. L'étape 540 permet d'itérer le processus sur 5 l'ensemble des composants reçus. Lorsque tous les composants du document ont été parcourus, le traitement des composants est finalisé en résolvant les références puis en utilisant les composants (étape 545). Le traitement de tous les composants d'un cycle est nécessaire car c'est uniquement à la fin du cycle qu'il est possible de déterminer quels 10 composants sont effectivement utilisés, cependant, il n'est pas obligatoirement nécessaire de recevoir l'ensemble des composants du document pour pouvoir les exploiter. Le test 510 permet de traiter tous les composants nécessaires sans avoir à parcourir le document une seconde fois. L'algorithme de traitement 'backward' illustré sur la figure 6 diffère 15 des algorithmes classiques du fait de la gestion des composants mixtes. Il convient de noter ici également que le document reçu peut avoir été codé préalablement et stocké (localement ou sur un site distant) ou qu'il peut être codé lorsque le client émet sa requête. Après avoir initialisé la liste Lp des composants (étape 600), c'est-à- 20 dire vider cette liste, le traitement du document XML commence par la sélection du premier composant reçu et par l'identification des composants référencés par le composant sélectionné (étape 605). Un premier test est effectué pour déterminer si le composant sélectionné comprend des références (étape 610). Si le composant sélectionné comprend au moins une référence, un 25 second test est effectué pour déterminer si le composant reçu est de type mixte (étape 615). Si le composant reçu est de type mixte, les références sont mémorisées pour être résolues ultérieurement (étape 620). Si le composant reçu n'est pas de type mixte, les références sont résolues immédiatement en effectuant une recherche parmi les composants déjà traités (étape 625). Cette 30 résolution sera effectuée indifféremment à la fin du traitement ou lorsque la fin des composants mixtes est détectée. Pour cela un autre test est effectué pour déterminer si le composant reçu est de type fin mixte (étape 630) et, si le 2906382 21 composant reçu est de type fin mixte, les références mémorisées sont résolues (étape 635). Si le composant reçu ne comprend pas de référence ou lorsque les références sont mémorisées ou résolues, le composant reçu est ajouté à la liste 5 Lp des composants (étape 640). Un test est effectué pour déterminer si un nouveau composant a été reçu (étape 645). Si un nouveau composant a été reçu, c'est-à-dire si le document comprend d'autres composants, les étapes précédentes (étapes 605 à 645) sont répétées. Si le document ne comprend pas d'autre composant, les composants peuvent être utilisés par l'application 10 ayant émis la requête pour l'obtention du document XML (étape 650). L'algorithme décrit en référence à la figure 6 permet de minimiser la gestion des références tout en conservant l'aptitude de traiter l'ensemble des documents possibles, c'est-à-dire les documents comprenant des composants simples ou mixtes. 15 Naturellement, pour satisfaire des besoins spécifiques, une personne compétente dans le domaine de l'invention pourra appliquer des modifications dans la description précédente. REVENDICATIONS 1. Procédé pour optimiser le traitement d'un document de type XML comprenant une pluralité de composants, ce procédé étant caractérisé en ce qu'il comprend les étapes suivantes, - réception d'une identification dudit document et d'une identification du mode de traitement dudit document ; - accès audit document selon ladite identification dudit document ; et, - ordonnancement et codage de ladite pluralité de composants dudit document selon ladite identification du mode de traitement dudit document (230). 2. Procédé de transmission d'un document de type XML comprenant une pluralité de composants, ce procédé étant caractérisé en ce qu'il comprend les étapes suivantes, - réception d'une requête pour transmettre ledit document, ladite requête comprenant une identification dudit document et une identification du 20 mode de traitement dudit document ; - accès audit document selon ladite identification dudit document ; - obtention de ladite pluralité de composants dudit document, ordonnancés selon ladite identification du mode de traitement dudit document (230) ; et, 25 -transmission d'au moins un composant ordonnancé de ladite pluralité de composants dudit document (240). 3. Procédé selon la revendication 1 ou la revendication 2 caractérisé en ce que ladite identification du mode de traitement dudit document est du type forward ou backward. 30 4. Procédé selon la revendication 3 caractérisé en ce que si ladite identification du mode de traitement dudit document est du type backward, ladite étape d'ordonnancement et de codage comprend les étapes suivantes, 2906382 23 - sélection d'un composant dudit document (300) ; -identification des références dudit composant sélectionné (305) ; - ajout dudit composant à une liste de dépendance et mise à jour de ladite liste de dépendance (310) ; 5 - analyse de ladite liste de dépendance pour déterminer si au moins un composant est prêt à être codé (315) ; et, - si au moins un composant de ladite liste de dépendance est prêt à être codé, codage dudit composant prêt à être codé (325, 330) et mise à jour de ladite liste de dépendance (335). 10 5. Procédé selon la revendication 3 caractérisé en ce que si ladite identification du mode de traitement dudit document est du type forward, ladite étape d'ordonnancement et de codage comprend les étapes suivantes, - pour chaque composant dudit document, sélection du composant (400) ; 15 identification des références dudit composant sélectionné (405) ; ajout dudit composant sélectionné à une liste de dépendance et mise à jour de ladite liste de dépendance (410) ; - pour chaque composant de ladite liste de dépendance, sélection du composant (420) ; et, codage dudit composant sélectionné (430, 435) et mise à jour de ladite liste de dépendance (440). 6. Procédé pour optimiser le traitement d'un document de type XML 25 comprenant une pluralité de composants, ce procédé étant caractérisé en ce qu'il comprend les étapes suivantes, - identification dudit document (200) ; - identification du mode de traitement dudit document (210) ; -transmission d'une requête pour accéder ledit document, 30 ordonnancé selon le mode déterminé par ladite identification du mode de traitement dudit document (220) ; 2906382 24 - accès à au moins un composant dudit document ordonnancé selon le mode déterminé par ladite identification du mode de traitement dudit document (250) ; et, - traitement dudit au moins un composant accédé dudit document, 5 selon ladite identification du mode de traitement dudit document (260). 7. Procédé selon la revendication 6 caractérisé en ce que ladite identification du mode de traitement dudit document est du type forward ou backward. 8. Procédé selon la revendication 7 caractérisé en ce que si ladite 10 identification du mode de traitement dudit document est du type forward, ladite étape de traitement dudit au moins un composant accédé comprend les étapes suivantes, - établissement de la liste des composants recherchés dans ledit document (500) ; 15 - sélection d'un composant accédé ; -analyse de ladite liste des composants recherchés pour déterminer si ledit composant accédé sélectionné appartient à ladite liste des composants recherchés (505) ; - si ledit composant accédé sélectionné appartient à ladite liste des 20 composants recherchés, analyse dudit composant accédé sélectionné pour déterminer si ledit composant accédé sélectionné fait référence à au moins un autre composant (520) ; et, - si ledit composant accédé sélectionné fait référence à au moins un autre composant, ajout dudit au moins un autre composant référencé à ladite liste des composants recherchés (525). 9. Procédé selon la revendication 7 caractérisé en ce que si ladite identification du mode de traitement dudit document est du type backward, ladite étape de traitement dudit au moins un composant accédé comprend les étapes suivantes, - sélection d'un composant accédé ; - identification des références dudit composant accédé sélectionné (605) ; 2906382 25 - si ledit composant accédé sélectionné ne comporte pas de référence, ajout du composant accédé sélectionné à une liste de composants (640) ; - si ledit composant accédé sélectionné comporte au moins une 5 référence, analyse dudit composant accédé sélectionné ; et, mémorisation des références (620) ; ou, résolution des références et ajout du composant accédé sélectionné à ladite liste de composants (640). 10. Procédé selon l'une quelconque des revendications précédentes 10 caractérisé en ce qu'au moins un composant dudit document est du type simple ou du type mixte. 11. Dispositif pour optimiser le traitement d'un document de type XML comprenant une pluralité de composants, ce dispositif étant caractérisé en ce qu'il comprend les moyens suivants, 15 - des moyens de réception d'une identification dudit document et d'une identification du mode de traitement dudit document ; - des moyens d'accès audit document selon ladite identification dudit document ; et, - des moyens d'ordonnancement et de codage de ladite pluralité de 20 composants dudit document selon ladite identification du mode de traitement dudit document (230). 12. Dispositif pour transmettre un document de type XML comprenant une pluralité de composants, ce dispositif étant caractérisé en ce qu'il comprend les moyens suivants, 25 - des moyens de réception d'une requête pour transmettre ledit document, ladite requête comprenant une identification dudit document et une identification du mode de traitement dudit document ; - des moyens d'accès audit document selon ladite identification dudit document ; 30 - des moyens d'obtention de ladite pluralité de composants dudit document, ordonnancés selon ladite identification du mode de traitement dudit document (230) ; et, 2906382 26 - des moyens de transmission d'au moins un composant ordonnancé de ladite pluralité de composants dudit document (240). 13. Dispositif selon la revendication 11 ou la revendication 12 caractérisé en ce qu'il comprend en outre les moyens suivants, 5 - des moyens pour sélectionner un composant dudit document (300, 400) ; - des moyens pour identifier des références dudit composant sélectionné (305, 405) ; - des moyens pour ajouter ledit composant sélectionné à une liste 10 de dépendance et pour mettre à jour ladite liste de dépendance (310, 410) ; - des moyens pour sélectionner un composant de ladite liste de dépendance (315, 420) ; et, - des moyens pour coder ledit composant sélectionné de ladite liste de dépendance (325, 330, 430, 435) et pour mettre à jour ladite liste de 15 dépendance (335, 440). 14. Dispositif pour optimiser le traitement d'un document de type XML comprenant une pluralité de composants, ce dispositif étant caractérisé en ce qu'il comprend les moyens suivants, - des moyens d'identification dudit document (200) ; 20 - des moyens d'identification du mode de traitement dudit document (210) ; - des moyens de transmission d'une requête pour accéder au dit document ordonnancé selon le mode déterminé par ladite identification du mode de traitement dudit document (220) ; 25 - des moyens d'accès à au moins un composant dudit document ordonnancé selon le mode déterminé par ladite identification du mode de traitement dudit document (250) ; et, - des moyens de traitement dudit au moins un composant accédé dudit document, selon ladite identification du mode de traitement dudit 30 document (260). 15. Dispositif selon la revendication 14 caractérisé en ce qu'il comprend en outre les moyens suivants, 2906382 27 - des moyens pour établir une liste de composants cherchés (500) ; - des moyens pour sélectionner un composant accédé ; - des moyens pour analyser ladite liste des composants recherchés pour déterminer si ledit composant accédé sélectionné appartient à ladite liste 5 des composants recherchés (505) ; - des moyens pour analyser ledit composant accédé sélectionné pour déterminer si ledit composant accédé sélectionné fait référence à au moins un autre composant (520) ; et, - des moyens pour ajouter ledit au moins un autre composant 10 référencé à ladite liste des composants recherchés (525). 16. Dispositif selon la revendication 14 caractérisé en ce qu'il comprend en outre les moyens suivants, - des moyens pour sélectionner un composant accédé ; - des moyens pour identifier des références dudit composant 15 accédé sélectionné (605) ; - des moyens pour ajouter ledit composant accédé sélectionné à une liste de composants (640) ; - des moyens pour mémoriser lesdites références (620) ; et, - des moyens pour résoudre lesdites références (625). 20 17. Programme d'ordinateur comprenant des instructions adaptées à la mise en oeuvre de chacune des étapes du procédé selon les revendications 1 à 10. 18. Serveur comprenant les moyens du dispositif selon l'une quelconque des revendications 11 à 16. 25