FR 2886428 A1 20061201 FR 0505331 A 20050526 La présente invention se rapporte au traitement d'un document en langage de balisage XML. XML est l'acronyme de eXtensible Markup Language . Il s'agit d'un langage informatique de balisage permettant de mettre en forme des documents textuels grâce à des balises (markup). En pratique, XML est une norme (version française accessible à l'adresse http://www.yoyodesign.orq/doc/w3c/xml11/) qui permet de représenter des données sous une forme textuelle. Plus précisément, les documents XML sont constitués d'unités de stockage, appelées entités, qui contiennent soit des données analysables, soit des données non analysables. Les données analysables sont constituées de caractères, dont certains représentent les données textuelles et les autres le balisage. Le balisage code une description de classement (arbre hiérarchique) et de la structure logique du document. XML fournit un mécanisme pour imposer des contraintes sur l'arbre et la structure logique. Des dispositifs de traitement XML, dénommés analyseurs ou parseurs, donnent accès aux données du document XML via ledit arbre et ladite structure logique. On connaît différents types de parseurs XML. Par exemple, le modèle DOM (Document Object Model) construit l'ensemble de l'arbre hiérarchique en mémoire et permet à une application de naviguer à travers cet arbre. L'arbre hiérarchique est composé de noeuds XML. L'inconvénient principal du modèle DOM est qu'il est gourmand en mémoire et nécessite de récupérer l'ensemble du document XML avant de commencer à le traiter. Pour remédier à ces inconvénients, d'autres modèles de parseurs ont été créés. La principale alternative au modèle DOM sont les modèles SAX (Simple API for XML) et PULL (signifiant tirer). Ces deux modèles ont en commun de ne pas construire l'ensemble de l'arbre en mémoire. De tels parseurs naviguent dans l'arbre XML en allant de noeud XML en noeud XML en utilisant un algorithme profondeur . Ils ne gardent en mémoire que le noeud courant de l'arbre XML. Un noeud XML dans ce cas peut notamment correspondre à un élément XML ouvrant, un élément XML fermant, un élément texte... Dans l'exemple 1 ci-après, le fragment XML contient trois noeuds individualisés en NI, N2, N3: un élément ouvrant (NI), un noeud texte (N2) et un noeud fermant (N3). Parmi les types de noeud XML on peut trouver: élément ouvrant, élément fermant, texte, commentaire, section CDATA (données destinées à l'application pouvant contenir des caractères réservés), section DTD (données de définition du type de document), processing instruction... Exemple 1: NI N2 N3 Le parseur XML décompose chaque noeud en un ensemble d'items (l'ensemble exact des items dépendant de l'implémentation exacte du parseur), représentés sous la forme de chaînes de caractères. En reprenant l'exemple 1, le premier noeud N1 (élément ouvrant) peut être séparé en quatre items: 'ns' (ou 'ns:example'), 'example', 'attribute' et 'value' ; le deuxième noeud N2 est représenté en un seul item: 'TextNode' ; le troisième noeud N3 en deux items: 'ns' (ou 'ns:example' dépendamment de l'implémentation exacte du parseur) et 'example'. Chaque item a une fonction particulière et est rendu accessible par le parseur via une application particulière, programmée par exemple en langage C ou C++. Dans le cas du parseur SAX par exemple, le parseur appelle des fonctions implémentées par l'application et spécialisées pour chaque type de noeud. Si l'on reprend l'exemple 1, le parseur SAX appelle dans l'ordre: 1) une fonction du type STARTTAG qui a 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 qui a en paramètre la valeur du noeud texte (ici 'Textnode') ; 3) une fonction du type ENDTAG qui a en paramètre le nom local de l'élément (ici 'example'), son nom qualifié (ici 'ns:example'). Textnode 2886428 3 L'application peut ensuite se servir de chaque item passé par le parseur en paramètres des fonctions pour traiter les données. Les documents XML peuvent utiliser n'importe quel format textuel. Cependant, deux systèmes sont fortement conseillés et utilisés actuellement: UTF-8 et UTF-16 (UCS transformation format 8 bits et UCS transformation format 16 bits, http://www.unicode.org). UTF-8 encode la plupart des caractères sur un octet, UTF-16 encode les caractères sur deux octets. Pour permettre le support de plus de 256 caractères pour UTF- 8 et plus de 65536 pour UTF-16, un mécanisme d'encodage sur une série d'octet pour UTF-8 et une série de deux octets pour UTF-16 a été créé. Ainsi dans UTF-8, les caractères compris entre 0 et 127 sont codés sur un octet, ce qui est compatible avec le code ASCII. Les caractères compris entre 128 et 2047 sont codés sur deux octets et ainsi de suite. Pour permettre un encodage non ambigu, tous les octets d'un document encodé en UTF-8 du type OxllXXX)U(X (les octets dans la plage 0x11000000 et 0x11111111) en binaire doivent correspondre au début d'une suite d'octets correspondant à un seul caractère. Les caractères du type 0x10XX) O(XX (dans la plage 0x10000000 - 0x10111111) en binaire doivent être obligatoirement situés après un octet de début de caractère dont la valeur est dans la plage 0x11)(X)(XXX. Sinon le document est mal encodé. Ces octets sont appelés des 'surrogates' en anglais, il s'agit de mots réservés pour signaler l'existence d'un caractère codé sur plusieurs octets. UTF-16 utilise le même principe avec des plages de valeur différentes. En langage C et C++, les chaînes de caractères sont représentées comme un pointeur vers une suite de caractères terminée par un zéro. La chaîne 'example' est représentée sous la forme hexadécimale suivante [65, 78, 61, 6D, 70, 6C, 65, 0] en mémoire, le zéro indiquant la fin de la chaîne de caractères. Ce système d'encodage des chaînes de caractères est supporté par de nombreuses librairies (printf par exemple nécessite ce système) et de nombreuses applications. Dans le cadre du parseur XML, si l'on souhaite utiliser ce système d'encodage pour le format chaîne de caractères, les solutions connues de l'art 2886428 4 antérieur consistent à détecter les items dans un document textuel mis partiellement ou totalement en mémoire, puis à les copier temporairement en mémoire au format chaîne de caractères. Cependant, de telles solutions engendrent une copie mémoire importante ce qui nuit à l'efficacité et à la rapidité du parseur. Une autre solution consiste à ne pas respecter le format standard de chaîne de caractères et utiliser un format dans lequel on stocke le pointeur de la chaîne de caractères et la taille de la chaîne de caractères. Le problème de cette approche est que la plupart des librairies et programmes ne supportent pas ce format. La présente invention apporte justement une solution à ces problèmes. Elle porte sur un procédé de traitement d'un document écrit en langage de balisage comprenant une liste d'éléments textuels et de balisage. Selon une définition générale de l'invention, le procédé de traitement comprend les étapes suivantes: a) mettre en mémoire ledit document ou un fragment de celui-ci; b) détecter successivement dudit document ainsi mis en mémoire, des éléments textuels en fonction des éléments de balisage associés; c) remplacer le caractère situé à la fin de chaque élément textuel ainsi détecté par un caractère de signalisation choisi; et d) obtenir un document ainsi traité. Ainsi, le parseur peut envoyer tous les items du document ainsi traité selon le procédé conforme à l'invention, à l'application avec le bon format sans avoir à recopier en mémoire chaque item en entier. Il en résulte une meilleure efficacité de traitement et une économie dans l'utilisation de la ressource mémoire. En pratique, le langage de balisage est le langage XML. Selon une réalisation, le caractère de signalisation choisi est un zéro. Ainsi, les éléments textuels sont mis dans un format d'encodage des chaînes de caractères directement exploitable par divers langages de programmation utilisés dans les applications. 2886428 5 Ainsi, le procédé conforme à l'invention fonctionne tant que l'on ne souhaite pas traiter de nouveau le document XML. Retraiter un document XML peut être utile dans certaines occasions, notamment lors du traitement de messages selon le protocole SOAP, Simple Object Access Protocol , c'est-à-dire protocole d'accès pour des objets simples ou lors d'évaluation d'expressions XPath (http://www.w3.org/TR/xpath). Or avec le procédé conforme à l'invention, il n'est pas possible de retraiter directement le document XML mis en mémoire, car l'ajout de zéros peut enlever certaines informations nécessaires par exemple à la détection du type de noeud. Pour remédier à cet inconvénient, il est possible de recopier de nouveau le document XML d'origine non modifié en mémoire. Cependant, cette méthode, de mise en oeuvre simple, n'est pas toujours possible et pas forcément adéquate dans de nombreuses situations, dans la mesure où elle est consommatrice de ressource mémoire. Une autre solution selon l'invention consiste à remettre les caractères initiaux qui ont été écrasés dans le fragment XML au moment où l'on quitte le noeud. Dans ce cas, le procédé comprend en outre l'étape suivante: e) remettre chaque élément textuel ainsi modifié dans l'état initial avant le remplacement par le caractère de signalisation choisi. Selon une autre réalisation de l'invention, on remet en place uniquement certains caractères tels que: le caractère de fin de noeud texte qui peut correspondre au caractère de début d'un élément; le caractère correspondant à la fin du nom de l'élément lorsqu'il s'agit d'un noeud élément (ouvrant ou fermant). Dans ce cas, le parseur est adapté et mis en mode retraitement pour interpréter correctement les zéros restant dans le document. Cette réalisation selon l'invention permet de ne pas avoir à récupérer le document XML d'origine. Il permet partiellement au parseur de profiter du fait qu'il a déjà traité le document pour améliorer l'efficacité lorsqu'il traite de nouveau le document car les items correspondant aux attributs XML restent séparés par des zéros. Selon encore une autre réalisation de l'invention, le procédé comprend en outre l'étape suivante: ci) remplacer le caractère situé avant chaque élément textuel ainsi modifié par un caractère d'enrichissement choisi. En pratique, le caractère d'enrichissement choisi est défini en fonction de l'élément textuel à traiter. Par exemple, le caractère d'enrichissement comprend des éléments appartenant au groupe formé par la taille, le nombre de caractères, le nom et le type de l'élément textuel à traiter. Lors du retraitement par le parseur, celui-ci détecte ces caractères d'enrichissement et peut ainsi accélérer le traitement du noeud. En variante, ces caractères d'enrichissement peuvent être intégrés dans le document sous forme d'erreurs volontaires d'encodage pour pouvoir être détectés comme caractères d'enrichissement sans ambiguïté, ce qui permet au parseur de détecter correctement et facilement de tels caractères. La présente invention a également pour objet un dispositif de traitement d'un document écrit en langage de balisage comprenant une liste d'éléments textuels et de balisage. Selon un autre aspect de l'invention, le dispositif comprend: -des moyens de mémorisation pour mettre en mémoire ledit document ou un fragment de celui-ci; - des moyens de détection pour détecter successivement dudit document ainsi mis en mémoire, des éléments textuels en fonction des éléments de balisage associés; et - des moyens de remplacement pour remplacer le caractère situé à la fin de chaque élément textuel ainsi détecté par un caractère de signalisation choisi. Selon une réalisation, le dispositif comprend en outre des moyens de traitement pour remettre chaque élément textuel ainsi modifié dans l'état initial avant le remplacement par le caractère de signalisation choisi. Selon une autre réalisation, le dispositif comprend en outre des moyens de remplacement pour remplacer le caractère situé avant chaque élément textuel ainsi modifié par un caractère d'enrichissement choisi. La présente invention a également pour objet un support d'informations lisible par un système informatique, éventuellement amovible, totalement ou partiellement, notamment CD-ROM ou support magnétique, tel un disque dur ou une disquette, ou support transmissible, tel un signal électrique ou optique, caractérisé en ce qu'il comporte des instructions d'un programme d'ordinateur permettant la mise en oeuvre d'un procédé mentionné ci-avant, lorsque ce programme est chargé et exécuté par un système informatique. La présente invention a enfin pour objet un programme d'ordinateur stocké sur un support d'informations, ledit programme comportant des instructions permettant la mise en oeuvre d'un procédé mentionné ci-avant, lorsque ce programme est chargé et exécuté par un système informatique. D'autres caractéristiques et avantages de l'invention apparaîtront à la lumière de la description détaillée ci-après et des dessins dans lesquels: - la figure 1 représente l'algorithme générique de traitement du document XML selon l'invention; - la figure 2 représente un organigramme illustrant en détail le procédé de traitement selon l'invention; - la figure 3 représente un organigramme illustrant le post- traitement d'un document selon l'invention; - la figure 4 représente un organigramme illustrant le retraitement d'un document selon l'invention; et - la figure 5 représente schématiquement les ressources physiques d'un dispositif de traitement mettant en oeuvre l'invention. Selon l'invention, pour ne pas avoir à recopier chaque item, un caractère de signalisation tel qu'un zéro est placé à la fin de chaque item par le parseur directement dans le fragment XML mis en mémoire. En pratique, le caractère zéro remplace le caractère situé à la fin de chaque item ainsi détecté par le parseur. Ainsi, le parseur peut envoyer les items à l'application avec le bon format sans avoir à recopier l'item en entier. L'exemple 2 illustre l'état du document XML mis en mémoire avant et après avoir traité le premier noeud NI qui correspond à un noeud élément ouvrant. Tous les items détectés finissent ici par un zéro qui a pu être inclus directement dans le document XML mis en mémoire. L'ajout des zéros ne détruit aucun item XML car ces items sont toujours séparés par un caractère spécial. Exemple 2: NI N2 10 N3 Textnode Textnode Dans le cas où l'on souhaite traiter de nouveau le document XML, il peut être utile et opportun de remettre les caractères d'origine qui ont été écrasés dans le fragment XML au moment où l'on quitte le noeud, ainsi que le montre l'exemple 3 ci-après. Par exemple, on peut remettre en place uniquement les caractères suivants: le caractère de fin de noeud texte qui peut correspondre au caractère de début d'un élément; le caractère correspondant à la fin du nom de l'élément lorsqu'il s'agit d'un noeud élément (ouvrant ou fermant). Dans ce cas, le parseur est adapté et mis en mode retraitement pour interpréter correctement les zéros restant dans le document. Cette réalisation selon l'invention permet de ne pas avoir à récupérer le document XML d'origine. Le parseur profite du fait qu'il a déjà traité le document pour améliorer l'efficacité du traitement lorsqu'il traite de nouveau le document car les items correspondant aux attributs XML restent séparés par des zéros. Par ailleurs, il est possible d'enlever certains tests de validité XML au moment du retraitement car ils ont déjà été effectués au moment du premier traitement. L'exemple 3 illustre cette approche: la première étape consiste à traiter le premier noeud NI (élément ouvrant) ; la deuxième étape consiste à remettre les caractères écrasés nécessaires dans le premier noeud NI puis à traiter le noeud suivant N2, ici un noeud texte; la troisième étape consiste dans un premier temps à remettre le caractère écrasé pour marquer la fin du noeud texte puis à traiter le noeud suivant N3, ici élément fermant. Exemple 3: Textnode Textnode Etape 1 Etape 2 Textnode Textnode 0/ns:example> Une autre réalisation selon l'invention permet de conserver certaines des informations de chaque noeud directement dans le document XML d'origine, de façon à pouvoir retraiter le document plus rapidement. On suppose que le document XML d'origine est encodé en UTF-8 ou UTF-16. On peut alors inclure volontairement des erreurs d'encodage ou caractères d'enrichissement (remplacer un caractère OxOXX)OCXX par un caractère Oxl 1)00000( par exemple). Il est possible d'inclure volontairement des erreurs d'encodage, car le parseur a vérifié durant le premier traitement que le document XML est correctement encodé et donc qu'aucune erreur d'encodage préexistante n'est contenue dans le document. Lorsque le parseur retraite le document, il détecte les erreurs d'encodage et en déduit les informations utiles pour améliorer son traitement. Ces erreurs d'encodage sont placées aux endroits clefs des documents XML, c'est-à-dire au début des noeuds d'éléments (ouvrant, fermant, texte, commentaire, section CDATA...). Le caractère remplacé est . Dans l'exemple suivant, la première étape consiste à traiter le noeud élément ouvrant. On connaît alors toutes les informations du noeud (son type, son nombre d'attributs, sa taille..). Textnode 10 Ces données sont alors encodées sur 6 bits (si le document est encodé en UTF-8) ou 11 bits (si le document est encodé en UTF-16). Puisqu'on dispose d'un nombre de bits limité, il n'est pas toujours possible de stocker toutes les informations du noeud courant, une sélection est donc faite au moment de l'implémentation du parseur. Ces 6 ou 11 bits sont alors concaténés au préfixe correspondant à un surrogate (préfixe égal à 0x11 en UTF-8 et 0x11011 en UTF-16). Le caractère d'enrichissement ainsi créé est inséré à la place du caractère de début de noeud. Dans l'exemple 4, le caractère erroné inséré à la place du caractère La deuxième étape de l'exemple consiste à traiter le noeud texte. A la fin de ce traitement, on sait qu'il s'agit d'un noeud texte et on peut vouloir sauvegarder la taille de ce noeud texte. Si celle-ci est trop importante pour être encodée en 6 (ou 11) bits, une valeur par défaut indiquant que la taille est trop importante est insérée. La troisième étape de l'exemple consiste à traiter le noeud élément fermant. On peut par exemple encoder le type du noeud et le nombre de caractère que comprend le nom de cet élément fermant. On remplace alors le caractère de début de noeud par le caractère d'enrichissement ainsi créé. Exemple 4: Textnode sns:example0attribute0'value0> Textnode Etape 2 s ns:example0attribute0'value0 ^ Textnode rLu/ns:example0 sns:example0attribute0'value07 Textnode 0/ns:example> Etape 1 Etape 3 Dans le cas d'UTF-8, on possède 6 bits pour encoder des données et dans le cas d'UTF-16, on possède 11 octets pour encoder des données. Les informations encodées doivent permettre de retraiter le noeud courant. La première information généralement encodée est le type de noeud. Il peut s'agir d'un noeud élément ouvrant, élément fermant, commentaire... Les autres informations dépendent du type du noeud. S'il s'agit d'un noeud élément, une information supplémentaire peut être de savoir si l'élément a un préfixe ou quel est le nombre d'attributs de cet élément. Il peut aussi s'agir de la longueur de la chaîne de commentaire dans le cas d'un noeud commentaire, la longueur du nom de l'élément dans le cas d'un noeud fermant. En référence à la figure 1, on a décrit l'algorithme générique de traitement de document XML. On commence par traiter un noeud particulier (étape E005, détaillée par la suite). Une fois le noeud traité, les informations récoltées sont transmises à l'application qui va les utiliser (étape E010). L'algorithme se poursuit par une étape de détection d'un nouveau noeud (étape E015). Si tel est le cas, on effectue un post-traitement du noeud courant (étape E020 détaillée par la suite) et on repart à l'étape E005. Sinon le traitement est fini (étape E025) et l'algorithme s'arrête. En référence à la figure 2, on a décrit en détail les étapes de traitement du procédé selon l'invention. L'algorithme commence par détecter le type de noeud XML. On teste donc si le noeud est de type texte, élément ouvrant, élément fermant ou autre (commentaire...) respectivement aux étapes E100, E115 et E135. Ce test s'effectue grâce aux premiers caractères dans le document XML mis en mémoire correspondant au noeud. Par exemple si le premier caractère n'est pas ' S'il s'agit d'un noeud texte, on détecte la fin du noeud texte et l'on ajoute à la fin du noeud texte un zéro si nécessaire (étape E105). Cet ajout n'est nécessaire que pour les applications nécessitant une chaîne terminée par zéro pour les noeuds textes, par exemple les applications programmées en langage de programmation C ou C++. Le traitement du noeud est alors terminé (étape E110). S'il s'agit d'un noeud élément ouvrant, on détecte le nom de l'élément et on ajoute un zéro là où nécessaire (étape E120), c'est à dire à la fin du nom de l'élément. On détecte ensuite la présence ou pas d'un attribut (étape E125). S'il y a un attribut, on récupère son nom et sa valeur. Un zéro est ajouté à la fin du nom de l'attribut et à la fin de la valeur de l'attribut (étape E130). On repart à l'étape E125 pour détecter un nouvel attribut. Une fois tous les attributs détectés, le traitement du noeud est terminé (étape E110). S'il s'agit d'un noeud élément fermant, on détecte le nom de l'élément (étape E140) qui utilise le même procédé que l'étape E120. Le traitement est alors terminé (étape E110). S'il s'agit d'un noeud d'un autre type, on passe à l'étape E145. L'algorithme par défaut consiste à détecter la fin du noeud, à ajouter un zéro à la fin de ce noeud et à passer la chaîne de caractère correspondante à l'application. Il est possible d'étendre l'algorithme pour augmenter le nombre de types de noeud testé dans cette étape. En référence à la figure 3, on a décrit un organigramme illustrant le post-traitement d'un document XML selon l'invention L'étape de posttraitement dépend du type de noeud. Les étapes E200, E215 et E225 permettent de séparer les post-traitements suivant le type du noeud de manière similaire aux étapes E100, E115 et E145. Le post-traitement dépend aussi des options choisies concernant le retraitement de document XML. Suivant le type de noeud, une restauration est effectuée (étapes E205, E220 et E225). Les étapes E205, E220 et E225 dépendent du type de restauration voulu. On distingue ici trois modes de mise en oeuvre: - la restauration totale, qui consiste à remettre tous les caractères qui ont été remplacés par un caractère de signalisation lors de l'étape de traitement. Ce mode n'est pas le plus efficace en termes de rapidité de traitement, mais il possède l'avantage de permettre à tout parseur XML standard de traiter le document XML recréé. - la restauration minimale (voir exemple 3 ci-dessus), qui consiste à remettre en place uniquement les caractères qui sont absolument nécessaires au parseur pour son bon fonctionnement (type d'élément, fin des sections du type CDATA et DTD par exemple). Ce mode procure un posttraitement plus rapide, mais il est alors nécessaire d'utiliser un parseur dédié pour le retraitement; - la conservation d'informations, qui consiste à remplacer certains caractères choisis par des caractères d'enrichissement, comme expliqué ci-dessus en référence à l'exemple 4. Ce mode permet un retraitement ultérieur très efficace par un parseur dédié. Dans le cas d'une restauration totale: - l'étape E205 consiste à restaurer le caractère de fin de noeud texte s'il a été modifié ; - l'étape E220 consiste à restaurer le caractère de fin de nom 15 d'élément. S'il s'agit d'un noeud ouvrant, on restaure en plus les caractères de fin de nom d'attributs (espace ou caractère '_') et fin de valeur d'attributs (caractère guillemet) ; - l'étape E225 consiste à restaurer le caractère de fin de noeud (par exemple pour les sections CDATA). Dans le cas d'une restauration minimale: - l'étape E205 est identique au cas précédent; - l'étape E220 consiste à restaurer le caractère de fin de nom d'élément. On ne restaure pas les attributs; -l'étape E225 ne comporte aucune modification à apporter. 25 Dans le cas d'une conservation d'informations: - l'étape E205 est identique au cas précédent; - l'étape E220 consiste à restaurer le caractère de fin de nom d'élément. On calcule par ailleurs le nouveau caractère à insérer à la place du caractère de début de noeud. On le calcule en fonction des données du noeud XML (type de noeud, présence de préfixe, d'attributs...). Comme expliqué en référence à l'exemple 4, on calcule le caractère d'enrichissement en fonction du type d'encodage initial (UTF-8 ou UTF-16) et de la correspondance prédéterminée entre caractères et données à encoder. Le caractère d'enrichissement est alors inséré sous forme d'erreur d'encodage. - l'étape E225 consiste à insérer à la place du caractère de début de noeud le caractère contenant des informations sur le noeud (type, longueur de la chaîne de caractères...). En référence à la figure 4, on a décrit un organigramme illustrant le retraitement d'un document XML conformément à l'invention. L'algorithme de retraitement suit la même logique que l'algorithme de traitement. Il est d'ailleurs identique lorsque l'option de restauration totale est employée. Cet algorithme de retraitement peut néanmoins utiliser le fait que le document ayant déjà été traité, certains tests de validité, notamment des items, ne sont potentiellement plus nécessaires pour améliorer la rapidité du traitement. Dans les autres cas (restauration minimale ou conservation d'informations), l'algorithme de retraitement d'un noeud XML est semblable à l'algorithme de traitement dans sa structure. La détection d'un nouveau noeud est la même que pour l'algorithme de traitement sauf que l'on cherche une erreur d'encodage plutôt que le caractère ' Les étapes E305, E330 et E345 sont différentes en ce qu'elles peuvent utiliser le fait que sont disponibles des informations guidant le retraitement. Ainsi, l'étape E345 peut s'implémenter en détectant la fin du noeud en recherchant le caractère zéro '\0'. Les étapes E320 et E340, analogues à E120 et E140, peuvent également utiliser la connaissance de la longueur du nom de l'élément pour accélérer le retraitement. Le procédé selon l'invention permet ainsi de traiter des documents XML sans aucune allocation et copie mémoire de chaîne de caractères, de respecter le format standard des chaînes de caractères, un retraitement efficace du document XML sans surcoût important au moment du traitement, et une taille réduite de code pour l'implémentation du retraitement du document (principalement dans le cas de la restauration minimale) En référence à la figure 5, on a représenté les ressources physiques d'un appareil programmable 200 apte à mettre en oeuvre l'invention. L'appareil 200 comporte un bus de communication 202, auquel sont reliés: une unité centrale de traitement 203 (microprocesseur, CPU) qui commande les échanges entre les divers éléments de l'appareil; - une mémoire morte (ROM) 204 pouvant comporter le programme de l'invention (Progl) ; une mémoire vive (RAM) 206; un disque dur 212 pouvant comporter les programmes précités; un clavier 210; une caméra numérique 201; un écran 208; - un lecteur de disquette 214 adapté à recevoir une disquette 216 et à y lire ou à y écrire des documents traités ou à traiter selon l'invention; - une interface de communication 218 reliée à un réseau de communication 220, par exemple le réseau Internet, l'interface étant apte à transmettre et à recevoir des documents. Le bus de communication 202 permet la communication et l'interopérabilité entre les différents éléments inclus dans l'appareil 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 directement ou par l'intermédiaire d'un autre élément de l'appareil. Le code exécutable de chaque programme permettant à l'appareil programmable de mettre en oeuvre les traitements selon l'invention peut être stocké par exemple dans le disque dur 212 ou en mémoire morte 204. Selon une variante de réalisation, la disquette 216 peut contenir des documents ainsi que le code exécutable des programmes précités qui, une fois lu par l'appareil, est stocké dans le disque dur 212. Selon une autre variante de réalisation, le code exécutable des programmes peut être reçu par l'intermédiaire du réseau de communication, via l'interface 106, pour être stocké de façon identique à celle décrite précédemment. Les disquettes peuvent être remplacées par tout support 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, visible 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. De manière plus générale, le ou les programmes peuvent être chargés dans un des moyens de stockage de l'appareil avant d'être exécutés. L'unité centrale 203 commande et dirige l'exécution des instructions ou portions de code logiciel du ou des programmes selon l'invention, instructions qui sont stockées dans le disque dur 212 ou la mémoire morte 204, ou bien dans les autres éléments de stockage précités. Lors de la mise sous tension, le ou les programmes qui sont stockés dans une mémoire non volatile, par exemple le disque dur 212 ou la mémoire ROM 204, sont transférés dans la mémoire vive RAM 206 qui contiendra alors le code exécutable du ou des programmes selon l'invention, ainsi que des registres pour mémoriser les variables des paramètres nécessaires à la mise en oeuvre de l'invention. Il convient de noter que l'appareil programmable comportant le dispositif selon l'invention peut être également un appareil programmé. Cet appareil contient alors le code du ou des programmes informatiques, par exemple figé dans un circuit intégré à application spécifique (ASIC). REVENDICATIONS 1. Procédé de traitement d'un document écrit en langage de balisage comprenant une liste d'éléments textuels et de balisage, caractérisé en ce qu'il comprend les étapes suivantes: a) mettre en mémoire ledit document ou un fragment de celui-ci; b) détecter successivement dudit document ainsi mis en mémoire, des éléments textuels en fonction des éléments de balisage associés c) remplacer le caractère situé à la fin de chaque élément textuel ainsi détecté par un caractère de signalisation choisi; et d) obtenir un document ainsi traité. 2. Procédé selon la revendication 1, dans lequel le langage de balisage est le langage XML. 3. Procédé selon la revendication 1 ou la revendication 2, dans lequel le caractère de signalisation choisi est un zéro. 4. Procédé selon l'une quelconque des revendications précédentes, caractérisé en ce qu'il comprend l'étape suivante: e) remettre chaque élément textuel ainsi modifié dans l'état initial avant le remplacement par le caractère de signalisation choisi. 5. Procédé selon l'une des revendications 1 à 3, caractérisé en ce qu'il comprend en outre l'étape suivante: ci) remplacer le caractère situé avant chaque élément textuel ainsi modifié par un caractère d'enrichissement choisi. 6. Procédé selon la revendication 5, caractérisé en ce que le caractère d'enrichissement choisi est défini en fonction de l'élément textuel à traiter. 7. Procédé selon la revendication 6, caractérisé en ce que le caractère d'enrichissement comprend des éléments appartenant au groupe formé par la taille, le nombre de caractères, le nom et le type de l'élément textuel à traiter. 8. Procédé selon la revendication 6, dans lequel le caractère d'enrichissement est intégré dans le document sous forme d'erreurs volontaires d'encodage. 9. Dispositif de traitement d'un document écrit en langage de balisage comprenant une liste d'éléments textuels et de balisage, caractérisé en ce qu'il comprend: - des moyens de mémorisation pour mettre en mémoire ledit document ou un fragment de celui-ci; - des moyens de détection pour détecter successivement dudit 20 document ainsi mis en mémoire, des éléments textuels en fonction des éléments de balisage associés; et - des moyens de remplacement pour remplacer le caractère situé à la fin de chaque élément textuel ainsi détecté par un caractère de signalisation choisi. 10. Dispositif selon la revendication 9, caractérisé en ce qu'il comprend en outre des moyens de traitement pour remettre chaque élément textuel ainsi modifié dans l'état initial avant le remplacement par le caractère de signalisation choisi. 11. Dispositif selon la revendication 9, caractérisé en ce qu'il comprend en outre des moyens de remplacement pour remplacer le caractère situé avant chaque élément textuel ainsi modifié par un caractère d'enrichissement choisi. 12. Dispositif selon la revendication 11, dans lequel le caractère 5 d'enrichissement comprend une erreur volontaire d'encodage. 13. Support d'informations lisible par un système informatique, éventuellement amovible, totalement ou partiellement, notamment CD-ROM ou support magnétique, tel un disque dur ou une disquette, ou support transmissible, tel un signal électrique ou optique, caractérisé en ce qu'il comporte des instructions d'un programme d'ordinateur permettant la mise en oeuvre d'un procédé selon l'une quelconque des revendications 1 à 8, lorsque ce programme est chargé et exécuté par un système informatique. 14. Programme d'ordinateur stocké sur un support d'informations, ledit programme comportant des instructions permettant la mise en oeuvre d'un procédé selon l'une quelconque des revendications 1 à 8, lorsque ce programme est chargé et exécuté par un système informatique.