FR 2909198 A1 20080530 FR 0655105 A 20061124 10 La présente invention se rapporte à un procédé et un dispositif de filtrage d'éléments d'un document structuré à partir d'une expression, notamment d'une expression de type XPath. Elle trouve une application générale dans le traitement de flux de données en langage de balisage et plus précisément sur des fichiers au format 15 XML. Un document, selon l'invention, comprend une pluralité d'éléments structurant les données du document, ces éléments étant appelés noeuds selon la terminologie XML. Le langage XPath (acronyme de XML Path Language ) est issu 20 d'une spécification du consortium W3C appelée Spécification XPath 1.0 , présente à l'adresse www.w3.org/TR/xpath. Ce langage a pour objectif de définir une syntaxe adaptée à adresser des parties d'un document structuré de type XML. La syntaxe de ce langage utilise une syntaxe similaire à celle utilisée 25 dans les expressions relatives à des chemins de localisation dans un système de fichiers, par exemple l'expression relative à un chemin de localisation /librairie/livre . Le langage XPath définit quatre types de données qui sont chaîne , booléen , nombre et ensemble de noeuds , sept types de 30 noeuds, aussi appelés éléments, et des expressions permettant de manipuler les données, notamment les opérateurs définis égalité , différence , infériorité , supériorité , addition , soustraction , multiplication , 1 2909198 2 division , modulo , ou binaire et et binaire . Quand aux noeuds, ils peuvent représenter différents types d'évènement XML, par exemple le début du document (aussi appelé le noeud racine), un élément XML, un attribut, un texte, un commentaire, une instruction de traitement ( processing-instruction 5 en terminologie anglo-saxonne) et un espace de nommage ( namespace en terminologie anglo-saxonne). Cette syntaxe permet l'expression de requêtes sur des documents structurés en vue, par exemple de leur transformation (par exemple la transformation XSLT selon la recommandation du W3C définie à l'adresse www.w3.org/TR/xslt), de l'accès rapide à des sous-parties (par exemple selon la recommandation du W3C: XPointer : www.w3.org/TR/WD-xptr) ou de la réalisation de traitements sur des parties du document (par exemple selon le langage XQuery 1.0, défini à l'adresse www.w3.org/TR/xquery). Le langage XPath permet de simplifier le développement 15 d'applications aptes à parcourir des données dans des documents structurés de type XML. L'entité apte à réaliser l'évaluation d'une expression XPath est appelée processeur XPath ( XPath Processor en terminologie anglo-saxonne). A partir d'une expression XPath et d'une référence à des données 20 XML mémorisées dans un document ou reçues via une transmission réseau, le processeur XPath évalue l'expression. La syntaxe XPath définit également une grammaire décrivant les règles de construction des différentes expressions et sous-expressions. Ces expressions sont notamment les expressions retournant un booléen (par 25 exemple, les expressions OrExpr, AndExpr, RelativeExpr, EqualityExpr), les expressions retournant un nombre (par exemple AdditiveExpr, MultiplicativeExpr), les expressions retournant n'importe quel type de données (par exemple, les expressions FilterExpr et FunctionCall), et les expressions retournant une liste ordonnée de noeuds (par exemple, les expressions 30 LocationPath correspondant à la spécification d'un chemin à résoudre dans un document XML). 2909198 3 L'invention est particulièrement adaptée aux expressions relatives à un chemin de localisation ( LocationPath selon la syntaxe du langage XPath). Une expression relative à un chemin de localisation peut-être 5 absolue ou relative selon qu'elle commence par / ou non. Dans le cas d'une expression relative à un chemin absolu, la recherche commence depuis le début du document, aussi appelé racine, alors que dans le cas d'une expression relative à un chemin relatif, la recherche est contextuelle, par exemple depuis le noeud courant. 10 Toute expression relative à un chemin de localisation est composée d'un ensemble d'expressions indiquant les étapes de localisation dans ce chemin ( Steps en terminologie anglo-saxonne), et chaque étape de localisation correspondant à un niveau de décomposition pour l'évaluation de l'expression relative à un chemin de localisation. En effet, chaque étape de localisation peut être mise en correspondance avec un niveau de profondeur dans le document XML. Par exemple, l'expression relative au chemin /librairie/livre comprend deux étapes de localisation qui sont d'une part librairie , recherché à la profondeur 1 et d'autre part livre , recherché à la profondeur 2. L'évaluation d'une étape de localisation se fait notamment en fonction de l'expression de l'étape parente de localisation, i.e. l'étape de localisation précédente dans l'expression. Le résultat de l'évaluation d'une étape de localisation fournit le contexte d'évaluation pour l'étape de localisation suivante. Ce contexte est composé de trois éléments : un noeud appelé noeud contexte , une position et une taille. Le noeud contexte est le noeud dans le document qui vérifie l'étape de localisation précédente, la position indique le rang du noeud solution de l'étape de localisation courante parmi ses frères, la taille du contexte indique le nombre de noeuds solution de l'étape de localisation courante. Toute étape de localisation comprend une à trois entités parmi les entités suivantes. 2909198 4 Tout d'abord, l'entité exprimant une filiation, aussi appelée axe, ( AxisSpecifier selon la syntaxe XPath) décrit la relation entre un noeud contexte et les noeuds solution d'une étape de localisation. Cette entité est optionnelle. Par défaut, cette entité prend la valeur enfant ( child selon la 5 syntaxe XPath). Par exemple, les expressions /a/child ::b et /a/attribute ::b signifient que l'on recherche, respectivement, un noeud b fils d'un noeud a , le noeud a se trouvant à la racine du document et un noeud représentant un attribut b fils d'un noeud a , le noeud a étant également à la racine du document. La spécification définit 13 types d'entité 10 exprimant une relation de filiation ( AxisSpecifier ) qui sont : self, child, attribute (ou @), namespace, descendant, descendant-or-self, following, following-sibling qui sont considérés comme des expressions de filiation descendante (forward axes en anglais) et parent, ancestor, ancestor-or-self, preceding et preceding-sibling qui sont considérés comme des expressions de 15 filiation ascendante (backward ou reverse axes en anglais). Ensuite, l'entité exprimant un test d'éligibilité d'un noeud candidat ( Node Test selon la syntaxe XPath) définit soit une contrainte de type soit une contrainte de nom que les noeuds candidats doivent respecter pour être considérés comme solution d'une étape de localisation. Cette entité est 20 obligatoire. La syntaxe définit différents tests sur le type de noeuds, notamment, la contrainte de type noeud ( node() selon la syntaxe XPath), la contrainte de type texte ( text() selon la syntaxe XPath), la contrainte de type commentaire ( comment() selon la syntaxe XPath) et la contrainte 25 de type instruction de traitement ( processing-instruction() selon la syntaxe XPath). Par exemple, l'expression /child::b impose une contrainte de nom alors que l'expression /descendant::comment() permet de rechercher tous les noeuds de type commentaire. 30 Enfin, l'entité exprimant un prédicat ( Predicate selon la syntaxe XPath) permet d'imposer une ou plusieurs conditions supplémentaires pour la recherche de noeuds solution d'une étape de localisation. Cette entité est 2909198 5 optionnelle. Une expression appelée prédicat , indiquée entre crochets, suit les mêmes règles de construction que toute expression XPath. Par exemple, l'expression /a/b[2] permet de sélectionner tous les deuxièmes éléments XML fils de nom b de chaque noeud de type élément XML de nom a , et 5 l'expression /a/b[@id= 3 ] permet de sélectionner les fils de nom b du noeud de type élément XML de nom a possédant un attribut id ayant une valeur égale à 3. L'implémentation actuelle du langage XPath permet d'accéder à des parties d'un document XML après avoir construit une représentation 10 intermédiaire du document XML apte à faciliter la recherche, notamment sous la forme d'un arbre représentant un modèle d'objets du document ( document Object Model ou DOM en terminologie anglo-saxonne défini à l'adresse www.w3.org/DOM). Ainsi la recherche consiste à parcourir cet arbre autant de fois que nécessaire pour l'extraction des noeuds demandés. Une telle approche 15 pose un double problème. Cette solution s'avère coûteuse en espace mémoire notamment dans le cas de documents XML de grande taille. En effet, si un processeur XPath est implanté dans un appareil de type appareil photo, photocopieur ou autre, ayant des ressources limitées, la représentation intermédiaire peut être 20 trop volumineuse pour être mémorisée. De plus, cette solution s'avère coûteuse en temps d'exécution du fait des parcours multiples sur l'arbre DOM lors de la recherche de noeuds solutions de l'expression XPath. De plus, si l'on souhaite extraire à la fois les noeuds XML satisfaisant une (ou plusieurs) contrainte(s) et ceux ne la (ou les) satisfaisant pas, la 25 syntaxe de la spécification XPath 1.0 impose l'évaluation de plusieurs expressions. L'exemple illustré en Figure 1 comprend un exemple d'un document XML (0.1) sur lequel on évalue une ou plusieurs expressions XPath, telles que celles illustrées en (0.2). Ces expressions permettent d'extraire du document 30 XML des éléments livre avec des caractéristiques particulières, représentées par les prédicats XPath, ces prédicats étant des expressions mises entre crochets. 2909198 6 Pour chacune des expressions exprimées en (0.2), si l'on souhaite disposer, d'une part, des éléments livre satisfaisant le ou les prédicats et / ou, d'autre part, des éléments livre ne satisfaisant pas ces prédicats ou ne satisfaisant que partiellement ces prédicats dans le cas de prédicats multiples, 5 on est obligé d'écrire la ou les expressions XPath correspondantes, de les évaluer et de fusionner les résultats. Ainsi, par exemple, si l'expression XPath classique //livre[@prix>20] revient à demander au processeur XPath les noeuds de type livre ayant un attribut prix dont la valeur est supérieure à 20, cette expression ne permet 10 toutefois pas de formuler également les requêtes suivantes : Quels sont les noeuds de type livre ayant un attribut prix dont la valeur n'est pas supérieure à 20 ? , et Quels sont les noeuds de type livre ayant un attribut prix dont la valeur est supérieure à 20 et quels ont ceux avec un attribut prix dont la valeur n'est pas supérieure à 20 ? . 15 Il est connu du document US 6,931,405 intitulé Flexible subscription-based event notification , une méthode de filtrage de documents XML basée sur des mécanismes d'abonnement à des fins de personnalisation du traitement des informations XML. Ainsi, chaque abonné ne reçoit que la sous-partie d'un document 20 XML qui l'intéresse. Pour ce faire, les préférences des abonnés sont traduites en requêtes XPath. Cette méthode réalise donc le filtrage de données XML via l'évaluation d'une pluralité d'expressions sur un même document. Selon le document US 6,941,511, intitulé High-performance extensible document transformation , il est décrit une méthode visant à 25 optimiser des transformations de documents XML en appliquant une transformation optimisée aux noeuds qui satisfont une requête XPath et une transformation classique aux autres noeuds. Toutefois, cette méthode requiert une double évaluation afin d'extraire, dans un premier temps, l'ensemble des noeuds satisfaisant la requête et, dans un deuxième temps, la liste des noeuds 30 ne satisfaisant pas la requête. Ainsi, ce document décrit une méthode de filtrage des documents XML. 2909198 7 Compte tenu de ce qui précède, il serait par conséquent intéressant de pouvoir fournir un moyen de spécifier, en une seule expression, les noeuds à extraire et de les retourner lors d'une seule et même évaluation avec un statut associé, par exemple satisfaisant/non satisfaisant, et en s'affranchissant d'au 5 moins certains des inconvénients mentionnés ci-dessus. La présente invention vise en premier lieu à fournir un procédé de filtrage d'éléments d'un document structuré à partir d'une expression, caractérisé en ce que l'expression comprenant une information d'identification du mode d'évaluation d'une partie au moins de ladite expression, le procédé 10 comprend une étape d'évaluation de ladite expression sur la base des données du document, l'étape d'évaluation comprenant une évaluation de ladite partie de l'expression en fonction de l'information d'identification du mode d'évaluation. Le procédé de filtrage d'éléments d'un document structuré à partir 15 d'une expression, notamment une expression de type XPath, selon l'invention, permet d'effectuer une évaluation de l'expression selon un mode d'évaluation défini par une information d'identification du mode d'évaluation. Ainsi, selon l'information d'identification du mode d'évaluation, l'expression est évaluée différemment. 20 Selon l'invention, une partie de l'expression est évaluée selon le mode d'évaluation identifié. Ainsi, il est permis d'écrire des expressions évoluées, comprenant différents modes d'évaluation sur différentes parties de l'expression et de filtrer les données du document selon l'expression en une seule et même passe, 25 c'est-à-dire sans parcourir une pluralité de fois les données du document. Selon une caractéristique particulière, l'expression comprenant au moins une sous-expression relative à un chemin de localisation, au moins une sous-expression comprend ladite partie de l'expression. Selon cette caractéristique, l'expression est composée d'au moins 30 une sous expression relative à un chemin de localisation et au moins une sous expression comprend la partie de l'expression à évaluer selon un mode d'évaluation particulier. 2909198 8 Selon une autre caractéristique particulière, chaque sous-expression relative à un chemin de localisation comprenant au moins une étape de localisation, au moins une étape de localisation comprend ladite partie de l'expression. 5 Selon un mode de réalisation, chaque sous expression est composée d'au moins une étape de localisation et au moins une étape de localisation comprend la partie de l'expression à évaluer selon un mode d'évaluation particulier. Ainsi, selon ce mode de réalisation, il est possible d'appliquer un 10 mode d'évaluation à une étape de localisation d'un chemin de localisation de l'expression traitée. Selon un autre mode de réalisation, l'étape d'évaluation de ladite expression comprend une étape d'évaluation d'au moins une étape de localisation. 15 Selon un mode de réalisation particulier, l'étape d'évaluation d'au moins une étape de localisation est en outre fonction de la position de ladite au moins une étape de localisation dans la sous-expression relative au chemin de localisation. Selon un autre mode de réalisation particulier, l'étape d'évaluation 20 d'au moins une étape de localisation est en outre fonction de la nature de la sous-expression relative au chemin de localisation. Selon une caractéristique particulière, au moins une étape de localisation comprenant au moins un prédicat, l'étape d'évaluation de ladite au moins une étape de localisation est en outre fonction du résultat de l'évaluation 25 dudit au moins un prédicat associé à ladite au moins une étape de localisation. Selon cette caractéristique, l'évaluation d'une étape de localisation dépend du résultat de l'évaluation d'un prédicat de l'étape de localisation. Selon une autre caractéristique particulière, ledit au moins un prédicat comprend ladite partie de l'expression. 30 Ainsi, selon cette caractéristique, il est possible d'associer un mode d'évaluation à un prédicat de l'expression traitée. 2909198 9 Selon encore une autre caractéristique particulière, ladite information d'identification du mode d'évaluation dudit au moins un prédicat identifiant un mode d'extraction des éléments satisfaisant ledit au moins un prédicat et des éléments ne satisfaisant pas ledit au moins un prédicat, l'étape d'évaluation de 5 l'étape de localisation extrait des éléments satisfaisant ledit au moins un prédicat et des éléments ne satisfaisant pas ledit au moins un prédicat. Ainsi, il est possible d'obtenir en une seule passe sur l'ensemble du document, un ensemble de noeuds satisfaisant l'expression y compris ledit au moins un prédicat prédéterminé et un ensemble de noeuds satisfaisant 10 l'expression à l'exception dudit au moins un prédicat prédéterminé. Selon cette caractéristique, si un prédicat est évalué de sorte à identifier les éléments satisfaisant et ne satisfaisant pas la partie de l'expression, alors l'étape de localisation est évaluée selon ce même mode d'évaluation. 15 Selon une caractéristique particulière, ladite information d'identification du mode d'évaluation identifie un mode d'extraction des éléments ne satisfaisant pas ladite partie de l'expression. Ainsi, l'invention permet d'éviter la réécriture d'une ou plusieurs expressions en vue de l'extraction de tels éléments, processus qui peut s'avérer 20 relativement complexe. Selon une autre caractéristique particulière, ladite information d'identification du mode d'évaluation identifie un mode d'extraction des éléments satisfaisant ladite partie de l'expression et des éléments ne satisfaisant pas ladite partie de l'expression. 25 L'invention permet de filtrer les éléments satisfaisant et ne satisfaisant pas une partie de l'expression sans re-écriture complexe et sans nécessiter plusieurs traitements sur le document à filtrer. Selon un mode de réalisation, le procédé comprend une étape d'association aux éléments extraits d'une information indiquant la satisfaction 30 ou la non satisfaction des éléments extraits à ladite partie de l'expression. Selon ce mode de réalisation, il est associé aux éléments filtrés, donc aux éléments extraits leur mode d'évaluation. L'application destinataire de 2909198 10 ces éléments est ainsi informée du fait qu'un élément reçu satisfait ou non l'expression, ce qui facilite le traitement d'un tel élément. Selon une caractéristique particulière, une mesure de pertinence est en outre associée aux éléments extraits. 5 Ainsi, il est également possible de récupérer du document à filtrer des éléments ne satisfaisant que partiellement l'expression à traiter. Selon cette caractéristique, une mesure de pertinence est associée aux éléments extraits permettant de cette manière, par exemple de classer les noeuds selon leur mesure de pertinence. 10 Selon un mode de réalisation particulier, la mesure de pertinence est fonction du pourcentage de prédicats satisfaits par rapport au nombre total de prédicats dans l'expression. Selon un mode de réalisation particulier, le procédé comprend une étape de détermination des données extraites du document vérifiant l'ensemble 15 des sous-expressions. Corrélativement, l'invention vise également un dispositif de filtrage d'éléments d'un document structuré à partir d'une expression, caractérisé en ce que l'expression comprenant une information d'identification du mode d'évaluation d'une partie au moins de ladite expression, le dispositif comprend 20 des moyens d'évaluation de ladite expression sur la base des données du document, les moyens d'évaluation étant aptes à évaluer ladite partie de l'expression en fonction de l'information d'identification du mode d'évaluation. Ce dispositif présente les mêmes avantages que le procédé de filtrage d'éléments d'un document structuré à partir d'une expression, 25 brièvement décrit ci-dessus et ils ne seront donc pas rappelés ici. Selon d'autres aspects, l'invention concerne aussi des programmes d'ordinateur pour une mise en oeuvre du procédé de l'invention décrit brièvement ci-dessus. D'autres aspects et avantages de la présente invention apparaîtront 30 plus clairement à la lecture de la description qui va suivre, cette description étant donnée uniquement à titre d'exemple non limitatif et faite en référence aux dessins annexés, dans lesquels : 2909198 11 - la figure 1 représente un exemple d'un document XML sur lequel une expression est évaluée; - la figure 2 illustre le contexte applicatif de l'invention ; -la figure 3 représente de manière schématique un appareil dans 5 lequel est mise en oeuvre l'invention ; - la figure 4 illustre un algorithme de compilation d'une expression XPath conforme à l'invention ; - la figure 5 illustre un algorithme d'analyse des expressions de filiation conforme à l'invention ; 10 - la figure 6 représente un algorithme d'évaluation d'une expression XPath selon l'invention ; - la figure 7 illustre un algorithme de vérification d'éventuels prédicats contenus dans l'étape de localisation comprenant les différentes opérations de l'étape E614 de la Figure 6 selon l'invention ; 15 - la figure 8 illustre un algorithme de calcul de statut d'évaluation d'une étape de localisation conformément à l'invention ; - la figure 9 illustre le statut pour chaque mode d'évaluation, en fonction des prédicats et de la position de l'étape de localisation et du type d'expression conformément à l'invention ; 20 L'invention consiste à filtrer des noeuds d'un document, par exemple d'un document électronique écrit dans un langage de balisage, notamment le langage XML, le filtrage étant spécifié au moyen d'une expression, notamment une expression XPath. 25 Le filtrage à la volée permet de limiter la quantité de données XML mémorisées dans une mémoire, notamment dans une mémoire volatile et de fournir à l'application un moyen d'obtention des résultats au fur et à mesure de leur obtention. Pour cela, un processeur XPath interprète des caractères spéciaux 30 insérés dans des expressions XPath. En fonction de la présence ou non de ces caractères spéciaux, le processeur XPath est configuré dans un mode d'évaluation. 2909198 12 Les trois modes d'extraction, aussi appelés filtrages, permis, conformément à l'invention sont les suivants: l'extraction des noeuds satisfaisant l'expression, appelé mode match , l'extraction des noeuds ne satisfaisant pas l'expression, appelé mode non-match , l'extraction des 5 noeuds satisfaisant et des noeuds ne satisfaisant pas l'expression, appelé mode match/non-match . La Figure 2 illustre le contexte applicatif de l'invention dans lequel une application 1 traite des données XML extraites par un processeur XPath 2 au moyen d'un ou plusieurs analyseurs XML 3 à partir d'un flux de données 10 XML 4, un analyseur XML pouvant être un navigateur XML. Selon un mode de réalisation, le processeur XPath 2 comprend trois entités. Tout d'abord, il comprend un compilateur 21 ayant pour rôle d'analyser les expressions et de les traduire en une représentation interne. Le 15 fonctionnement de ce compilateur est décrit ci-après en référence à la Figure 4. Ensuite, le processeur XPath comprend une unité de contrôle d'exécution 22 apte à gérer, d'une part, les interactions entre les différents modules du processeur XPath et, d'autre part, la communication du processeur XPath avec l'application 1. De plus, il prend en charge l'évaluation des noeuds. 20 En outre, le processeur XPath comprend un ou plusieurs navigateurs XPath 23 qui permettent à l'unité de contrôle d'exécution 22 de piloter de façon générique un ou plusieurs analyseurs XML 3. Les navigateurs XPath 23 sont également aptes à représenter les évènements XML reçus des analyseurs XML 3 sous la forme de noeuds XPath. Les navigateurs XPath 23 possèdent une 25 mémoire tampon destinée si-besoin à stocker des noeuds XPath. Les analyseurs XML sont responsables de l'extraction d'informations XML à partir du flux ou d'un document 4 et de leur émission vers le processeur XPath 2. L'évaluation d'une expression XPath est notamment décrite ci-après en référence aux Figures 4 et 5, et comprend une phase d'analyse en vue de la 30 compilation mise en oeuvre par exemple par le compilateur 21 et une phase d'évaluation en vue de l'extraction des noeuds selon le mode d'évaluation choisi mise en oeuvre par exemple par l'unité de contrôle d'exécution 22. 2909198 13 Ainsi, l'invention est mise en oeuvre notamment dans le ou les processeurs XPath. En référence à la figure 3, un dispositif apte à fonctionner en tant que dispositif de filtrage d'éléments d'un document structuré à partir d'une 5 expression, notamment d'une expression XPath, est maintenant décrit dans sa configuration matérielle. Le dispositif de la figure 3 possède l'ensemble des moyens nécessaires à la mise en oeuvre du procédé de filtrage d"éléments d'un document structuré à partir d'une expression, notamment d'une expression 10 XPath selon l'invention. Selon le mode de réalisation choisi, ce dispositif peut être par exemple un micro-ordinateur 300 connecté à différents périphériques, par exemple, une caméra numérique 301 (ou un scanner, ou tout autre moyen d'acquisition ou de stockage d'image) reliée à une carte graphique. 15 Le micro-ordinateur 300 comporte de préférence une interface de communication 302 reliée à un réseau 303 apte à transmettre des informations numériques. Le micro-ordinateur 300 comporte également un moyen de stockage 304, tel que par exemple un disque dur, ainsi qu'un lecteur de disquette 305. La disquette 306 comme le disque 304 peuvent contenir des données 20 XML selon l'invention ainsi que le code de l'invention qui, une fois lu par le micro-ordinateur 300, sera stocké dans le disque dur 304. Selon une variante, le ou les programmes permettant au dispositif 300 de mettre en oeuvre l'invention sont stockés dans une mémoire morte ROM 307. Selon une autre variante, le ou les programmes sont reçus totalement 25 ou partiellement à travers le réseau de communication 303 pour être stockés comme indiqué. Le micro-ordinateur 300 peut également être relié à un microphone 308 par l'intermédiaire d'une carte d'entrée/sortie 314. Le micro-ordinateur 300 comprend également un écran 309 notamment pour permettre à l'utilisateur de 30 visualiser les résultats des évaluations. A l'aide du clavier 310 ou de tout autre moyen approprié, l'utilisateur peut spécifier une expression XPath. 2909198 14 L'unité centrale CPU 311 exécute les instructions relatives à la mise en oeuvre de l'invention, ces instructions étant stockées dans la mémoire morte ROM 307 ou dans les autres éléments de stockage décrits. Lors de la mise sous tension, les programmes et procédés de filtrage 5 d'éléments d'un document structuré à partir d'une expression, notamment d'une expression XPath, stockés dans une des mémoires non-volatiles, par exemple la ROM 307, sont transférés dans la mémoire vive RAM 312 qui contiendra alors le code exécutable de l'invention ainsi que les variables nécessaires à la mise en oeuvre de l'invention. 10 En variante, les procédés peuvent être stockés dans différents emplacements de stockage du dispositif 300. De manière 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 dont l'exécution met en oeuvre le procédé de filtrage d'éléments d'un document 15 structuré à partir d'une expression. II est aussi possible de faire évoluer le mode de réalisation de l'invention, par exemple, en ajoutant des méthodes de filtrage actualisées ou améliorées qui sont transmises parle réseau de communication 303 ou chargées par l'intermédiaire d'une ou de plusieurs disquettes 306. Bien entendu, les disquettes 306 peuvent être remplacées par tout support 20 d'information tel que CD-ROM ou carte mémoire. Un bus de communication 313 permet la communication entre les différents éléments du micro-ordinateur 300 et les éléments reliés à celui-ci. On notera que la représentation du bus 313 n'est pas limitative. En effet, l'unité centrale CPU 311 est, par exemple, susceptible de communiquer des instructions 25 à tout élément du micro-ordinateur 300, directement ou par l'intermédiaire d'un autre élément du micro-ordinateur 300. La Figure 4 illustre un algorithme de compilation d'une expression XPath mis en oeuvre dans le compilateur d'un processeur XPath conforme à l'invention. 30 L'expression XPath à évaluer peut être spécifiée par un utilisateur ou bien mémorisée par exemple dans un fichier et lue par l'application 1. 2909198 15 Selon un autre mode de réalisation, l'expression XPath résulte de l'exécution par l'application d'un programme générant des expressions XPath. L'expression est reçue par le processeur XPath 2 lors de l'étape E41. L'étape E42, qui suit l'étape E41 consiste à débuter l'analyse lexicale 5 de l'expression. Pour ce faire et selon un mode de réalisation, il est analysé un à un les caractères de l'expression XPath pour ensuite regrouper les caractères et former des symboles, aussi connus sous le terme anglo-saxon tokens . Le regroupement des caractères permet de déterminer notamment les symboles réservés définis dans la spécification XPath, par exemple le 10 caractère / , ou des classes de caractères représentant par exemple des chiffres ou des caractères simples. En outre, le regroupement permet de déterminer les caractères spécifiques de signalisation du mode d'évaluation. Selon un mode de réalisation, le caractère spécifique ? définit le 15 mode d'évaluation non-match et le caractère spécifique ?? le mode d'évaluation match/non-match . Toutefois, il est à noter que tout caractère particulier et non réservé pour la syntaxe normative de XPath peut-être utilisé pour effectuer cette signalisation. 20 L'étape E42 est suivie de l'étape E43 au cours de laquelle on teste des symboles générés par l'analyseur lexical lors de l'étape E42, les symboles générés comprenant notamment les caractères spécifiques. Ainsi, conformément à l'invention, lors de l'étape E43, l'analyseur lexicale identifie les symboles prédéfinis permettant de signaler le mode 25 d'évaluation, à savoir les caractères spécifiques ? et ?? . Si au cours de cette étape, l'un des symboles est analysé comme étant non permis ou inconnu, alors l'étape E43 est suivie de l'étape E44 au cours de laquelle le compilateur termine son exécution et informe le processeur XPath 2 de la non-conformité de l'expression. L'expression ne pourra donc pas 30 être évaluée. Selon une variante de réalisation, le symbole non reconnu n'est pas considéré et la compilation se poursuit. 2909198 16 Si lors de l'étape E43, il n'est pas détecté de symbole invalide, non permis ou inconnu, alors l'étape E43 est suivie de l'étape E45 au cours de laquelle l'étape d'analyse grammaticale est exécutée. Cette étape consiste pour le compilateur 21 à parcourir la liste de 5 symboles déterminés lors de l'étape E42 et à identifier les types d'expression définis par la syntaxe XPath 1.0 dans l'expression à compiler, la grammaire modifiée de XPath 1. 0 étant décrite en Annexe A. Par exemple, si le premier symbole trouvé correspond à i , alors l'expression est relative à un chemin de localisation absolu 10 ( AbsoluteLocationPath selon la syntaxe XPath) au sens de la grammaire XPath. Dans ce cas, le compilateur 21 poursuit l'analyse des symboles pour identifier les composantes de ce chemin, c'est-à-dire les étapes de localisation, qui peuvent être composées d'entités exprimant une relation de filiation ( AxisSpecifier selon la syntaxe XPath), un test d'éligibilité ( NodeTest 15 selon la syntaxe XPath) et éventuellement un ou plusieurs prédicats. Lors de cette même étape E45, dès que le compilateur identifie une expression de localisation, il initialise un navigateur XPath 23 qui prendra en charge la recherche de noeuds candidats à la résolution de cette expression. Ce traitement est décrit ci-après en référence aux figures 6 et 7. 20 L'étape E45 est suivie de l'étape E46 au cours de laquelle on vérifie que l'expression, c'est-à-dire la suite de symboles, est valide au sens de la grammaire XPath. Dans la négative, il est mis fin à la compilation de l'expression et un signal : expression invalide est émis lors de l'étape E44. 25 Au contraire, si l'expression est valide, alors l'algorithme se poursuit à l'étape E47 au cours de laquelle le compilateur 21 alloue en mémoire une structure de représentation de chaque composante de l'expression, notamment une structure par type de sous-expression XPath. Cette étape est suivie de l'étape E48 qui consiste, pour chaque 30 étape de localisation extraite par le compilateur 21 à configurer le mode d'évaluation associé. Cette étape est décrite plus en détail ci-après en référence à la Figure 5. 2909198 17 Lors de cette étape, on détermine, pour chaque étape de localisation de chaque expression relative à un chemin de localisation, le mode d'évaluation qui doit être effectué par l'unité de contrôle d'exécution 22 lors de l'évaluation de cette étape de localisation. 5 A l'issue de cette analyse, le compilateur 21 informe l'unité de contrôle d'exécution 22 de la fin de l'analyse, ce dernier va alors démarrer l'évaluation de l'expression (étape E49). L'étape E48 de la Figure 4 détermine pour chaque étape de localisation de chaque expression relative à un chemin de localisation d'une 10 expression XPath, le mode de d'évaluation du processeur XPath 2. Chaque étape de localisation est représentée par une structure qui contient au moins un lien vers le chemin de localisation dont il est issu (positionné lors de l'étape E45), un lien vers la précédente étape de localisation de ce chemin de localisation (positionné lors de l'étape E45), un lien vers la prochaine étape de 15 localisation de ce chemin de localisation (positionné lors de l'étape E45), un lien vers une liste de prédicats à vérifier (positionné lors de l'étape E45), un statut d'évaluation (positionné durant l'évaluation E49), un mode d'évaluation (objet de l'étape E48), et, éventuellement, un coefficient de pertinence. Il est maintenant décrit l'analyse des étapes de localisation en 20 référence à la Figure 5. Cette analyse s'applique donc à l'ensemble des chemins de localisation identifiés à l'étape E45 comme composant l'expression XPath à évaluer. Selon un mode de réalisation, cette analyse est intégrée à l'étape de 25 compilation E45. Dans ce mode de réalisation, l'étape E45 comprend aussi les étapes E46 à E48 au moment de l'analyse grammaticale. Selon un autre mode de réalisation, l'étape E48 apparaît comme l'une des étapes consécutives à l'étape E45. L'analyse des étapes de localisation issues de la compilation débute 30 par l'étape E500 consistant à l'obtention de la structure construite par le compilateur lors de l'étape E47 de la Figure 4 représentant l'expression relative à un chemin de localisation dont les étapes de localisation vont être analysées. 2909198 18 Cette structure comprend une liste des étapes de localisation qui composent l'expression relative à un chemin de localisation. Si l'expression XPath ne comprend pas de chemin de localisation, alors l'étape E500 et par incidence l'étape E48 est terminée et le mode 5 d'évaluation est, par défaut, le mode match . Si un chemin de localisation est présent dans l'expression XPath, alors l'algorithme se poursuit à l'étape E501 au cours de laquelle on vérifie si l'expression relative au chemin de localisation débute par un symbole de signalisation ou non. 10 Si un symbole de signalisation est présent, alors l'étape E501 est suivie de l'étape E502 au cours de laquelle la valeur du symbole est conservée dans la structure représentant le chemin de localisation construite lors de l'étape E46. Dans le cas contraire, c'est-à-dire si le chemin ne débute pas par un 15 symbole de signalisation, alors l'algorithme se poursuit à l'étape E503 au cours de laquelle la valeur par défaut du mode d'évaluation ( match ) est conservée dans la structure de représentation du chemin de localisation. Les étapes E502 et E503 sont suivies de l'étape E504 consistant à récupérer la première étape de localisation dans l'expression relative au chemin 20 de localisation courant. L'algorithme se poursuit à l'étape E505 consistant à vérifier si cette étape de localisation contient au moins un prédicat. Si l'étape de localisation ne comprend aucun prédicat, alors l'étape E506 suit l'étape E505 au cours de laquelle on initialise la valeur du mode 25 d'évaluation de cette expression à la valeur match . L'étape suivante est l'étape E509 au cours de laquelle on teste s'il reste une étape de localisation à traiter. Si lors du test de l'étape E505, il s'avère que l'étape de localisation courante contient au moins un prédicat, alors l'étape suivante (étape E510) 30 consiste à vérifier si au moins l'un des prédicats contient un symbole de signalisation. 2909198 19 Si aucun prédicat n'est marqué, alors l'algorithme se poursuit à l'étape E508 au cours de laquelle la valeur du mode d'évaluation de l'étape de localisation courante est initialisée avec la valeur sauvegardée lors de l'étape E502 ou E503. Puis, l'algorithme se poursuit à l'étape E500 au cours de 5 laquelle on teste s'il reste une expression relative à un chemin de localisation à traiter. La table 1, illustrée ci-dessous, montre le calcul du mode d'évaluation d'une étape de localisation avec des prédicats non marqués, tout en considérant le traitement de la dernière étape de localisation b . Expression Mode d'évaluation de Mode d'évaluation d'une l'expression relative à un étape de localisation chemin de localisation /a[c]/b[d] match match /a[ ?c]/b[d] match match ?/a[c]/b[d] non-match non-match /a[ ??c]/b[ d] match match ??/a[c]/b[d] match /non-match match /non-match Table 1 Lors de l'étape E510, si l'étape de localisation courante contient au moins un prédicat marqué, alors l'algorithme se poursuit à l'étape E511 permettant de déterminer la valeur du mode d'évaluation à affecter. 15 Si au moins l'un des prédicats contient un symbole de signalisation avec la valeur du mode d'évaluation match/non-match , alors cette valeur est retenue comme valeur du mode d'évaluation de l'étape de localisation courante. Dans le cas contraire, c'est le mode non-match qui est activé. L'étape E511 est suivie de l'étape E509 consistant à tester s'il reste 20 au moins une étape de localisation à traiter. La table 2, illustrée ci-dessous, montre le calcul du mode d'évaluation d'une étape de localisation avec des prédicats marqués, tout en considérant le traitement de la dernière étape de localisation b . Expression Mode d'évaluation de la Mode d'évaluation du Step b LocationPath /a[c]/b[ ??d] match match/non-match /abc]/b[ ?d] match non-match 10 2909198 20 ?/a[ c]/b[ ?d] match non-match /a[ c]/b[d](?e] match non-match /a[??c]/b[ ?d] match non-match ??/a[c]/b[ ??d] match /non-match match /non-match Table 2 Cet algorithme est réitéré jusqu'au dernier chemin de localisation de l'expression, c'est-à-dire jusqu'à ce que le test de l'étape 500 soit négatif. Ainsi, l'algorithme de la Figure 5 se termine ainsi que l'étape E48 de 5 la figure 4. L'étape suivante E49 de la Figure 4 correspond à l'évaluation de l'expression et est décrite ci-dessous, en référence à la figure 6. Ainsi, il est maintenant décrit l'évaluation d'une expression XPath conformément à l'invention en référence à la Figure 6. 10 L'évaluation d'une expression XPath est réalisée à partir de la structure générée par le compilateur notamment tel que décrit en référence à la Figure 5. A chaque type d'expression de la syntaxe XPath, est associée une structure de représentation avec des références sur la (ou les) sous- 15 expression(s) qui la compose(nt). En outre, à chaque structure est associée une liste d'instructions à exécuter pour son évaluation. Cette liste comprend notamment un appel à l'exécution de la (ou des) sous expression(s) et des instructions pour gérer les erreurs et/ou les résultats. Par exemple pour une expression de type addition 20 ( AdditiveExpr selon la syntaxe XPath), la liste d'instructions serait : évaluer l'opérande de gauche, évaluer l'opérande de droite puis appliquer l'opérateur + sur ces 2 opérandes. L'algorithme d'évaluation d'une expression XPath débute par l'étape E600, consistant à initialiser l'unité de contrôle d'exécution 22. 25 Cette étape consiste à remettre à zéro toutes les informations liées aux évaluations antérieures ainsi que les résultats, les évènements XML encore en mémoire dans le navigateur XPath 23, les états intermédiaires d'évaluations des expressions relatives à des chemins de localisation ou des étapes de localisation. 2909198 21 L'étape E601, faisant suite à l'étape E600, consiste à initialiser les différentes expressions relatives à un chemin de localisation absolu ( AbsoluteLocationPath selon la syntaxe XPath) qui composent l'expression XPath à évaluer. 5 Pour ce faire, on réserve pour chaque expression relative à un chemin de localisation absolu, une mémoire tampon destinée à recevoir des résultats intermédiaires d'évaluation. Si cette mémoire a déjà été réservée, notamment lors d'une évaluation antérieure de cette même expression, les données contenues dans 10 cette mémoire sont alors remises à zéro lors de cette même étape. L'étape E601 est suivie de l'étape E602 consistant, à partir de chaque expression relative à un chemin de localisation absolu contenue dans l'expression XPath, à préparer une liste d'étapes de localisation à évaluer, l'évaluation et le parcours du document XML se basant notamment sur la 15 décomposition en étapes de localisation. Ainsi, lors de cette étape E602, les étapes de localisation sont classées selon les valeurs des entités exprimant une relation de filiation ( AxisSpecifier selon la syntaxe XPath) de ces étapes. Selon un mode de réalisation, lors de cette étape E602, les étapes 20 de localisation sont classées en fonction de la profondeur à laquelle chercher un noeud candidat. Par exemple, un attribut ( attribute selon la spécification XPath) et un noeud contexte ( self selon la spécification XPath) sont prioritaires par rapport à un enfant ( child selon la spécification XPath) et à un suivant 25 ( following selon la spécification XPath). En effet, les premiers désignent un noeud XML candidat se trouvant à la profondeur courante tandis que les derniers nécessitent respectivement d'explorer d'éventuels éléments ayant une profondeur incrémentée de la valeur 1 par rapport au noeud courant et de considérer les noeuds se trouvant au-delà 30 de la fin de l'élément courant. En outre, les étapes de localisation peuvent être stockées provisoirement dans la mémoire de l'unité de contrôle d'exécution 22. 2909198 22 L'étape E602 est suivie de l'étape E603 consistant à parcourir le document XML 4 au moyen de l'analyseur XML 3 à la recherche du prochain noeud XML. Ensuite, le noeud extrait est retourné au navigateur XPath 23, pour 5 être stocké dans sa liste de noeuds. L'étape suivante (étape E604) vérifie si le noeud reçu peut-être considéré comme un candidat à la résolution de l'une ou plusieurs des étapes de localisation présentes dans la liste construite lors de l'étape E602. Si le noeud correspond à un attribut, un élément XML, un noeud texte 10 ou un noeud commentaire, alors ce noeud est considéré comme un noeud candidat. L'algorithme se poursuit alors à l'étape E608 décrite ci-après. Si tel n'est pas le cas, alors l'algorithme se poursuit à l'étape E605 consistant à tester si le noeud obtenu correspond à une fin d'élément XML. Dans le cas positif, l'étape E605 est suivie de l'étape E606 au cours 15 de laquelle l'algorithme retourne à la liste des étapes de localisation précédente. L'étape E606 est suivie de l'étape E607 consistant à tester si la liste est vide ou non. De la sorte, on teste si l'on est revenu au-delà de la première étape des expressions relatives au chemin considérées. 20 Si la liste est vide, alors la fin de l'évaluation est détectée. Dans le cas contraire, l'algorithme se poursuit à l'étape E602 précédemment décrite. Si, lors de l'étape E605, le noeud récupéré ne correspond pas à une fin d'élément XML, alors le noeud est ignoré et l'algorithme se poursuit à l'étape E603 consistant à parcourir le document XML. 25 De retour à l'étape E604, si le noeud extrait est un noeud candidat, alors l'algorithme se poursuit à l'étape E608 consistant à obtenir une entité exprimant un test d'éligibilité d'un noeud candidat ( NodeTest selon la syntaxe XPath). Ensuite, l'algorithme se poursuit à l'étape E609 consistant à tester ce 30 noeud par rapport au test d'éligibilité de l'étape de localisation courante. 2909198 23 L'application de chaque test d'éligibilité lors de l'étape E609 consiste à vérifier soit le nom, soit le type du noeud candidat par rapport aux valeurs imposées par le test d'éligibilité de l'étape de localisation. Ainsi si le test d'éligibilité est satisfait lors de l'étape E609, 5 l'algorithme se poursuit à l'étape E610 au cours de laquelle l'étape de localisation courante a son statut d'évaluation mis à la valeur potentiellement résolu . Dans le cas contraire, l'algorithme se poursuit à l'étape E611 au cours de laquelle l'étape de localisation courante est marquée comme non 10 résolu . Ensuite, l'étape E611 est suivie de l'étape E612 consistant à tester s'il reste une étape de localisation à traiter. Si tel est le cas, on passe à l'étape de localisation suivante et l'algorithme se poursuit à l'étape E608 précédemment décrite jusqu'à la fin de 15 la liste, c'est-à-dire jusqu'à ce que le test de l'étape E612 soit négatif. De retour à l'étape E610, cette étape est suivie de l'étape E613 consistant à vérifier si l'étape de localisation contient au moins un prédicat. Si tel est le cas, l'étape E613 est suivie de l'étape E614 consistant à vérifier un ou des prédicats contenus dans l'étape de localisation. 20 Cette étape est décrite en référence à la Figure 7. A l'issue de l'étape E614, le statut d'évaluation de l'étape courante peut avoir les valeurs suivantes : Tout d'abord, le statut peut être Résolu avec solution intermédiaire dans le cas d'une étape de localisation intermédiaire pour 25 laquelle un noeud solution a été trouvé, Ensuite, le statut peut être Résolu avec résultat final dans le cas d'une dernière étape de localisation d'une expression relative à un chemin de localisation composant l'expression principale. II s'agit, par exemple, de l'expression /livrestore/livre/titre. En effet, si l'expression principale contient une 30 expression de type chemin de localisation, alors le résultat attendu est une liste de noeuds. Toute expression de type chemin de localisation se trouvant dans des prédicats, notamment de part et d'autre d'un opérateur de comparaison ou 2909198 24 dans des appels de fonction donne comme résultat soit un booléen, soit une liste de noeuds destinés à être convertis en un autre type, notamment celui produit par la fonction. Ainsi, l'invention s'applique aux expressions principales retournant une liste de noeuds. 5 En outre, le statut peut être Résolu avec résultat partiel dans le cas d'une dernière étape de localisation issue d'une expression relative à un chemin de localisation composant une sous expression de l'expression principale. II s'agit, par exemple, de l'expression /livrestore/livre/titre = Learning XML , l'expression principale étant ici une expression d'égalité 10 ( EqualityExpr selon la syntaxe XPath). Selon l'exemple considéré, les noeuds résultats de l'expression sont des résultats intermédiaires sur lesquels l'opérateur d'égalité est appliqué. En effet, le résultat attendu pour l'évaluation de l'expression de l'exemple est un booléen et non pas un ou plusieurs noeuds. En outre, le statut peut être Résolu sans solution , quel que soit le 15 type de l'étape de localisation pour lequel aucun noeud ne satisfait les contraintes. L'étape E614 est suivie de l'étape E612 permettant de passer à l'étape de localisation suivante dans la liste calculée à l'étape E602. S'il existe une étape de localisation suivante, alors l'algorithme se 20 poursuit à partir de l'étape E608 précédemment décrite. Sinon, l'algorithme se poursuit à l'étape E615 consistant à préparer la liste suivante. L'étape E615 est suivie de l'étape E616 au cours de laquelle on teste si la liste suivante est vide ou non. 25 Si la liste est vide, alors l'algorithme se poursuit à l'étape E617. Cela signifie que les dernières étapes de localisation des expressions relatives à des chemins de localisation courantes, préparées lors de l'étape E601, ont été atteintes. Au cours de cette étape, l'algorithme émet des résultats. L'unité de 30 contrôle d'exécution 22 récupère en mémoire du navigateur XPath 23 le ou les noeuds qui ont satisfait la ou les dernières étapes de localisations de chaque expression relative à un chemin de localisation, les transmet à l'application si le 2909198 25 résultat attendu est de type liste de noeuds ou bien leur applique une fonction ou un test selon le type d'expression à évaluer. Lors de cette émission et dans le cas d'un mode d'évaluation match/non-match , le statut du noeud, mémorisé dans la structure 5 représentant un noeud XPath, est également fourni à l'application. L'étape E617 est suivie de l'étape E606 afin de remonter à la liste d'étapes de localisation précédentes, tel que précédemment décrite, afin de rechercher de nouveaux noeuds candidats à la résolution des expressions relatives à des chemins de localisation si cette liste n'est pas vide (test de 10 l'étape E607). Si le test de l'étape E616 indique qu'une liste d'étapes de localisation n'est pas vide, alors l'algorithme se poursuit à l'étape E602 précédemment décrite afin d'évaluer ces étapes de localisation. De retour à l'étape E613, si le test est négatif, c'est-à-dire si l'étape 15 de localisation ne contient pas de prédicat, l'algorithme se poursuit à l'étape E618 consistant à mettre à jour le statut d'évaluation de l'étape de localisation courante. S'il s'agit d'une étape de localisation intermédiaire, son statut d'évaluation prend la valeur : résolu avec solution intermédiaire . 20 S'il s'agit de la dernière étape de localisation d'une expression relative à un chemin de localisation correspondant à l'expression principale, celui-ci est marqué comme Résolu avec résultat final . S'il s'agit d'une étape de localisation issue d'une expression relative à un chemin de localisation correspondant à une sous-expression de 25 l'expression à évaluer, alors son statut d'évaluation prend la valeur : Résolu avec résultat partiel . L'étape E618 est suivie de l'étape E612 précédemment décrite, consistant à tester s'il reste une étape de localisation à traiter. La Figure 7 illustre un algorithme de vérification d'éventuels prédicats 30 contenus dans l'étape de localisation, cet algorithme illustrant les différentes opérations effectuées lors de l'étape E614. 2909198 26 Cet algorithme de vérification de prédicat débute à l'étape 710 par une sauvegarde du contexte d'évaluation de l'unité de contrôle d'exécution 22. Pour cela, les informations suivantes sont mémorisées dans une mémoire de l'unité de contrôle d'exécution 22, la liste des étapes de localisation courantes, 5 l'étape de localisation sur laquelle on vérifie le ou les prédicats, appelé étape de localisation contexte, et le noeud contexte se trouvant en mémoire du navigateur XPath 23. Après avoir mémorisé le contexte d'évaluation, l'étape E710 est suivie de l'étape E711 au cours de laquelle l'évaluation du premier prédicat 10 débute. Pour ce faire, le premier prédicat de la liste est obtenu. Selon un mode de réalisation, un lien sur la liste de prédicats contenus dans l'étape de localisation permet d'obtenir le premier prédicat. Ce premier prédicat devient le prédicat courant. L'étape suivante (étape E712) consiste à évaluer la sous-expression 15 XPath représentant le prédicat courant. L'évaluation du prédicat correspond à l'évaluation d'une expression conformément à l'algorithme de la Figure 6 précédemment décrite. Toutefois, une particularité est le fait que les noeuds résultats d'une expression représentant un prédicat ne sont pas transmis à l'application mais 20 traduits en un résultat booléen vrai ou faux selon le test à effectuer dans le prédicat, par exemple, un test de valeur, un test de position, un test de nom ou un test de simple existence. Ainsi, l'étape E712 produit un résultat booléen. Cette étape est suivie de l'étape E713 consistant à tester la valeur du résultat. 25 Si le résultat a la valeur faux, alors l'étape suivante (étape E714) consiste à calculer le statut d'évaluation de l'étape de localisation. Cette étape est décrite ci-après en référence à la Figure 8. L'étape E714 est suivie de l'étape E715 au cours de laquelle le contexte d'évaluation correspondant à l'étape de localisation contexte est 30 restauré. Ce contexte est rétabli à partir des informations mémorisées de la mémoire de l'unité de contrôle d'exécution 22. 2909198 27 Si, lors du test de l'étape E713, le résultat prend la valeur vrai, alors l'algorithme se poursuit à l'étape E716 au cours de laquelle on obtient à partir de la liste de prédicats de l'étape de localisation courante le prochain prédicat à vérifier. 5 L'étape E716 est suivie de l'étape E717 au cours de laquelle on teste si un nouveau prédicat est trouvé. Si tel est le cas, l'algorithme se poursuit à l'étape E712 précédemment décrite, afin d'évaluer l'expression associée. Ensuite les étapes E713 à 717 sont réitérées. 10 Cette itération a lieu tant que le prédicat courant a la valeur vrai (étape E713) et que le test de l'étape E717 est positif. Si le test de l'étape E717 est négatif, c'est-à-dire s'il n'y a plus de prédicat alors l'algorithme se poursuit à l'étape E714 précédemment décrite consistant à calculer le statut d'évaluation de l'étape de localisation courante, 15 puis à restaurer le contexte d'évaluation lors de l'étape E715. La Figure 8 illustre un algorithme de calcul du statut d'évaluation d'une étape de localisation conformément à l'invention. Le statut d'évaluation d'une étape de localisation est calculé selon les étapes de la Figure 8. 20 Pour ce faire, les données considérées sont, la position de l'étape de localisation dans l'expression relative à un chemin de localisation dont il est issu, la nature de ce chemin de localisation, par exemple expression principale ou sous-expression, le mode d'évaluation de l'étape de localisation, le statut d'évaluation initial de l'étape de localisation et le résultat de l'évaluation du (ou 25 des) prédicat(s) associé(s) à l'étape de localisation. L'algorithme débute à l'étape E800 consistant à obtenir la valeur initiale du statut d'évaluation de l'étape de localisation courante. L'étape E800 est suivie de l'étape E801 au cours de laquelle la valeur obtenue est testée par rapport à la valeur potentiellement résolu . 30 Si la valeur obtenue est différente de la valeur potentiellement résolu , alors l'algorithme se poursuit àl'étape E802 au cours de laquelle le 2909198 28 statut d'évaluation de l'étape de localisation prend la valeur résolu sans solution . Dans le cas contraire, c'est-à-dire si la valeur obtenue est potentiellement résolu , alors le statut d'évaluation dépend à la fois du mode 5 d'évaluation de l'étape de localisation et du résultat d'évaluation de son (ses) prédicat(s). Ainsi, l'algorithme se poursuit à l'étape E803 au cours de laquelle la valeur du statut d'évaluation de l'étape de localisation courante est obtenue, à savoir la valeur match , ou la valeur non-match ou la valeur match/non- 10 match . L'étape E804 suivant l'étape E803 consiste à obtenir le résultat de la vérification du ou des prédicats associés à l'étape de localisation, c'est-à-dire la valeur vrai ou la valeur faux. Ensuite, l'étape suivante (étape E805) permet d'obtenir la position de 15 l'étape de localisation dans l'expression relative au chemin de localisation. L'information obtenue est un booléen indiquant s'il s'agit d'une étape de localisation intermédiaire ou de la dernière étape de localisation. Enfin, l'étape E805 est suivie de l'étape E806 au cours de laquelle on obtient le type de l'expression relative au chemin de localisation et on détermine 20 s'il s'agit d'une expression principale ou d'une sous-expression. Au cours de l'étape suivante (étape E807), ces données sont utilisées comme des données d'entrée dans la table de correspondance illustrée à la Figure 9 afin d'extraire le statut d'évaluation. La Figure 9 illustre le statut pour chaque mode d'évaluation, en 25 fonction des prédicats et de la position de l'étape de localisation et du type d'expression. Selon un mode de réalisation, la mise en oeuvre de l'invention permet également de classer des noeuds d'un document XML selon un degré de pertinence par rapport à une expression XPath donnée. 30 Selon ce mode de réalisation, il n'est plus adjoint aux noeuds détectés ayant le mode match/non-match un marqueur indiquant le caractère match ou non match mais on associe aux noeuds résultat une 2909198 29 mesure de pertinence déterminée en fonction du pourcentage de prédicats satisfaits par rapport au nombre total de prédicats de l'expression. Par exemple, si l'on considère l'expression suivante appliquée sur le document XML illustré en Figure 1 et précédemment présenté 5 ??//livre[@prix Harry Potter and the Half Blood Prince 15 JK Rowling Un second résultat ayant une mesure de pertinence de 100% est l'élément suivant : 20 Les Misérables V Hugo Un troisième résultat ayant une mesure de pertinence de 0% est l'élément suivant : 25 Learning XML E T Ray 2909198 30 Un quatrième résultat ayant une mesure de pertinence de 66% est l'élément suivant : Selected Poems 5 Goethe Lors de l'émission du résultat, le degré de pertinence peut être soit demandé par l'application au processeur XPath lors de la réception du noeud résultat, soit intégré comme premier attribut ou premier élément de chaque 10 noeud XML. Afin de permettre ce genre d'application, chaque expression relative à un chemin de localisation composant une expression principale doit maintenir un mot de n éléments binaires, n étant le nombre de prédicats composant l'expression relative à un chemin de localisation. 15 Au cours de la résolution de chaque étape de localisation, lorsque le mode d'évaluation a la valeur match/non-match , le mot est mis à jour tel que décrit ci-après. Pour une étape de localisation donnée, celle-ci possède un indice de prédicat allant de 0 à n. Si l'on considère que le prédicat ayant le symbole i 20 est en cours de vérification à l'étape E614 de la Figure 6, le i-ème élément binaire du mot de n éléments binaires est alors mis à jour avec la valeur résultant de l'évaluation de ce prédicat i. Toutefois, selon ce mode de réalisation, il est nécessaire de traiter tous les prédicats d'une étape de localisation même si l'un d'eux est évalué à 25 faux. Ceci peut être réalisé lors d'une étape E713' insérée entre les étapes E713 et E714 sur la Figure 7. Ainsi, comme illustré dans la Table 4 ci-dessous de calcul du degré de pertinence, la valeur de pertinence est disponible en même temps que le noeud résultat. 30 Prédicat 1 ... Prédicat n Total Pertinence (%) 0 0 0 0 0 0 0 1 1 100/(2" -1) 2909198 31 ... ... ... ... ... 1 1 0 2n -2 100(2n -2)/(2n -1) 1 1 1 2n -1 100 Table 4 2909198 32 Annexe A [14] Expr ::= OrExpr [21] OrExpr "AndExpr I OrExpr 'or' AndExpr [22] AndExpr EqualityExpr I AndExpr 'and' EqualityExpr [23] EqualityExpr :.= RelationalExpr I EqualityExpr '=' RelationalExpr I EqualityExpr'!=' RelationalExpr [24] RelationalExpr ::= AdditiveExpr I RelationalExpr ' REVENDICATIONS 1. Procédé de filtrage d'éléments d'un document structuré à partir d'une expression, caractérisé en ce que l'expression comprenant une information d'identification du mode d'évaluation d'une partie au moins de ladite expression, le procédé comprend une étape d'évaluation de ladite expression sur la base des données du document, l'étape d'évaluation comprenant une évaluation de ladite partie de l'expression en fonction de l'information d'identification du mode d'évaluation. 2. Procédé de filtrage selon la revendication 1, caractérisé en ce que l'expression comprenant au moins une sous-expression relative à un chemin de localisation, au moins une sous-expression comprend ladite partie de l'expression. 3. Procédé de filtrage selon la revendication 2, caractérisé en ce que chaque sous-expression relative à un chemin de localisation comprenant au moins une étape de localisation, au moins une étape de localisation comprend ladite partie de l'expression. 4. Procédé de filtrage selon la revendication 3, caractérisé en ce que l'étape d'évaluation de ladite expression comprend une étape d'évaluation d'au moins une étape de localisation. 25 5. Procédé de filtrage selon la revendication 4, caractérisé en ce que l'étape d'évaluation d'au moins une étape de localisation est en outre fonction de la position de ladite au moins une étape de localisation dans la sous-expression relative au chemin de localisation. 30 6. Procédé de filtrage selon la revendication 4 ou la revendication 5, caractérisé en ce que l'étape d'évaluation d'au moins une étape de localisation 20 2909198 35 est en outre fonction de la nature de la sous-expression relative au chemin de localisation. 7. Procédé de filtrage selon l'une quelconque des revendications 4 à 5 6, caractérisé en ce qu'au moins une étape de localisation comprenant au moins un prédicat, l'étape d'évaluation de ladite au moins une étape de localisation est en outre fonction du résultat de l'évaluation dudit au moins un prédicat associé à ladite au moins une étape de localisation. 10 8. Procédé de filtrage selon la revendication 7, caractérisé en ce que ledit au moins un prédicat comprend ladite partie de l'expression. 9, Procédé de filtrage selon la revendication 7 ou la revendication 8, caractérisé en ce que ladite information d'identification du mode d'évaluation 15 dudit au moins un prédicat identifiant un mode d'extraction des éléments satisfaisant ledit au moins un prédicat et des éléments ne satisfaisant pas ledit au moins un prédicat, l'étape d'évaluation de l'étape de localisation extrait des éléments satisfaisant ledit au moins un prédicat et des éléments ne satisfaisant pas ledit au moins un prédicat. 10. Procédé de filtrage selon l'une quelconque des revendications 1 à 8, caractérisé en ce que ladite information d'identification du mode d'évaluation identifie un mode d'extraction des éléments ne satisfaisant pas ladite partie de l'expression. 11. Procédé de filtrage selon l'une quelconque des revendications 1 à 8, caractérisé en ce que ladite information d'identification du mode d'évaluation identifie un mode d'extraction des éléments satisfaisant ladite partie de l'expression et des éléments ne satisfaisant pas ladite partie de l'expression. 2909198 36 12. Procédé de filtrage selon la revendication 11, caractérisé en ce qu'il comprend une étape d'association aux éléments extraits d'une information indiquant la satisfaction ou la non satisfaction des éléments extraits à ladite partie de l'expression. 13. Procédé de filtrage selon l'une quelconque des revendications 11 ou 12, caractérisé en ce qu'une mesure de pertinence est en outre associée aux éléments extraits. 10 14. Procédé de filtrage selon la revendication 13, caractérisé en ce que la mesure de pertinence est fonction du pourcentage de prédicats satisfaits par rapport au nombre total de prédicats dans l'expression. 15. Procédé de filtrage selon l'une quelconque des revendications 15 précédentes, caractérisé en ce que le procédé comprend une étape de détermination des données extraites du document vérifiant l'ensemble des sous-expressions. 16. Procédé de filtrage selon l'une quelconque des revendications 20 précédentes, caractérisé en ce que l'expression est une expression de type XPath. 17. Dispositif de filtrage d'éléments d'un document structuré à partir d'une expression, caractérisé en ce que l'expression comprenant une 25 information d'identification du mode d'évaluation d'une partie au moins de ladite expression, le dispositif comprend des moyens d'évaluation de ladite expression sur la base des données du document, les moyens d'évaluation étant aptes à évaluer ladite partie de l'expression en fonction de l'information d'identification du mode d'évaluation. 5 30 2909198 37 18. Dispositif de filtrage selon la revendication 17, caractérisé en ce que ladite information d'identification du mode d'évaluation identifie un mode d'extraction des éléments ne satisfaisant pas ladite partie de l'expression. 5 19. Dispositif de filtrage selon la revendication 17 ou la revendication 18, caractérisé en ce que ladite information d'identification du mode d'évaluation identifie un mode d'extraction des éléments satisfaisant ladite partie de l'expression et des éléments ne satisfaisant pas ladite partie de l'expression. 10 20. Dispositif de filtrage selon la revendication 19, caractérisé en ce qu'il comprend des moyens d'association aux éléments extraits d'une information indiquant la satisfaction ou la non satisfaction des éléments extraits à ladite partie de l'expression. 21. Dispositif de filtrage selon l'une quelconque des revendications 19 ou 20, caractérisé en ce qu'il comprend des moyens d'association d'une mesure de pertinence aux éléments extraits. 20 22. Dispositif de filtrage selon l'une quelconque des revendications 17 à 21, caractérisé en ce que le dispositif comprend des moyens de détermination des données extraites du document vérifiant l'ensemble des sous-expressions. 25 23. Programme d'ordinateur chargeable dans un système informatique, ledit programme contenant des instructions permettant la mise en oeuvre du procédé de filtrage d'un document structuré selon l'une quelconque des revendications 1 à 16, lorsque ce programme est chargé et exécuté par un système informatique. 30 24. Moyen de stockage d'informations, amovible ou non, partiellement ou totalement lisible par un ordinateur ou un microprocesseur 15 2909198 38 comportant des instructions de code d'un programme d'ordinateur pour l'exécution des étapes du procédé de filtrage d'un document structuré selon l'une quelconque des revendications 1 à 16. 5