Brevet FR2911200A1 — publié le 20080711

La présente invention concerne un procédé et un dispositif de traitement de documents à partir de schémas de documents enrichis et un procédé et un dispositif de décodage correspondants. Elle s'applique, en particulier, au traitement de documents décrits en langage conforme à la norme XML (acronyme de extended markup language ou langage de balisage 15 étendu). XML est une norme qui permet 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, dénommées parseurs donnent accès aux données du document XML via cette structure d'arbre. 20 Il existe différents types de parseurs XML. Le modèle DOM (acronyme de Document Object Model pour modèle d'objets de documents) construit l'ensemble de l'arbre en mémoire et permet à un utilisateur de naviguer à travers cet arbre. Cet arbre est composé de noeuds XML. Le désavantage principal de ce modèle est qu'il est gourmand en mémoire et 25 nécessite de récupérer l'ensemble du document XML avant de commencer à le traiter. Pour résoudre ces problèmes, d'autres modèles de parseurs ont été créés. Les principales alternatives au modèle DOM sont les modèles SAX et PULL. Ces deux modèles ont en commun de ne pas construire l'ensemble de 30 l'arbre en mémoire. Un tel parseur navigue dans l'arbre XML en allant de noeud XML en noeud XML en utilisant un algorithme profondeur d'abord . Il ne garde en mémoire que le noeud courant de l'arbre XML. Un noeud XML, dans 1 ce cas, peut notamment correspondre à un élément XML ouvrant, un élément XML fermant, un élément texte, par exemple. Dans l'exemple suivant, le fragment XML contient trois noeuds : un élément ouvrant, un noeud texte et un noeud fermant. Textnode Parmi les types de noeud XML on peut trouver : élément ouvrant, élément fermant, texte, commentaire, section CDATA (données en langage C), section DTD (acronyme de document type definition pour définition de document type), processing instruction (en français, instruction de traitement). 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îne de caractères. En reprenant l'exemple ci- dessus, le premier noeud (élément ouvrant) peut être séparé en quatre items : 'ns' (ou 'ns:example'), 'example', `attribute' et 'value' ; le deuxième noeud est représenté en un seul item : 'TextNode' ; le troisième noeud en deux items :'ns' (ou 'ns:example' selon l'implémentation exacte du parseur) et 'example'. Chaque item a une fonction particulière et est rendu accessible par le parseur via une API (acronyme de application programming interface pour interface de programmation d'application) particulière. Dans le cas de SAX par exemple, le parseur SAX appellera des fonctions implémentées par l'application et spécialisées pour chaque type de noeud. Si l'on reprend l'exemple donné ci-dessus, le parseur SAX appellera dans l'ordre : - une fonction du type STARTTAG qui aura 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'), - une fonction du type TEXTNODE qui aura en paramètre la valeur du noeud texte (ici 'Textnode') et - une fonction du type ENDTAG qui aura, en paramètre(s), 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ètres des fonctions, pour traiter les données. XML est utilisé comme base par certains langages tels que WSDL (acronyme de Web Services Description Language que l'on peut traduire par langage de description de services web, pouvant se trouver à l'adresse suivante : http://www.w3.org/TR/wsdl), XML Schema ou Relax NG (acronyme de REgular LAnguage for XML Next Generation pour langage régulier pour XML de prochaine génération), qui sont des standards XML développés par le W3C et/ou l'ISO 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é nom qualifié d'un composant, correspond au nom du composant associé à un identifiant global à l'ensemble des composants du document. Un composant est identifié de manière unique par son nom qualifié aussi appelé QName et son type. Ces identifiants sont notamment utilisés pour relier deux composants, comme illustré par des flèches 150 dans l'exemple donné en figure 1. Les langages qui décrivent des composants, reliés les uns aux autres par le mécanisme des noms qualifiés, possèdent généralement un schéma. Ce schéma identifie de façon ambiguë les parties d'un composant pouvant être des références vers des composants. En effet, toute partie d'un composant ayant le type QName peut être une telle référence. Cependant, l'utilisation des noms qualifiés ne se limite pas à faire des références vers d'autres composants. Les noms qualifiés peuvent aussi être utilisés pour relier un composant à une sémantique particulière. Par exemple, SOAP (acronyme de Simple Object Access Protocol pour protocole d'accès à des objets simple) 1.2 définissant un certain nombre de noms qualifiés pour décrire différents types de fautes SOAP, ces noms qualifiés peuvent se retrouver dans des documents WSDL qui utilisent le référencement par nom qualifié. II est à noter que certains langages permettent la création de références directement à partir d'un NCName . On rappelle qu'un QName a un espace de nommage et un nom qui correspond à un NCName, l'espace de nommage de la référence étant soit implicite, soit donné dans une autre partie du composant. Dans la suite de la description de la présente invention, des problèmes qu'elle résout et de ses avantages, on parle de mécanisme de référence par QName ou nom qualifié , cette dénomination recouvrant aussi le cas de référence par NCName . Lorsqu'un serveur de documents XML traite un document qui utilise le référencement par nom, plusieurs problèmes se rencontrent : - les noms sont encodés en tant que chaîne de caractères dans la plupart des formats binaires. Ces noms doivent être résolus, que l'XML soit 10 binaire ou non, par le mécanisme classique qui n'est pas efficace (comparaison de chaîne de caractères) et - le document doit être transmis en entier : un sous-ensemble du document XML ne peut pas être sélectionné par le serveur vu le risque de perdre une partie des composants nécessaires au traitement. 15 II est possible de définir des références qu'un ordinateur puisse traiter, via les types ID et IDREF . Un élément A peut être référencé par un élément B Si l'élément A possède un attribut ou un noeud texte du type ID et si l'élément B a un attribut ou un noeud texte du type IDREF . Cependant, il est à noter que ce mécanisme ne permet pas 20 d'effectuer des références vers d'autres documents. Si une référence manque dans le document, ce document est invalide et ne peut être traité, ce qui n'est pas le cas avec le mécanisme de nom qualifié. Par ailleurs, un identifiant est associé à un composant de manière unique, alors qu'un même nom qualifié peut être utilisé pour référencer différents composants (c'est l'association type 25 et nom qualifié qui est unique, le type étant décrit dans la spécification). Pour toutes ces raisons, mais aussi pour des raisons de praticité, de nombreux langages utilisent les noms qualifiés alors que le mécanisme par ID est peu utilisé. Pour ces langages, par exemple WSDL, XML Schema ou Relax NG, 30 qui définissent des références en n'utilisant pas le mécanisme ID/IDREF, il n'est pas possible de déterminer si une valeur (d'attribut ou noeud texte) correspond à une référence ou pas et si oui, comment retrouver le composant à partir de la référence. La présente invention vise à remédier à ces inconvénients. A cet effet, la présente invention vise, selon un premier aspect, un 5 procédé de traitement de documents dans un système informatique, qui comporte : - une étape préalable d'enrichissement d'un schéma du document pour séparer des noms qualifiés utilisés pour référencer des composants et des noms qualifiés utilisés pour référencer des sémantiques définies et 10 - une étape de détection de composants référencés dans le document en utilisant le schéma enrichi préalablement obtenu. Grâce à ces dispositions, l'information de classification des noms et de localisation des composants est connue par les applications, ce qui leur permet d'optimiser le traitement et la transmission de tels documents : 15 -lorsqu'un utilisateur souhaite ne récupérer qu'un seul composant, il est actuellement obligé de récupérer l'ensemble du document alors qu'avec la mise en oeuvre de la présente invention, il ne récupère que le sous-ensemble du document contenant le composant recherché et l'ensemble des composants pointés par ce composant et 20 - lors de l'encodage binaire d'un tel document, le nom utilisé pour référencer le composant peut être directement encodé comme une référence, sous la forme d'un mécanisme particulier (index, pointeur). Ceci permet une meilleure compression et un meilleur traitement du nom qualifié. On remarque que la mise en oeuvre de la présente invention peut, 25 notamment, servir à deux fins : - un encodage binaire plus efficace du document et - une sélection d'un sous-ensemble auto-descriptible de composants. Selon des caractéristiques particulières, le procédé tel que 30 succinctement exposé ci-dessus comporte, en outre, une étape d'ajout d'informations au schéma pour, dans le cas de références vers des composants, détecter la position des composants référencés dans le document. Cela permet d'augmenter encore la rapidité de traitement des documents utilisant des noms qualifiés. Selon des caractéristiques particulières, le procédé tel que succinctement exposé ci-dessus comporte une étape d'envoi d'une requête au cours de laquelle un client envoie le nom d'au moins un composant à récupérer et/ou le nom du document au système informatique. L'invention s'applique avantageusement avec un système informatique local ou distant. Selon des caractéristiques particulières, lors de la réception de ladite 10 requête, ledit système informatique effectue, de manière itérative, jusqu'à obtenir un ensemble de composants auto-descriptible : -une étape de récupération de la description du composant recherché et l'ensemble des références de ce composant, lesdites références étant déterminées en fonction du schéma de document enrichi et 15 - une étape de récupération d'une description de chaque composant référencé. Durant cette dernière étape, le système informatique peut savoir que certains composants sont déjà connus par le client qui a émis la requête, auquel cas, le composant référencé peut être traité comme le sont les 20 références externes, permettant ainsi de ne pas renvoyer plusieurs fois ces composants. Selon des caractéristiques particulières, ledit système informatique effectue, en outre, à la suite d'au moins une dite étape itérative, une étape d'encodage de la description d'au moins un composant en langage de balisage 25 étendu, éventuellement binaire. Selon des caractéristiques particulières, le procédé tel que succinctement exposé ci-dessus comporte une étape d'encodage en langage de balisage étendu binaire, au cours de laquelle les noms qualifiés de type référence sont encodés en tant que pointeur vers un autre composant. 30 Selon des caractéristiques particulières, au cours de l'étape d'encodage, ledit pointeur est encodé sous la forme d'une position dans le flux exprimé en bit. Selon des caractéristiques particulières, au cours de l'étape d'encodage, ledit pointeur est encodé sous la forme d'une position du composant dans une liste. Les avantages de chacune de ces dispositions sont doubles : cela permet un codage plus efficace de l'information (moins de bits à transmettre) et cela permet aussi un traitement plus efficace des composants en facilitant la résolution de ces références. Selon des caractéristiques particulières, au cours de l'étape d'encodage, on met en oeuvre une information de type de lien d'enrichissement pour compresser le composant référençant à partir du composant référencé. Selon des caractéristiques particulières, au cours de l'étape d'encodage, les noms qualifiés d'au moins un autre type que le type référence sont encodés en séparant un nom local du préfixe d'un espace de nommage. Selon des caractéristiques particulières, le procédé tel que succinctement exposé ci-dessus comporte, en outre, une étape d'ajout d'un schéma d'extension au système informatique. Selon des caractéristiques particulières, au cours de l'étape d'enrichissement de schéma de document, on ajoute au schéma de document, au niveau de la définition d'un élément racine du langage : - ce qu'est un composant, où sont les mécanismes d'inclusion et leur espace de nommage associé, - où est I'URI de l'espace de nommage du document, - s'il s'agit d'une référence, son type et sa cible. La présente invention vise, selon un deuxième aspect, un dispositif de traitement de documents, qui comporte : - un moyen d'enrichissement d'un schéma du document pour séparer des noms qualifiés utilisés pour référencer des composants et des noms qualifiés utilisés pour référencer des sémantiques définies ; - un moyen d'ajout d'informations au schéma pour, dans le cas de références vers des composants, détecter la position des composants référencés dans le document. La présente invention vise, selon un troisième aspect, un procédé de décodage, qui comporte, pour chaque composant d'un flux : - une étape de détermination si les informations du composant contiennent une référence vers un composant non encore traité, - si les informations du composant contiennent une référence vers un composant non encore traité, une étape de détermination s'il s'agit d'une référence interne, - s'il s'agit d'une référence externe, une étape d'utilisation de l'information du lien pour récupérer le flux et le lieu dans le flux contenant les 10 informations de ce composant et - s'il s'agit d'une référence interne, une étape d'utilisation de l'information du lien pour accéder aux informations du composant référencé dans le même flux. La présente invention vise, selon un quatrième aspect, un dispositif 15 de décodage, qui comporte : - un moyen de détermination si les informations de chaque composant contiennent une référence vers un composant non encore traité, - un moyen de détermination adapté, si les informations du composant contiennent une référence vers un composant non encore traité, à 20 déterminer s'il s'agit d'une référence interne, - un moyen d'utilisation adapté, s'il s'agit d'une référence externe, à utiliser de l'information du lien pour récupérer le flux et le lieu dans le flux contenant les informations de ce composant et, s'il s'agit d'une référence interne, à utiliser de l'information du lien pour accéder aux informations du 25 composant référencé dans le même flux. La présente invention vise, selon un cinquième aspect, un programme d'ordinateur chargeable dans un système informatique, ledit programme contenant des instructions permettant la mise en oeuvre du procédé de traitement et/ou du procédé de décodage tels que succinctement exposés 30 ci-dessus, lorsque ce programme est chargé et exécuté par un système informatique. La présente invention vise, selon un sixième aspect, un support d'informations lisibles par un ordinateur ou un microprocesseur, amovible ou non, conservant des instructions d'un programme informatique, caractérisé en ce qu'il permet la mise en oeuvre du procédé de traitement et/ou du procédé de décodage tels que succinctement exposés ci-dessus, lorsque ce programme est chargé et exécuté par un système informatique. Les avantages, buts et caractéristiques particulières de ce dispositif de traitement, de ce procédé et de ce dispositif de décodage, de ce programme d'ordinateur et de ce support d'information étant similaires à ceux du procédé tel que succinctement exposé ci-dessus, ils ne sont pas rappelés ici. D'autres avantages, buts et caractéristiques de la présente invention ressortiront de la description qui va suivre, faite, dans un but explicatif et nullement limitatif, en regard des dessins annexés, dans lesquels : - la figure 1 représente des composants munis d'identifiants, de 15 manière connue dans l'art antérieur, - les figures 2 à 5 représentent des lignes de codes implémentant la présente invention, - la figure 6 représente, sous forme d'un logigramme, des étapes mises en oeuvre dans un premier mode de réalisation du procédé objet de la 20 présente invention mettant en oeuvre des informations de lien, - la figure 7 représente, sous forme d'un logigramme, des étapes mises en oeuvre dans un deuxième mode de réalisation du procédé objet de la présente invention, appliqué à un encodage ; - la figure 8 représente, sous forme d'un logigramme, des sous-25 étapes d'étapes illustrées en figure 7, - la figure 9 représente, sous forme d'un logigramme, des étapes d'une sélection d'un sous-ensemble auto-descriptible de composants mis en oeuvre dans des modes de réalisation particuliers du procédé objet de la présente invention, 30 - la figure 10 représente, sous forme d'un logigramme, des étapes mises en oeuvre dans un mode de réalisation du procédé objet de la présente invention, appliqué à un décodage et - la figure 11 représente, schématiquement, un mode de réalisation particulier du dispositif objet de la présente invention. Dans la description, on a restreint la présentation de l'invention aux cas des langages XML présentant un identifiant d'un composant, appelé nom qualifié d'un composant, qui correspond au nom du composant associé à un identifiant global à l'ensemble des composants du document. Un composant est identifié de manière unique par son nom qualifié aussi appelé QName et son type. Ces identifiants sont notamment utilisés pour relier deux composants, comme illustré dans l'exemple donné en figure 1. II s'agit notamment des langages WSDL , XML Schema et Relax NG . Le procédé objet de la présente invention consiste à enrichir le schéma du document pour séparer les noms qualifiés utilisés pour référencer des composants (voir figures 4 et 5) et les noms qualifiés utilisés pour référencer des sémantiques définies (voir figure 3). On ajoute, par ailleurs, des informations au schéma permettant, dans le cas de références vers des composants, de détecter la position des composants référencés dans le document XML (voir figure 2). Le procédé objet de la présente invention peut, notamment, être utilisé à deux fins : - l'encodage binaire plus efficace du document, comme exposé en regard des figures 7 et 8, et - la sélection d'un sous-ensemble auto-descriptible de composants, comme exposé en regard de la figure 9. On peut ainsi avoir un système qui peut traiter plusieurs types de 25 documents sans avoir besoin de modifier le programme du système, dès lors qu'un ensemble d'information suffisant soit donné à ce système. En ce qui concerne les informations de lien, les informations à fournir par le système pour implémenter un mode de réalisation du procédé objet de la présente invention sont : 30 - ce qu'est un composant, où sont les mécanismes d'inclusion et leur espace de nommage associé, - où est l'URI de l'espace de nommage du document et -pour chaque utilisation du type nom qualifié, préciser s'il s'agit d'une référence, son type et sa cible (voir figures 3 à 5). Pour les trois premières informations, elles peuvent être ajoutées au niveau de la définition de l'élément racine du langage. Pour XML Schema, cela peut donner ce qui est décrit en figure 2. Cette figure 2 correspond à une description 155 XML Schéma d'un élément definitions . Cette description est enrichie d'informations 156 à 159 permettant la détection et la résolution des références : l'attribut 156 xsdenc:root présente l'élément definitions comme un élément racine ; l'attribut 157 xsdenc:tns permet de récupérer l'espace de nommage associé à l'ensemble des composants enfants de ce noeud racine ; l'attribut 158 xsdenc:components correspond à la liste des types de composant de l'élément racine et l'attribut 159 xsdenc:import permet de localiser les éléments permettant les références externes. La figure 3 représente un exemple de schéma 160 utilisant les noms qualifiés. Plus précisément, l'exemple décrit un attribut nommé subcodes 161 dont le type est une liste de QName. Aucune annotation n'étant ajoutée à la définition de cet attribut, celui-ci ne contient aucune référence vers un composant. La figure 4 représente un exemple 165 d'annotation pour préciser qu'une utilisation de nom qualifié est de type référence vers un composant. L'exemple décrit un attribut, nommé binding dont le type est un QName. On enrichit cette description, via l'attribut 166 xsdenc:type , pour ajouter que cet attribut est une référence de type simple. On indique, par ailleurs, le type et le nom du composant via les attributs 167 xsdenc:targetType et 168 xsdenc:targetlD . La figure 5 représente un exemple 170 d'annotation pour préciser qu'une utilisation de nom qualifié est de type référence vers un composant. Le type de lien est, par ailleurs, indiqué via l'attribut 171 xsdenc:targetType : il s'agit d'un lien d'enrichissement/ajout. Cette information peut être utilisée par un encodeur XML binaire pour compresser le composant référençant à partir du composant référencé. Ces informations de liens sont ensuite avantageusement utilisées par de nouvelles applications pour : - encoder de manière plus efficace un document (voir figures 7 et 8), - sélectionner un sous-ensemble auto-descriptible de composants (voir figure 9) dans un document particulier de manière efficace et/ou - traiter plus efficacement les documents. La figure 6 représente, sous forme d'un logigramme, l'utilisation générale de ces informations. Ce logigramme est, dans les figures 7 à 9, particularisé pour deux applications : un encodage efficace, figures 7 et 8, et 10 une sélection d'un sous-ensemble auto-descriptible, figure 9. En figure 6, on débute le traitement d'un document à l'étape 100 au cours de laquelle on effectue un ajout d'un schéma d'extension au système informatique, et un enrichissement de schéma de document au cours duquel on ajoute, au schéma de document, au niveau de la définition d'un élément racine 15 du langage : ce qu'est un composant, - où sont les mécanismes d'inclusion et leur espace de nommage associé, -où est l'URI de l'espace de nommage du document, 20 puis, pour chaque utilisation du type nom qualifié : - s'il s'agit d'une référence, et si oui, son type et sa cible. Au cours de l'étape 100, un client envoie une requête au système informatique, ladite requête précisant le nom d'au moins un composant à récupérer et/ou le nom du document au système informatique et on effectue la 25 réception de la requête par un système informatique, la récupération d'un flux à traiter, XML ou XML Binaire correspondant à la requête reçue et l'enrichissement du document. Puis, au cours d'une étape 105, on recherche s'il y a un composant à traiter dans le document. Si oui, au cours d'une étape 110, on recherche les 30 références dans le composant à traiter. S'il y a des références dans le composant à traiter, au cours d'une étape 115, on récupère les composants référencés par ces références et leurs positions dans le document. Puis, au cours d'une étape 120, on applique récursivement les étapes illustrées en figure 6 pour, par exemple, sélectionner un sous-ensemble auto-descriptible de composants, comme exposé en regard de la figure 9 ou pour effectuer un encodage des composants, comme exposé en regard des figures 7 et 8. L'étape 125 consiste au traitement, en tant que tel, des données du composant. Il s'agit, par exemple, d'effectuer une copie de la représentation du composant dans un autre document dans le cas de la sélection d'un sous-ensemble auto-descriptible de composants (voir figure 9). Il peut aussi s'agir de l'encodage en XML Binaire des données du composant (voir figures 7 et 8), y compris les références, en utilisant les informations déterminés lors de l'étape 115 et/ou 120. Puis, au cours d'une étape 130, on sélectionne le composant suivant et on retourne à l'étape 105. Au cas où, au cours de l'étape 105, on détermine qu'il n'y a plus de composant à traiter dans le document, au cours d'une étape 135, on effectue la fin du traitement proprement dit. Par exemple, cette étape 135 consiste à utiliser le résultat du traitement pour une application particulière : stockage du document ou envoi du document sur un réseau par exemple. Dans le cas de l'encodage, illustré en figure 7, on vise à utiliser les informations disponibles dans le schéma pour mieux encoder le document. Différentes propositions existent pour encoder plus efficacement un document XML à partir de son schéma, par exemple Fast Schemas , Fast Infoset ou BiM (marques déposées). Les étapes illustrées en figure 7 peuvent se baser sur l'un des exemples cités ci-dessus, ou sur tout autre encodage binaire. Au cours d'une étape 200, on effectue un ajout d'un schéma d'extension au système informatique, et un enrichissement de schéma de document au cours duquel on ajoute, au schéma de document, au niveau de la définition d'un élément racine du langage : - ce qu'est un composant, - où sont les mécanismes d'inclusion et leur espace de nommage associé, - où est l'URI de l'espace de nommage du document, puis, pour chaque utilisation du type nom qualifié : - s'il s'agit d'une référence, et si oui, son type et sa cible. Au cours de l'étape 200, un client envoie une requête au système informatique, ladite requête précisant le nom d'au moins un composant à récupérer et/ou le nom du document au système informatique et on effectue la réception de la requête par un système informatique, la récupération d'un flux à traiter, XML ou XML Binaire correspondant à la requête reçue et l'enrichissement du document, l'encodage du début du document et la récupération du premier composant de ce document. Suivant le type d'encodage binaire, on peut, au cours de l'étape 200, ajouter un marqueur de début et/ou de fin de composant. Ce marqueur peut être implicite en tant que fin d'un élément de profondeur 1 (c'est-à-dire que ce noeud a pour ascendant direct le noeud racine du document). Pour le premier composant ou, au cours des itérations suivantes, 15 pour le composant courant, au cours d'une étape 205, on détermine s'il reste un composant à coder. Si non, on passe à l'étape 235. S'il reste un composant à coder, au cours d'une étape 210, on détermine si le premier composant restant à coder comporte une référence de type QName. A cet effet, on recherche si le composant possède une donnée de 20 type QName à encoder et on utilise les informations supplémentaires du schéma pour déterminer s'il s'agit d'une référence. S'il ne s'agit pas d'une référence, au cours d'une étape 220, on encode, de façon classique, ce QName sous la forme d'une chaîne de caractères, de token, ou sous une forme plus optimisée représentant le nom 25 local et un préfixe ou un espace de nommage. Si le composant à codercomporte une référence de type QName, au cours d'une étape 215, on encode ce QName sous la forme d'une référence directe au composant pointé. Cette référence peut être un pointeur dans le flux binaire, ce qui est utile, notamment, dans le cas de flux positionnables tels que 30 dans les systèmes de fichier. Cette référence peut aussi être un simple numéro incrémenté à chaque nouveau composant. A la suite de l'une des étapes 215 ou 220, on effectue le traitement des autres données du composant, au cours d'une étape 225. L'encodage de ces données dépend de la présence d'une référence et de son type, par exemple type simple ou type enrichissement , comme précisé dans la figure 8. Puis, au cours d'une étape 230, on sélectionne le composant suivant et on retourne à l'étape 205. En variante, on effectue, d'abord, la récupération de tous les composants à traiter et, ensuite, on effectue les étapes du traitement 210 à 225 décrites ci-dessus, sur chacun des composants récupérés. Une fois tous les composants encodés, on finit l'encodage et on transmet le document, au cours d'une étape 235 pour qu'il soit ensuite utilisé, étape 240, de manière plus efficace qu'un document de l'art antérieur. Dans des modes de réalisation, on effectue l'encodage en conservant en mémoire les représentations binaires des composants et leur position dans le flux et on envoie un flux ne contenant que les composants sélectionnés au cours de l'étape 210. Dans le cas d'un encodage en langage de balisage étendu binaire, au cours de l'étape d'encodage 235, les noms qualifiés de type référence sont encodés en tant que pointeur vers un autre composant. Par exemple, ledit pointeur est encodé sous la forme d'une position dans le flux exprimé en bit ou sous la forme d'une position du composant dans une liste. Dans des modes de réalisation, au cours de l'étape d'encodage 235, on met en oeuvre une information de type de lien d'enrichissement pour compresser le composant référençant à partir du composant référencé. Dans des modes de réalisation, au cours de l'étape d'encodage 235, les noms qualifiés d'au moins un autre type que le type référence sont encodés en séparant un nom local du préfixe d'un espace de nommage. La figure 8 précise les étapes 215 et 225 de la figure 7, notamment dans le cas de l'encodage d'un composant en tant que différence par rapport au composant de base. Dans le cas où le composant est de type simple, l'étape 315 correspond à l'étape 225. Au cours d'une étape 305, on détermine si la référence est de type simple . Si oui, au cours d'une étape 310, on encode la position du référé dans le flux puis, au cours d'une étape 315, on encode les autres données du composant. Sinon, au cours d'une étape 325, on détermine si la référence est de type enrichissement/ajout de données. Si oui, au cours d'une étape 330, on encode la position du référé dans le flux de façon similaire à ce qui est effectué au cours de l'étape 310 puis, au cours d'une étape 335, on calcule et on encode, dans le flux, les différences de données entre le composant et le composant référé. Ce mécanisme est, bien sûr, extensible. Si la référence n'est pas de type enrichissement/ajout , au cours d'une étape 340, on effectue un autre encodage, de type connu de l'homme du métier, puis, au cours d'une étape 345, on effectue l'encodage des autres données du composant. A la suite de l'une des étapes 335 ou 345, l'encodage du composant est achevé. L'encodage présenté utilise un codage XML Binaire. On note qu'il est aussi possible, bien que moins efficace, d'encoder l'information de référence en XML via un attribut, si l'ajout d'un attribut est possible par le langage de base. On augmente alors la taille du document en contrepartie d'une amélioration de la rapidité de traitement. La figure 9 illustre une succession d'étapes pour effectuer une sélection d'un sous-ensemble auto-descriptible de composants. Les applications sont, souvent, plus adaptées à ne traiter qu'un seul composant parmi un ensemble de composants, dans un document. Pour utiliser ce composant, l'application doit généralement connaître l'ensemble des composants référencés, directement ou indirectement, par ce composant. L'algorithme illustré en figure 9 permet la récupération d'un tel sous-ensemble de composants et exploite le procédé objet de la présente invention, tel que présenté plus haut, pour améliorer son efficacité. Au cours d'une étape 400, on débute le traitement par un ajout d'un schéma d'extension au système informatique et un enrichissement de schéma de document au cours duquel on ajoute, au schéma de document, au niveau de la définition d'un élément racine du langage : - ce qu'est un composant, - où sont les mécanismes d'inclusion et leur espace de nommage associé, - où est l'URI de l'espace de nommage du document et/ou - pour chaque utilisation du type nom qualifié, s'il s'agit d'une référence, son type et sa cible. Au cours de l'étape 400, un client envoie une requête au système informatique, ladite requête précisant le nom d'au moins un composant à récupérer et/ou le nom du document au système informatique et on effectue la réception de la requête par un système informatique, la récupération d'un flux à traiter, XML ou XML Binaire correspondant à la requête reçue et l'enrichissement du document. Puis, au cours d'une étape 405, on récupère, dans le flux, le composant recherché par l'application. Au cours d'une étape 410, on commence le traitement de ce composant en ajoutant, dans une liste Lr, les références de ce composant à des composants non traités. Préférentiellement, pour limiter le nombre de positionnement mémoire, la liste Lr est ordonnée suivant la référence : plus la référence pointe vers le début du flux, plus elle est proche du début de la liste Lr. La détection des références s'effectue via le schéma annoté si le document est en XML. Dans le cas où le document de base est en XML binaire, les informations du schéma annoté ne sont pas forcément utiles, notamment lorsque le format binaire précise le type de la donnée, c'est-à-dire si le flux binaire précise qu'une donnée particulière est de type référence QName. Au cours d'une étape 415, on détermine s'il reste une référence dans la liste Lr. Si non, on passe à l'étape 445 d'utilisation des composants. Si oui, au cours d'une étape 420, on détermine si la première référence restant dans la liste Lr est une référence interne au document. Si non, au cours d'une étape 440, on utilise le mécanisme d'importation adéquat. II peut par exemple s'agir d'aller récupérer un autre document et de le traiter de la même manière que le premier document. Si la première référence restant dans la liste Lr est une référence interne, au cours d'une étape 425, on utilise cette référence pour positionner le flux. Puis, au cours d'une étape 430, on traite le composant référencé et, au cours d'une étape 435, on ajoute les références de ce composant à la liste Lr. A la suite de l'une des étapes 435 et 440, on retourne à l'étape 415 en éliminant de la liste Lr, la référence qui vient d'être traitée. Préférentiellement, durant la récupération d'une description de chaque composant référencé, le système informatique peut savoir que certains composants sont déjà connus par le client qui a émis la requête, auquel cas le composant référencé peut être traité comme le sont les références externes, permettant ainsi de ne pas renvoyer plusieurs fois ces composants. On note que l'algorithme illustré en figure 9 est aisément extensible à la recherche de plusieurs composants. On note aussi qu'il existe des technologies permettant d'identifier des composants à l'intérieur des documents (via XPointer , une recommandation (ou standard) W3C pouvant se trouver à l'adresse suivante : http://www.w3.org/TR/xptr/). On peut ainsi demander à récupérer un composant spécifié par son nom, par exemple MonService , de type service WSDL dans un document donné. Dans l'art antérieur, si une telle requête est envoyée à un serveur générique, celui-ci retourne le document en entier. Grâce à la mise en oeuvre de l'enseignement de l'invention donné en regard de la figure 9, le serveur en question peut automatiquement retourner le document ne contenant que le composant MonService et les composants associés. Un des avantages de cette implémentation est que le serveur n'a pas à connaître précisément le type de document. Le schéma amélioré est la seule information nécessaire au serveur. Dans ce cas particulier, le mécanisme d'importation de l'étape 440 consiste à inclure dans le flux à envoyer les composants d'importation correspondants aux références externes nécessaires au composant souhaité. II est par ailleurs possible de combiner l'algorithme de sélection, illustré en figure 9, avec l'algorithme d'encodage illustré dans les figures 7 et 8. Dans des modes de réalisation, on effectue l'encodage au cours de l'étape 445, en conservant en mémoire les représentations binaires des composants et leur position dans le flux et on envoie un flux ne contenant que les composants sélectionnés au cours des étapes 415 et 420. Dans le cas d'un encodage en langage de balisage étendu binaire, au cours de l'étape d'encodage 445, les noms qualifiés de type référence sont encodés en tant que pointeur vers un autre composant. Par exemple, ledit pointeur est encodé sous la forme d'une position dans le flux exprimé en bit ou sous la forme d'une position du composant dans une liste. Dans des modes de réalisation, au cours de l'étape d'encodage 445, on met en oeuvre une information de type de lien d'enrichissement pour compresser le composant référençant à partir du composant référencé. Dans des modes de réalisation, au cours de l'étape d'encodage 445, les noms qualifiés d'au moins un autre type que le type référence sont encodés en séparant un nom local du préfixe d'un espace de nommage. Pour résoudre le problème des références qui ne sont plus exactes dans le nouveau flux, dans des modes de réalisation, on met à jour les références avec le nouveau flux. Dans d'autres modes de réalisation, on inclut une table permettant de faire une correspondance entre les anciennes références et les positions dans le nouveau flux. Dans d'autres modes de réalisation, on inclut dans le flux des indicateurs de position permettant de marquer un saut dans le positionnement du flux, dans le cas où un composant du flux originel a été enlevé lors de l'étape de sélection : on ne transmet pas le composant mais on transmet, à la place, un indicateur de saut de position avec la taille du composant. Cet indicateur de saut de position permet au processeur de mettre à jour facilement son indicateur de position. La figure 10 représente des étapes d'implémentation d'un algorithme de décodage qui utilise l'encodage présenté en regard des figures 7 et 8. Il s'agit de récupérer un composant ainsi que les composants référencés, directement ou indirectement, par ce composant à partir d'un flux XML Binaire. Au cours d'une étape 500, on débute le traitement en décodant les informations du noeud principal. Puis, au cours d'une étape 505, on sélectionne le premier composant. Au cours d'une étape 510, on détermine si les informations du composant sélectionné contiennent une référence vers un composant inconnu, c'est-à-dire non encore traité. Si non, on passe à l'étape 530. Si oui, au cours d'une étape 515, on détermine s'il s'agit d'une référence interne. Si non, c'est-à-dire s'il s'agit d'une référence externe, on utilise les informations du lien pour récupérer le flux et le lieu dans le flux contenant les informations de ce composant, au cours d'une étape 525. S'il s'agit d'une référence interne, au cours d'une étape 520, on utilise l'information du lien pour aller directement aux informations du composant référencé dans le même flux. Lors du traitement de ce composant si on trouve des références, on traite alors ces références de manière récursive en appliquant le même principe à partir de l'étape 505. Une table de mise en relation référence/composant permet, par ailleurs, de récupérer les composants déjà traités. A la suite de l'une des étapes 520 ou 525, ou si le résultat de l'étape 510 est négatif, au cours d'une étape 530, on détermine s'il reste au moins un composant à traiter. Si oui, on sélectionne un composant et on retourne à l'étape 510. On continue ainsi le traitement jusqu'à récupération des composants utilisés par l'application. L'algorithme exposé en regard de la figure 10 peut aussi s'appliquer au cas où le document est transmis en XML avec les informations de référence ajoutées en XML. Si le résultat de l'étape 530 est négatif, au cours d'une étape 535, on 20 utilise les composants traités. Alternativement, les composants traités peuvent être fournis, au fur et à mesure, à l'application cliente. Il est à noter qu'en fonction de l'encodage XML binaire choisi, le décodage n'a pas forcément besoin de la connaissance des annotations 25 ajoutées au schéma, notamment lorsque le type de valeur est inclus dans le flux pour chaque valeur, comme c'est le cas pour Fast Infoset. Dans le cas où l'on souhaite récupérer l'ensemble des composants, il est judicieux de traiter le flux linéairement. Dans ce cas, le nom qualifié encodé sous la forme d'une référence permet une résolution de la référence plus 30 efficace que le nom qualifié encodé sous la forme d'une chaîne de caractères car il est plus rapide de récupérer un composant à partir d'un index/pointeur qu'à partir d'un nom qualifié, qui comporte une récupération de l'espace de nommage à partir du préfixe, puis deux comparaisons de chaînes de caractères, représentant le nom et l'espace de nommage, ainsi qu'une comparaison du type du nom qualifié. Lors du décodage, notamment dans le cas où le client et le serveur peuvent communiquer rapidement, il est possible pour un client de redemander un composant particulier en utilisant directement la référence du composant. Ceci permet au serveur de récupérer plus facilement le composant qu'à partir du nom qualifié et du type du composant. Cette possibilité est notamment utile lorsque le client est, pour une raison ou une autre, dans l'incapacité de récupérer un composant dans un flux, par exemple lorsque le flux n'est pas repositionnable en arrière. Ce cas s'intègre notamment lorsque le protocole utilisé est de type streaming (RTP, acronyme de real time transport protocol pour protocole de transport temps réel, voir la recommandation RFC 3550). Dans ce cas, la référence du composant peut inclure le numéro du paquet dans lequel se trouve la description du composant. Comme exposé ci-dessus, lors de l'envoi d'une requête, le client envoie le nom du composant à récupérer et/ou le nom du document. Lors de la réception d'une telle requête, le serveur : - récupère la description du composant recherché et l'ensemble des références de ce composant, déterminées via le schéma XML enrichi ; - récupère la description de chaque composant référencé ; - réitère ces deux étapes jusqu'à obtenir un ensemble de composants auto-descriptible ; - encode la description des composants en XML ou XML Binaire. Dans le cas d'un encodage XML binaire, les noms qualifiés de type référence sont encodés en tant que pointeur vers un autre composant et non en tant que chaines de caractères. Ce pointeur peut être encodé de différentes manières : il peut s'agir d'une position dans le flux, exprimée en bits. Il peut aussi être exprimé sous la forme de la position du composant dans une liste : 1 s'il s'agit du premier composant dans le flux, 2 s'il s'agit du deuxième, et ainsi de suite. Les avantages d'un pointeur sont doubles : cela permet un codage plus efficace de l'information, puisqu'il y a moins de bits à transmettre, et cela permet aussi un traitement plus efficace des composants en facilitant la résolution de ces références. Les autres noms qualifiés sont encodés en tant que chaine de caractères ou autre encodage plus efficace séparant le nom local du préfixe ou espace de nommage. En insérant ces informations dans le schéma XML, il est, par ailleurs, aisé de faire évoluer le système gérant les documents, typiquement un serveur de fichier : on peut ajouter les fonctionnalités en ajoutant un schéma annoté au système. Par exemple les schémas XS (acronyme de XML Schema Language pour langage de schéma XML. C'est une recommandation W3C. Ce langage permet de décrire des modèles de document XML), WSDL, Relax NG. C'est un autre langage de schéma XML pour des documents XML, standardisé par l'ISO), WS-Addressing (acronyme de web service addressing pour adressage de service de la toile. C'est une recommandation W3C qui décrit comment router des messages SOAP sur un réseau). pour ce type de langage, des extensions sont souvent créées. Ces extensions peuvent ajouter des références entre composants. Pour ajouter le support d'une extension à un langage, il suffit encore une fois d'ajouter le schéma de cette extension au système (Extension WSDL tel que binding http, par exemple). On observe, en figure 11, un mode particulier de réalisation du dispositif objet de la présente invention 600 et différents périphériques adaptés à implémenter chaque aspect de la présente invention. Dans le mode de réalisation illustré en figure 11, le dispositif 600 est un micro-ordinateur de type connu connecté à un moyen d'acquisition ou de stockage de code XML. Le dispositif 600 comporte une interface de communication 618 reliée à un réseau 634 apte à transmettre, en entrée, des données numériques à traiter et, en sortie, des données traitées par le dispositif. Le dispositif 600 comporte également un moyen de stockage 612, par exemple un disque dur, et un lecteur 614 de disquette 616. La disquette 616 et le moyen de stockage 612 peuvent contenir des données à traiter, des données traitées et un programme informatique adapté à implémenter le procédé objet de la présente invention. Selon une variante, le programme permettant au dispositif de mettre en oeuvre la présente invention est stocké en mémoire morte ROM (acronyme de read only memory pour mémoire non réinscriptible) 606. Selon une autre variante, le programme est reçu par l'intermédiaire du réseau de communication 634 avant d'être stocké. Le dispositif 600 est, optionnellement, relié à un microphone 624 par l'intermédiaire d'une carte d'entré/sortie 622. Ce même dispositif 600 possède un écran 605 permettant de servir d'interface avec l'utilisateur pour paramétrer certains modes d'exécution du dispositif 600, à l'aide d'un clavier 610 et/ou d'une souris par exemple. Une unité centrale CPU (acronyme de central processing unit ) 603 exécute les instructions du programme informatique et de programmes nécessaires à son fonctionnement, par exemple un système d'exploitation. Lors de la mise sous tension du dispositif 600, les programmes stockés dans une mémoire non volatile, par exemple la mémoire morte 606, le disque dur 612 ou la disquette 616, sont transférés dans une mémoire vive RAM (acronyme de random access memory pour mémoire à accès aléatoire) 608 qui contiendra alors le code exécutable du programme objet de la présente invention ainsi que des registres pour mémoriser les variables nécessaires à sa mise en oeuvre. Bien entendu, la disquette 616 peut être remplacée par tout support d'information amovible, tel que disque compact, clé ou carte mémoire. De manière plus générale, un moyen de stockage d'information, lisible par un ordinateur ou par un microprocesseur, intégré ou non au dispositif, éventuellement amovible, mémorise un programme objet de la présente invention. Un bus de communication 602 permet la communication entre les différents éléments inclus dans le dispositif 600 ou reliés à lui. La représentation, en figure 11, du bus 602 n'est pas limitative et notamment l'unité centrale 603 est susceptible de communiquer des instructions à tout élément du dispositif 600 directement ou par l'intermédiaire d'un autre élément du dispositif 600. Le dispositif décrit ici et, particulièrement, l'unité centrale 603, sont susceptibles d'implémenter tout ou partie des traitements décrits en regard des figures 1 à 10, pour mettre en oeuvre chaque procédé objet de la présente invention et constituer chaque dispositif objet de la présente invention. REVENDICATIONS 1 - Procédé de traitement de documents dans un système informatique, caractérisé en ce qu'il comporte : - une étape préalable (100, 200, 400) d'enrichissement d'un schéma du document (155, 160, 165, 170) pour séparer des noms qualifiés utilisés pour référencer des composants (165, 170) et des noms qualifiés utilisés pour référencer des sémantiques définies (161) et - une étape de détection (110, 210, 415) de composants référencés dans le document en utilisant le schéma enrichi préalablement obtenu. 2 û Procédé selon la revendication 1, caractérisé en ce qu'il comporte, en outre, une étape d'ajout d'informations (166 à 168, 171) au schéma pour, dans le cas de références vers des composants (165, 170), détecter la position des composants référencés dans le document. 3 û Procédé selon l'une quelconque des revendications 1 ou 2, caractérisé en ce qu'il comporte une étape (100, 200, 400) d'envoi d'une requête au cours de laquelle un client envoie le nom d'au moins un composant à récupérer et/ou le nom du document au système informatique. 4 û Procédé selon la revendication 3, caractérisé en ce que, lors de la réception de ladite requête (400), ledit système informatique effectue, de manière itérative, jusqu'à obtenir un ensemble de composants auto-descriptible - une étape de récupération (405) de la description du composant recherché et l'ensemble des références de ce composant, lesdites références 25 étant déterminées en fonction du schéma de document enrichi et - une étape de récupération (420 à 440) d'une description de chaque composant référencé. 5 û Procédé selon la revendication 4, caractérisé en ce que ledit système informatique effectue, en outre, à la suite d'au moins une dite étape 30 itérative, une étape d'encodage (445) de la description d'au moins un composant, en langage de balisage étendu, éventuellement binaire.6 ù Procédé selon l'une quelconque des revendications 1 à 5, caractérisé en ce qu'il comporte une étape d'encodage (235, 445) en langage de balisage étendu binaire, au cours de laquelle les noms qualifiés de type référence sont encodés en tant que pointeur vers un autre composant. 7 ù Procédé selon la revendication 6, caractérisé en ce que, au cours de l'étape d'encodage (235, 445), ledit pointeur est encodé sous la forme d'une position dans le flux exprimé en bit. 8 ù Procédé selon la revendication 6, caractérisé en ce que, au cours de l'étape d'encodage (235, 445), ledit pointeur est encodé sous la forme d'une position du composant dans une liste. 9 ù Procédé selon l'une quelconque des revendications 5 à 8, caractérisé en ce que, au cours de l'étape d'encodage (235, 445), on met en oeuvre une information de type de lien d'enrichissement pour compresser le composant référençant à partir du composant référencé. 10 ù Procédé selon l'une quelconque des revendications 5 à 9, caractérisé en ce que, au cours de l'étape d'encodage (235, 445), les noms qualifiés d'au moins un autre type que le type référence sont encodés en séparant un nom local du préfixe d'un espace de nommage. 11 ù Procédé selon l'une quelconque des revendications 1 à 10, caractérisé en ce qu'il comporte, en outre, une étape (100, 200, 400) d'ajout d'un schéma d'extension au système informatique. 12 ù Procédé selon l'une quelconque des revendications 1 à 11, caractérisé en ce que, au cours de l'étape (100, 200, 400) d'enrichissement de schéma de document, on ajoute, au schéma de document, au niveau de la définition d'un élément racine du langage : - ce qu'est un composant, où sont les mécanismes d'inclusion et leur espace de nommage associé, où est l'URI de l'espace de nommage du document et/ou - pour chaque utilisation du type nom qualifié, s'il s'agit d'une référence, son type et sa cible.13 - Dispositif de traitement de documents, caractérisé en ce qu'il comporte : - un moyen (603, 606, 608, 612 à 616) d'enrichissement d'un schéma du document pour séparer des noms qualifiés utilisés pour référencer des composants et des noms qualifiés utilisés pour référencer des sémantiques définies ; - un moyen (603, 606, 608, 612 à 616) d'ajout d'informations au schéma pour, dans le cas de références vers des composants, détecter la position des composants référencés dans le document. 14 û Procédé de décodage, caractérisé en ce qu'il comporte, pour chaque composant d'un flux : - une étape (510) de détermination si les informations du composant contiennent une référence vers un composant non encore traité, - si les informations du composant contiennent une référence vers un 15 composant non encore traité, une étape (515) de détermination s'il s'agit d'une référence interne, - s'il s'agit d'une référence externe, une étape (525) d'utilisation de l'information du lien pour récupérer le flux et le lieu dans le flux contenant les informations de ce composant et 20 - s'il s'agit d'une référence interne, une étape (520) d'utilisation de l'information du lien pour accéder aux informations du composant référencé dans le même flux. û Dispositif de décodage, caractérisé en ce qu'il comporte : - un moyen (603, 606, 608, 612 à 616) de détermination si les 25 informations de chaque composant contiennent une référence vers un composant non encore traité, - un moyen (603, 606, 608, 612 à 616) de détermination adapté, si les informations du composant contiennent une référence vers un composant non encore traité, à déterminer s'il s'agit d'une référence interne, 30 - un moyen (603, 606, 608, 612 à 616) d'utilisation adapté, s'il s'agit d'une référence externe, à utiliser de l'information du lien pour récupérer le flux et le lieu dans le flux contenant les informations de ce composant et, s'il s'agitd'une référence interne, à utiliser de l'information du lien pour accéder aux informations du composant référencé dans le même flux. 16 - Programme d'ordinateur chargeable dans un système informatique, ledit programme contenant des instructions permettant la mise en oeuvre du procédé de traitement selon l'une quelconque des revendications 1 à 12 et/ou du procédé de décodage selon la revendication 14, lorsque ce programme est chargé et exécuté par un système informatique. 17 - Support d'informations (616) lisibles par un ordinateur ou un microprocesseur, amovible ou non, conservant des instructions d'un programme informatique, caractérisé en ce qu'il permet la mise en oeuvre du procédé de traitement selon l'une quelconque des revendications 1 à 12 et/ou du procédé de décodage selon la revendication 14, lorsque ce programme est chargé et exécuté par un système informatique.