FR 2845790 A1 20040416 FR 0212602 A 20021010 La présente invention concerne un procédé de transformation d'un document représenté dans un langage de balisage, et notamment d'un document XML. Corrélativement, elle concerne également un dispositif de transformation d'un tel document. Les documents écrits dans un langage de balisage tel que XML (eXtended Markup Language) sont largement utilisés dans le cadre des réseaux de transfert d'information, tel que Internet pour échanger des documents ou des informations entre un client et un serveur. Il est parfois utile de pouvoir modifier le contenu d'un document en langage XML afin d'optimiser sa transmission, notamment en compressant ou en cryptant une partie ou l'intégralité des données contenues dans ce document. Il est cependant important de garder la compatibilité du langage de balisage pour le fichier ainsi traité, de telle sorte que lors de sa transmission sur le réseau de communication, sa lecture reste possible par les différents serveurs du réseau. Ainsi, dans un document comprenant plusieurs balises imbriquées les unes dans les autres, l'utilisateur peut avoir spécifié un ou plusieurs traitements à effectuer pour l'une ou l'autre des balises de ce document. En pratique, une balise peut être associée à un traitement qui doit être appliqué à son contenu. A titre d'exemple, lorsqu'un fichier comporte une balise image, il peut être intéressant de pouvoir remplacer cette balise par une version compressée selon la norme JPEG de l'image, dans laquelle les données images sont compressées. Par ailleurs, l'intégralité du message peut également être compressée selon un format tel que ZIP afin de limiter l'espace mémoire nécessaire pour mémoriser et transmettre ce document. Lorsque la balise image est imbriquée à l'intérieur du document, il peut être intéressant de compresser selon le format ZIP l'intégralité du document à l'exception de la balise image qui sera remplacée par une version compressée selon la norme JPEG de l'image. La présente invention a pour but de faciliter la gestion des différents traitements associés à des balises imbriquées les unes dans les autres dans un document représenté dans un langage de balisage. A cet effet, elle vise un procédé de transformation d'un document représenté dans un langage de balisage, une première balise étant associée à au moins un premier traitement des données incluses dans la première balise, et contenant une balise enfant associée à au moins un deuxième traitement des données incluses dans la balise enfant, cette balise enfant ne contenant pas de balise associée à un traitement. Ce procédé de transformation comprend les étapes suivantes : - vérification de la compatibilité ou non du premier et du deuxième traitement ; - dans la négative, inscription d'une copie de la balise enfant en amont de la première balise dans le document ; et - substitution dans la première balise de la balise enfant par une balise de lien adaptée à pointer vers la copie de la balise enfant. Ainsi, le procédé de transformation conforme à l'invention permet de délocaliser des balises enfants, imbriquées dans une balise de rang supérieur lorsque le traitement à appliquer n'est pas compatible avec le traitement associé à cette balise de rang supérieur. Grâce à la substitution de cette balise enfant par une balise de lien, on peut garder la structure du document XML. Lors de l'écriture d'un document en XML, et de la spécification des traitements associés à chacune des balises incluses dans ce document, l'opérateur n'a pas à se soucier de la compatibilité ou non des différents traitements. Le procédé de transformation conforme à l'invention permet de manière automatique de restructurer l'ensemble des balises du document en langage de balisage en tenant compte des traitements à réaliser, de telle sorte que les traitements puissent s'effectuer sur chacune de ces balises indépendamment les uns des autres. La génération d'un message en document XML est donc ainsi facilitée. Selon une caractéristique préférée de l'invention, la première balise étant contenue dans au moins une balise parent associée à au moins un troisième traitement, le procédé de transformation comprend les étapes suivantes : - vérification de la compatibilité ou non du deuxième et du troisième traitement ; et - dans l'affirmative, inscription d'une copie de la balise enfant en amont de la première balise, dans la balise parent ;ou - dans la négative, inscription d'une copie de la balise enfant en amont de la balise parent. Ainsi, le procédé de transformation et de délocalisation des balises peut être appliqué de manière récursive, à partir d'une balise enfant ne contenant pas de balise associée à un traitement, en vérifiant la compatibilité du traitement associé à cette balise enfant avec les traitements requis des balises de rang supérieur dans le document. Selon une caractéristique préféré de l'invention, le procédé de transformation comprend en outre une étape de traitement des données incluses dans la copie de la balise enfant, la copie de la balise enfant étant remplacée par le résultat du traitement. Ainsi, le traitement des données de chaque balise enfant peut être effectué une fois ces balises enfants placées judicieusement dans le document en fonction de la compatibilité des différents traitements. Selon un mode de réalisation particulièrement pratique et simple à mettre en #uvre, les premier, deuxième ou troisième traitements sont spécifiés par un attribut associé respectivement aux première balise, balise enfant ou balise parent. De préférence, ces premier, deuxième ou troisième traitements sont spécifiés dans un langage de balisage, la spécification des traitements étant incluse dans le document représenté dans un langage de balisage. Dans un mode de réalisation avantageux de l'invention, le langage de balisage est un langage XML. Corrélativement, l'invention concerne un dispositif de transformation d'un document représenté dans un langage de balisage, une première balise étant associée à au moins un premier traitement des données incluses dans la première balise, et contenant une balise enfant associée à au moins un deuxième traitement des données incluses dans la balise enfant, la balise enfant de contenant pas de balise associée à un traitement. Ce dispositif de transformation comprend : - des moyens de vérification de la compatibilité au non du premier et du deuxième traitement ; - des moyens d'inscription adaptés à inscrire dans la négative une copie de la balise enfant en amont de la première balise dans le document ; et - des moyens de substitution dans la première balise de la balise enfant par une balise de lien adaptée à pointer vers la copie de la balise enfant. Ce dispositif de transformation d'un document présente des avantages et caractéristiques analogues au procédé de transformation conforme à l'invention qu'il met en oeuvre. La présente invention concerne également un ordinateur comprenant des moyens adaptés à mettre en #uvre un procédé de transformation d'un document. Elle concerne en outre un réseau de communication comprenant un dispositif de transformation d'un document conforme à l'invention. Elle vise également un moyen de stockage d'informations, éventuellement partiellement ou totalement amovible, lisible par un système informatique, comprenant des instructions pour un programme adaptées à mettre en oeuvre le procédé de transformation d'un document conforme à l'invention lorsque le programme est chargé et exécuté par le système informatique. Enfin, la présente invention concerne un programme d'ordinateur, lisible par un microprocesseur, comprenant des portions de code logiciel adaptées à mettre en #uvre le procédé de transformation d'un document lorsque ledit programme d'ordinateur est chargé et exécuté par le microprocesseur. Les ordinateur, réseau de communication, moyen de stockage d'informations et programme d'ordinateur présentent des caractéristiques et avantages analogues au procédé qu'ils mettent en #uvre. D'autres particularités et avantages de l'invention apparaîtront encore dans la description ci-après. Aux dessins annexés, donnés à titre d'exemples non limitatifs : - la figure 1 est un schéma simplifié illustrant la transmission d'un document dans un réseau de communication ; - la figure 2 est un algorithme illustrant le procédé de transformation d'un document conforme à un mode de réalisation de l'invention ; - la figure 3 est un algorithme illustrant un procédé de lecture d'un document transformé par le procédé de transformation conforme à l'invention ; et - la figure 4 est un schéma bloc illustrant un dispositif adapté à mettre en #uvre le procédé de transformation conforme à l'invention. On va décrire tout d'abord en référence à la figure 1 le procédé de transformation d'un document conforme à l'invention. On considère dans la suite de la description, et de manière nullement limitative, un document représenté dans un langage de balisage du type XML (acronyme du terme anglais "eXtended Markup Language"). Ces fichiers XML sont utilisés couramment pour transmettre des informations sur un réseau de communication tel qu'Internet, entre un client et un serveur. Ainsi, un fichier XML est généralement créé lors d'une étape de création E10, par un utilisateur désirant transmettre un document sur un réseau de communication. A titre d'exemple, le fichier peut se présenter de la manière suivante : bitmap 24 140 24 zoze...C ?r' (-2DJND92... Ce fichier comporte une requête XML classique incluant une balise "image". Cette balise "image" encapsule sous un format XML une image de type "bitmap". De manière classique, ce document XML comprend une série de balises imbriquées les unes dans les autres. On rappelle que dans un tel document les balises enfants sont des balises incluses dans des balises parents. Ici, a titre d'exemple la balise "image" est une balise enfant de la balise "oml:storelmage", et une balise parent pour la balise "type". Dans un tel document, il peut être intéressant avant sa transmission sur le réseau de communication de pouvoir modifier ce fichier afin d'optimiser cette transmission, en compressant, ou en cryptant tout ou une partie du fichier. Dans l'exemple précédent, il peut être intéressant d'appliquer un traitement ZIP à l'ensemble du message, en compressant le message selon l'algorithme LZW bien connu de l'homme du métier, en excluant la balise "image" qui peut être remplacée par une balise contenant une version de l'image compressée selon la norme JPEG (acronyme du terme anglais "Joint Picture Expert Group"). L'utilisateur qui souhaite ainsi envoyer ou stocker un tel fichier spécifie dans une étape de spécification E11les traitements à effectuer sur chacune des balises. De préférence, chaque traitement est spécifié par un attribut associé à une balise. L'attribut "process" peut être ainsi utilisé pour définir ces traitements applicables à des données incluses dans une balise du document. Les traitements qui sont spécifiés ainsi peuvent être des traitements bien connus par tous les ordinateurs d'un réseau de communication, de telle sorte qu'il n'est pas nécessaire de décrire plus avant ce traitement. La référence à ce traitement est suffisante pour permettre à un ordinateur serveur de mettre en #uvre ce traitement. Un tel traitement peut être référencé par exemple à l'aide d'une URL (acronyme du terme anglais "Uniform Ressource Locator"). Des traitements particuliers peuvent en outre être définis directement à l'intérieur du fichier XML. Ainsi, ces traitements sont spécifiés dans un langage de balisage, c'est-à-dire ici en XML, la spécification de ce traitement étant incluse elle-même dans le document XML. Les traitements ainsi spécifiés dans le document peuvent se présenter sous la forme d'appel de fonctions à distance, disponibles sur d'autres serveurs du réseau de communication, ou bien sous la forme d'un programme représenté dans un langage XML, tel que le langage XPL (acronyme du terme anglais "eXtended Programmable Language"). Ici, en reprenant l'exemple précédent, on peut spécifier un traitement "zip" pour la balise "message" et un traitement "jpeg" pour la balise "image". On peut également prévoir un traitement multiple des données d'une même balise. Ici, un cryptage et un traitement "zip" sont spécifiés pour les données de la balise "authentification". Le document de l'exemple précédent est ainsi modifié : bitmap 24 140 24 zoze...C ? r' (-2DJND92... Une étape de traitement E12 est ensuite mise en #uvre pour traiter le message. Dans l'état de la technique, l'exemple précédent serait traité en transformant le contenu de la balise "image" dans une version JPEG, puis en procédant au traitement ZIP de l'ensemble de la balise "message", y compris de l'image au format JPEG. Un tel fichier pourrait être ensuite transmis dans une étape de transmission E13 à un second ordinateur du réseau de communication, afin de reconstruire dans une étape de reconstruction E14 le fichier XML et d'utiliser dans une étape d'utilisation E15 ce fichier. Conformément à l'invention, un procédé de transformation du document XML est mis en #uvre lors de l'étape de traitement E12, afin de gérer au mieux l'imbrication des traitements dans le document XML. Ce procédé de transformation est illustré à la figure 2 de manière générale pour une chaîne de balises imbriquées les unes dans les autres. Ce procédé de transformation va ainsi être décrit tout d'abord de manière générale pour une chaîne de balises CH. On considère que cette chaîne de balises comporte ainsi une série de balises, la première balise Bfirst correspondant à la balise de plus haut rang de la chaîne considérée CH, et la dernière balise Blast correspondant à la balise de plus petit rang de cette chaîne CH. Le procédé de transformation comporte tout d'abord une étape d'obtention E20 d'une chaîne de balises CH, et d'une liste L de traitements associés. Une étape d'ajout E21 est ensuite mise en oeuvre pour ajouter les traitements T de la dernière balise Blast à la liste L. Lors de cette étape d'ajout E21, s'il n'existe pas de traitement T associé à la dernière balise Blast, une copie de la dernière valeur ajoutée à la liste L est effectivement ajoutée à cette liste L. Cette dernière valeur correspond à un ensemble de traitements T associé à une balise parente de Blast traitée précédemment par l'algorithme de transformation. Une étape de test E22 permet de vérifier si une balise enfant Benf de la dernière balise Blast n'a pas encore été considérée dans le procédé de transformation. Dans l'affirmative, une étape d'ajout E23 permet d'ajouter cette balise enfant Benf, avec l'ensemble des données qu'elle comprend, à la chaîne CH, cette balise enfant Benf devenant alors la dernière balise Blast dans la chaîne CH. Les étapes E20 à E22 sont alors réitérées, jusqu'à ce qu'il n'existe plus de balise enfant Benf non traitée. La liste L comporte ainsi l'ensemble des traitements associés à chaque balise imbriquée l'une dans l'autre. Une étape de test E24 permet de vérifier, à l'issue de l'étape de test E22, si la dernière balise Blast est elle-même une balise associée à un traitement de ses données. En pratique, on vérifie si l'ensemble des traitements T associés à cette balise Blast est vide ou non. Si à l'issue de l'étape de test E24, la dernière balise Blast est associée à un traitement de ses données, une étape de lecture E25 est mise en #uvre pour lire une balise Bch en remontant dans la chaîne CH, c'est-à-dire la balise parent de la dernière balise Blast. Une étape de test E26 permet de vérifier la compatibilité des traitements associés à la dernière balise Blast et à cette balise lue Bch. En pratique, cette étape de test E26 peut être mise en #uvre à partir d'un tableau dans lequel sont spécifiés différents traitements et la compatibilité des uns par rapport aux autres. Ainsi, en se reportant à l'exemple précédent, ce tableau mentionnerait que le traitement JPEG n'est pas compatible avec le traitement ZIP. Si les traitements sont incompatibles, on réitère l'étape de lecture E25 afin d'identifier une autre balise Bch en remontant dans la chaîne CH et l'étape de test E26 est mise en #uvre sur cette nouvelle balise. On notera que ce test en boucle permettant de remonter de balise en balise dans la chaîne CH se termine forcément par un test négatif à l'étape de test E26 dès lors que la première balise Bfirst de la chaîne ne peut être associée à un traitement. Lorsqu'à l'issue de l'étape E26, les traitements associés à la balise lue Bch et à la dernière balise Blast sont compatibles, une étape de test E27 est mise en #uvre afin de vérifier si la balise Blast est une balise enfant directe de la balise lue Bch. Dans la négative, on associe à cette dernière balise Blast un identifiant unique permettant de pointer vers cette balise Blast. Cet identifiant unique peut ainsi être défini par un attribut "ref' dont la valeur permet de déterminer de manière unique la balise traitée Blast. L'étape d'ajout E28 est également mise en #uvre afin de substituer la dernière balise Blast par une balise de lien BI adaptée à pointer vers une copie de la balise Blast. Ce pointeur est réalisé grâce à l'identifiant unique associé à une copie de la balise traitée Blast. La copie de cette dernière balise Blast est alors inscrite comme une balise enfant de la balise lue Bch. Que la dernière balise Blast soit une balise enfant directe de la balise lue Bch à l'issue de l'étape de test E27 ou non, une étape de traitement de cette balise est ensuite mise en #uvre. Cette étape de traitement E29 est adaptée à effectuer le ou les traitements des données incluses dans cette dernière balise Blast, non communs aux traitements associés à la balise de rang supérieur Bch. On évite ainsi de dupliquer sur les données des mêmes traitements pour des balises imbriquées les unes dans les autres et présentant des traitements compatibles. Le contenu de la dernière balise Blast est ensuite remplacé par le résultat des traitements mis en #uvre. Une étape de marquage E30 est ensuite mise en #uvre pour marquer cette balise Blast comme traitée. Cette balise Blast est alors retirée de la chaîne CH, ainsi que les traitements T associés à cette balise Blast de la liste de traitements L. Cette étape de marquage E30 est également appliquée directement à la dernière balise Blast lorsqu'à l'issue de l'étape de test E24, la liste des traitements T associés à cette dernière balise Blast est vide de telle sorte qu'aucun traitement n'est à appliquer au contenu des données de cette balise. Ensuite les étapes E20 à E30 sont réitérées pour la suite de la chaîne CH, dans laquelle la dernière balise traitée a été retirée. En revenant à l'exemple du document XML précédent, le procédé de transformation conforme à l'invention tel que décrit précédemment s'applique de la manière suivante. On considère la première balise du message associée à un traitement, par l'intermédiaire d'un attribut "process". Ici, la balise "message" est la première balise associée à un traitement. L'étape de lecture E22 est ensuite mise en #uvre afin d'identifier une première balise enfant de cette balise "message". La balise enfant "image" est également associée à un traitement et on réitère pour celle-ci l'étape de lecture E22. Cette balise "image" ne contenant pas elle-même de balises nécessitant des traitements, on peut traiter cette balise "image". On vérifie dans l'étape de test E26 si le traitement de la balise "image" et le traitement de la balise "message" sont compatibles. Ici, le traitement "jpeg" n'est pas compatible avec le traitement "zip". On copie alors dans l'étape d'ajout E28 la balise "image" en amont de la balise "message" de telle sorte que cette balise "image" devient une balise enfant de la balise "oml:example" associée à aucun traitement. Lors de la copie de cette balise "image" on ajoute à cette balise un identifiant unique, grâce à l'attribut "ref' dont la valeur permet de référencer de manière unique cette balise. Cet attribut peut avoir par exemple la valeur "image". Ensuite l'étape d'ajout E28 permet de remplacer la balise "image" par une balise de lien pointant vers la copie de la balise "image". On obtient ainsi le fichier transformé suivant : bitmap 24 140 24 zoze...C ? r' (-2DJND92... La balise de lien "imagepointer" a ainsi une valeur "value" égale à "image" permettant de pointer vers la balise "image" dont l'identifiant "ref' a également cette valeur "image". On effectue ensuite une étape de traitement E29 sur les données associées à la balise image, c'est-à-dire un traitement JPEG de l'image. Le document précédent est alors transformé de la manière suivante : ér'8fdù$=ùcF3JJdééà ç-(... Le procédé de transformation conforme à l'invention se poursuit alors pour les autres balises enfants de la balise "message". Dans l'exemple précédent, la balise "authentification" est associée à deux traitements "zip" et "encrypt". En pratique, l'attribut "process" comporte le nom de chaque traitement, l'un après l'autre séparé par le caractère +. Le premier traitement à effectuer est le dernier spécifié dans l'attribut "process". Ici, le premier traitement à effectuer est le traitement "encrypt". Pour vérifier alors la compatibilité d'un traitement d'une balise avec des traitements antérieurs, c'est-à-dire des traitements définis par des balises parents, on vérifie si ce traitement est compatible avec l'ensemble des traitements spécifiés par l'attribut "process" dans l'ordre de lecture de cet attribut. En outre, si le traitement d'une balise est compatible avec des traitements antérieurs, seuls les traitements non communs à la balise à traiter et aux balises parents sont appliqués à la balise lors de l'étape de traitement E29. Ainsi, dans l'exemple précédent, le traitement "encrypt" est appliqué seul à la balise "authentification" de la manière suivante : ér'8fdù^@=ùcF3JJdééà ç~(... 13D1E2F, ; :, ; Ensuite, l'ensemble de la balise "message" est traité selon l'algorithme de compression ZIP : ér'8fdù^@=ùcF3JJdééà ç~( ... é ùm'ùf@'ùv !voldkd*ù$ù :;:,shé... On donne ci-après un autre exemple de document XML dans lequel un même traitement "encrypt1"se retrouve associé à différentes balises dans le document XML : Comme expliqué précédemment, le procédé de transformation permet de copier la balise "certificate" en amont de la balise "authentication" dès lors que le traitement "encrypt2" associé à cette balise "authentication" n'est pas compatible avec le traitement "encrypt1" associé à la balise "certificate". Un pointeur ayant pour valeur "certif' est utilisé pour référencer cette balise "certificate". Le document se présente alors de la manière suivante : Dès lors que le procédé "encrypt1" est identique au procédé associé à la balise parent "message" il n'est pas nécessaire lors de l'étape de traitement de traiter indépendamment la balise "certificate". En pratique, on supprime l'attribut "process" associé à la valeur "encrypt1" dans la balise certificate, de telle sorte que le document se présente de la manière suivante : value="certif"/> Ensuite, par la mise en #uvre de manière récursive du procédé de transformation sur le document, la balise "authentication" est également copiée en amont de la balise "image" dès lors que les deux procédés associés respectivement à ces balises "encrypt1" et "encrypt2" ne sont pas compatibles. Le document se présente alors de la manière suivante : Le traitement des balises "authentication" et "message" peut ensuite être réalisé indépendamment l'un de l'autre de manière à encrypter les données contenues dans ces différentes balises du document. On obtient ainsi un document crypté se présentant de la manière suivante : & ;' ;;g(é à'ç(ç~-gs... length="26"> ^ùl*ùp2^^ù3*90çàr éedé... Ainsi, le procédé de transformation conforme à l'invention permet d'optimiser les traitements à effectuer sur un document en langage de balisage, en gérant au mieux les imbrications des différents traitements dans les balises. On va décrire à présent en référence à la figure 3 un procédé de lecture d'un fichier transformé par le procédé de transformation décrit précédemment. De manière générale, ce procédé de lecture est adapté à tester toutes les balises du document. Dans une étape d'obtention E40, on obtient une liste CH de balises allant d'une première balise Bfirst à une dernière balise Blast. En pratique, on utilise un algorithme de parcours de l'arbre XML. La chaîne ou pile de balises récupérées à l'étape d'obtention E40 représente l'état d'avancement du parcours dans l'arbre du document XML. Initialement, cette chaîne contient uniquement la balise racine du document, c'est-à-dire la balise de plus haut rang. Une étape de test E41 permet de vérifier si la dernière balise Blast de la chaîne CH est une balise de type pointé. Dans l'affirmative, on mémorise cette balise dans un tableau TAB et on retire cette dernière balise Blast de l'arbre du document XML et de la chaîne CH dans une étape de retrait E42. On réitère ensuite l'ensemble des étapes E40 et E41. Si à l'issue de l'étape de test E41, la dernière balise Blast n'est pas de type pointé, une étape de test E43 permet de vérifier si cette dernière balise Blast est de type pointeur. Dans l'affirmative, une étape de recherche E44 permet d'identifier la balise pointée dans le tableau TAB et une étape de substitution E45 est adaptée à remplacer cette dernière balise Blast par la balise pointée lue dans le tableau TAB à la fois dans l'arbre du document XML et dans la chaîne CH. Chaque balise pointée possédant un identifiant unique comme décrit précédemment, le tableau TAB permet d'associer cet identifiant unique à sa balise. La balise pointeur contient l'identifiant de la balise pointée de telle sorte que lors de l'étape de recherche E44, il est possible d'identifier à l'aide du tableau TAB la balise pointée à partir de l'identifiant inscrit dans la balise pointeur. On réitère ensuite l'ensemble des étapes E40 à E43. Si à l'issue de l'étape E43, la balise Blast n'est pas de type pointeur, une étape de test E46 permet de vérifier si cette dernière balise Blast comporte une balise enfant Benf non traitée. Dans l'affirmative, une étape d'ajout E47 est adaptée à ajouter cette balise enfant Benf à la chaîne CH et on réitère pour cette nouvelle chaîne CH l'ensemble des étapes E40 à E46. Si cette dernière balise Blast n'a pas d'enfant non traité, une étape de test E48 permet de voir si un traitement est associé à cette dernière balise Blast. Si cette dernière balise Blast est associée à un traitement, une étape de traitement E49 est mise en oeuvre et le contenu de la balise Blast est remplacé par le résultat du traitement. Ensuite, à l'issue de cette étape de traitement E49, ou encore si à l'issue de l'étape E48, la balise Blast n'est associée à aucun traitement, une étape de marquage E50 est mise en #uvre pour marquer cette dernière balise Blast comme traitée et enlever cette dernière balise Blast de la chaîne CH considérée. On réitère ensuite sur cette chaîne CH modifiée l'ensemble des étapes E40 à E50. Afin de mettre en #uvre le procédé de transformation d'un document tel que décrit en référence à la figure 2, un dispositif de transformation comprend essentiellement des moyens de vérification adaptés à vérifier la compatibilité ou non de deux traitements et des moyens d'inscription adaptés à inscrire une copie d'une balise enfant en amont d'une balise parent, lorsque les traitements ne sont pas compatibles. Ce dispositif comprend en outre des moyens de substitution d'une balise enfant par une balise de lien adaptée à pointer vers une copie de la balise enfant. Il comprend également des moyens de traitement des données incluses dans la copie de la balise enfant, adaptés à remplacer cette copie de la balise enfant par le résultat du traitement. Ce dispositif de transformation d'un document peut être incorporé dans un ordinateur tel qu'illustré à la figure 4. Plus précisément, les différents moyens identifiés ci-dessus peuvent être incorporés dans un microprocesseur 100, une mémoire morte 101 ("Read Only Memory" ou ROM) étant adaptée à mémoriser un programme de transformation d'un document. Une mémoire vive 102 ("Random Access Memory" ou RAM) est adaptée à mémoriser dans des registres les valeurs modifiées lors de l'exécution du programme de transformation d'un document. En particulier, cette mémoire vive est adaptée à mémoriser un tableau permettant de définir la compatibilité ou non des traitements applicables au document les uns par rapport aux autres. Le microprocesseur 100 est intégré à un ordinateur, on sait qu'il peut être connecté à différents périphériques ou à d'autres ordinateurs d'un réseau de communication 1. En particulier, cet ordinateur correspond à un ordinateur serveur ou un ordinateur client d'un réseau de communication 1. Cet ordinateur C comporte de manière connue une interface de communication 110 reliée au réseau de communication 1 pour recevoir ou transmettre des documents. L'ordinateur comporte en outre des moyens de stockage de documents, tel qu'un disque dur 106, ou est adapté à coopérer au moyen d'un lecteur de disque 107 (disquettes, disques compacts ou cartes informatiques) avec des moyens de stockage de documents amovibles, tels que des disques 7. Ces moyens de stockage fixes ou amovibles peuvent comporter le code du procédé de transformation d'un document conforme à l'invention. Ils sont également adaptés à mémoriser un document écrit dans un langage de balisage tel que le langage XML. A titre de variante, le programme permettant au dispositif de transformation d'un service de mettre en #uvre l'invention peut être stocké dans la mémoire morte 101. En seconde variante, le programme pourra être reçu pour être stocké comme décrit précédemment, par l'intermédiaire du réseau de communication 1. L'ordinateur C possède également un écran 103 permettant par exemple de servir d'interface avec un opérateur à l'aide du clavier 104 ou de la souris 105 ou de tout autre moyen. L'unité centrale 100 (CPU) exécutera alors les instructions relatives à la mise en oeuvre de l'invention. Lors de la mise sous tension, les programmes et méthodes relatives à l'invention stockés dans une mémoire non volatile, par exemple la mémoire morte 101 sont transférés dans la mémoire vive 102 qui contiendra alors le code exécutable de l'invention ainsi que les variables nécessaires à la mise en #uvre de l'invention. Le bus de communication 112 permet la communication entre les différents sous-éléments de l'ordinateur ou liés à lui. La représentation de ce bus 112 n'est pas limitative et notamment le microprocesseur 100 est susceptible de communiquer les instructions à tous sous-éléments directement par l'intermédiaire d'un autre sous-élément. Bien entendu, de nombreuses modifications peuvent être apportées aux exemples de réalisation décrits précédemment sans sortir du cadre de l'invention. Ainsi, bien que précédemment les traitements applicables aux données incluses dans une balise sont spécifiés directement dans le document, grâce à un attribut "process" associé à la balise, ces traitements pourraient également se trouver dans un document séparé ou une partie de document indépendante. En particulier, des normes tels que XPATH ou XLINK permettent de construire des pointeurs adaptés à pointer vers n'importe quelle balise d'un document XML. Ainsi une balise "process" pourrait être utilisée pour spécifier des traitements. L'exemple suivant illustre un tel document : Ainsi la balise se trouve soit dans le document XML lui-même, soit dans autre document. Tout type de traitement peut être défini à l'aide de cette balise, et en particulier des traitements faisant appel à différents paramètres pour leurs mises en oeuvre, tel que par exemple une clé utilisée pour le cryptage d'un document. REVENDICATIONS 1. Procédé de transformation d'un document représenté dans un langage de balisage, une première balise étant associée à au moins un premier traitement des données incluses dans ladite première balise, et contenant une balise enfant associée à au moins un deuxième traitement des données incluses dans ladite balise enfant, ladite balise enfant ne contenant pas de balise associée à un traitement, caractérisé en ce qu'il comprend les étapes suivantes : - vérification (E26) de la compatibilité ou non du premier et du deuxième traitement ; - dans la négative, inscription (E28) d'une copie de ladite balise enfant en amont de ladite première balise dans le document ; et - substitution (E38) dans ladite première balise de la balise enfant par une balise de lien adaptée à pointer vers ladite copie de la balise enfant. 2. Procédé de transformation conforme à la revendication 1, ladite première balise étant contenue dans au moins une balise parent associée à au moins un troisième traitement, caractérisé en ce qu'il comprend les étapes suivantes : - vérification (E26) de la compatibilité ou non du deuxième et du troisième traitement ; et - dans l'affirmative, inscription (E28) d'une copie de ladite balise enfant en amont de ladite première balise, dans ladite balise parent ; ou - dans la négative, inscription (E28) d'une copie de ladite balise enfant en amont de ladite balise parent. 3. Procédé de transformation conforme à l'une des revendications 1 ou 2, caractérisé en ce qu'il comprend en outre une étape de traitement (E29) des données incluses dans ladite copie de la balise enfant, ladite copie de la balise enfant étant remplacée par le résultat dudit traitement. 4. Procédé de transformation conforme à la revendication 3, ladite balise enfant étant associée à plusieurs deuxièmes traitements des données incluses dans la balise enfant, caractérisé en ce que l'étape de traitement (E29) des données incluses dans ladite copie de la balise enfant, est adaptée à ne mettre en #uvre que les traitements non communs avec des troisièmes traitements associés à des balises parents de ladite balise enfant. 5. Procédé de transformation conforme à l'une des revendications 1 à 4, caractérisé en ce que lesdits premier, deuxième ou troisième traitements sont spécifiés par un attribut associé respectivement auxdites première balise, balise enfant ou balise parent. 6. Procédé de transformation conforme à la revendication 5, caractérisé en ce que les premier, deuxième ou troisième traitements sont spécifiés dans un langage de balisage, ladite spécification desdits traitements étant incluse dans le document représenté dans un langage de balisage. 7. Procédé de transformation conforme à l'une des revendications 1 à 4, caractérisé en ce que les premier, deuxième ou troisième traitements sont inclus par référence au moyen de pointeurs associés respectivement auxdites première balise, balise enfant ou balise parent. 8. Procédé de transformation conforme à l'une des revendications 1 à 7, caractérisé en ce que le langage de balisage est un langage XML. 9. Dispositif de transformation d'un document représenté dans un langage de balisage, une première balise étant associée à au moins un premier traitement des données incluses dans ladite première balise, et contenant une balise enfant associée à au moins un deuxième traitement des données incluses dans ladite balise enfant, ladite balise enfant ne contenant pas de balise associée à un traitement, caractérisé en ce qu'il comprend : - des moyens de vérification (100,101, 102) de la compatibilité ou non du premier et du deuxième traitement ; - des moyens d'inscription (100,101, 102) adaptés à inscrire une copie de ladite balise enfant en amont de ladite première balise dans le document lorsque les premier et deuxième traitements ne sont pas compatibles ; et des moyens de substitution (100,101, 102) dans ladite première balise de la balise enfant par une balise de lien adaptée à pointer vers ladite copie de la balise enfant. 10. Dispositif de transformation conforme à la revendication 9, ladite première balise étant contenue dans au moins une balise parent associée à au moins un troisième traitement, caractérisé en ce qu'il comprend : - des moyens de vérification (100,101, 102) adaptés à vérifier la compatibilité ou non du deuxième et du troisième traitement ; et - des moyens d'inscription (100,101, 102) adaptés à inscrire une copie de ladite balise enfant en amont de ladite première balise, dans ladite balise parent, lorsque les deuxième et troisième traitements sont compatibles, et adaptés à inscrire une copie de ladite balise enfant en amont de ladite balise parent, lorsque les deuxième et troisième traitements ne sont pas compatibles. 11. Dispositif de transformation conforme à l'une des revendications 9 ou 10, caractérisé en ce qu'il comprend en outre des moyens de traitement (100,101, 102) des données incluses dans la copie de la balise enfant, ladite copie de la balise enfant étant remplacée par le résultat dudit traitement. 12. Dispositif de transformation conforme à l'une des revendications 9 à 11, caractérisé en ce qu'il est incorporé dans : - un microprocesseur (100) ; - une mémoire morte (101) adaptée à mémoriser un programme de transformation d'un document ; et - une mémoire vive (102) comprenant des registres adaptés à mémoriser les variables modifiées lors de l'exécution dudit programme. 13.Ordinateur, caractérisé en ce qu'il comprend des moyens adaptés à mettre en #uvre le procédé de transformation conforme à l'une des revendications 1 à 8. 14 Réseau de communication, caractérisé en ce qu'il comprend un dispositif de transformation conforme à l'une des revendications 9 à 12. 15. Moyen de stockage d'informations, éventuellement partiellement ou totalement amovible, lisible par un système informatique, caractérisé en ce qu'il comprend des instructions pour un programme adaptées à mettre en #uvre les étapes du procédé de transformation conforme à l'une des revendications 1 à 8, lorsque ledit programme est chargé et exécuté par le système informatique. 16. Programme d'ordinateur, lisible par un microprocesseur, caractérisé en ce qu'il comprend des portions de code logiciel adaptées à mettre en #uvre les étapes du procédé de transformation conforme à l'une des revendications 1 à 8, lorsque ledit programme d'ordinateur est chargé et exécuté par le microprocesseur.